4 adet kalem pil ile pic çalıştırmak

Başlatan enrique_iglesias, 19 Aralık 2008, 20:53:37

Erhan YILMAZ

Saol dostum sen programı tasarla takıldığın yerde yardımcı olmaya çalışırım

tyildizak

Alıntı yapılan: "enrique_iglesias"
@ DEVICE pic16F628, WDT_OFF

bu kodu eklediğim an derleme yapılırken illegal opcode(16f628) diye derleme hatası alıyorum... sürekli böyle...

View>compile and program options>assembler> "use mpasm" onayını kaldır, hallolur.

Tagli

Alıntı yapılan: "tamirci_erhan"Şimdi program su mantıkta olacak ilk başlangıcta gerekli tanımnlamaları giriş çıkış işlemlemlerini hepsini yapıp portb change kesmesini aç sonra pici uykuya sok sonrada kesme alt programında bütün işleri hallet yani keypadı tara sonrada rf ile gönder sonra tekrar kesmeden geri dön bu sekilde keypadda tusa basıldıkca deger okunup rf ile aktarılabilir
Aslında işlemleri kesme içinde yapmaya gerek yok sanırım. Şu şekilde de yapılabilir:
Başlangıç ayarlarını yap
PORTB değişim kesmesini aç AMA GIE'yi açma (INTCON.7 = 0 olacak)
Sonsuz döngü içinde
     Uykuya gir
     Tarama yap
     Tarama sonuçlarına göre gereken işlemleri yap
     İşin bitince modülü kapat
Sonsuz döngü sonu

GIE kapalıyken gelen kesmeler (ilgili kesme açık olmak şartıyla) PIC'i uyandırır ama kesme bölümüne atlatmadan SLEEP'ten sonra programın devam etmesini sağlar.
Gökçe Tağlıoğlu

enrique_iglesias

sayın tyildizak evet dediğiniz gibiymiş ama pc'ye önce güzel bir format çektim :( sabahlara kadar uğraştım ve en sonunda çözdüm :) neyse teşekkkür ederim....


@ DEVICE pic16F628A, WDT_OFF 

include "modedefs.bas"

CMCON=7
TRISA=%00000000
TRISB=%00110000
PORTA=0


tx      var PORTB.3
led     VAR PORTA.0
modul   var PORTA.1
ses     var PORTA.2

yon     var byte
tus     var byte



on interrupt goto kesme 'hangi kesmenin olduğu etikette değerlendirilecek
OPTION_REG=%10000101    'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10001000        'PORTB kesmesi aktif edildi
ENABLE

basla:
portb=%00000111 'UYKUYA GİRMEDEN ÖNCE ÇIKIŞLARIN HEPSİNİ AÇKİ TUŞLAR BEKLESİN
@ sleep      'UYKU MODUNA GEÇTİ
goto basla


disable
kesme:
PORTB=%00000001    'TUŞLARI KONTROL ET
if PORTB=%00010001 then yon=%00000001 
if PORTB=%00100001 THEN yon=%00000010
pauseus 10
PORTB=%00000010
if PORTB=%00010010 then yon=%00000100
if PORTB=%00100010 THEN yon=%00001000
pauseus 10
PORTB=%00000100
if PORTB=%00010100 THEN yon=%00010000
if PORTB=%00100100 THEN yon=%00100000
PORTB=%00000000

high modul 'MODÜLÜN ENERJİSİNİ AÇ
toggle led 'VERİ GÖNDERMEYE EŞLİK OLARAK LEDİ YAK SÖNDÜR

serout2 tx,396,["M",dec3 yon]

intcon.0=0  'KESME BAYRAĞINI SIFIRLA
low modul   'MODÜLÜ KAPAT
low led     'LEDİ SÖNDÜR

resume
enable
end


Sayın Tagli kodlarım bu şekilde çalıştı anlatmak istediğiniz sanırım bu şekilde aynı fikirdemiyiz?

Tagli

Tam bu değildi ama oldukça benzer. Çalıştığına göre sorun yok zaten :).
Gökçe Tağlıoğlu

enrique_iglesias

evet herşey sanıldığı gibi kolay olmuyormuş :( simulasyonda tam istediğim gibi çalıştı ancak bugün boarda kurdum ama kesme problemi var :(

Problem şu tuşa basılı tuttuğumda port.daki değişimi algılamıyor yani hep 1 sanıyor butondan çektiğimde buton 0 pozisyonuda düşüyor ve bunu değişiklik algılayıp istediğimi yapıyor tuşa tekrar bastığımda değişiklik algılıyor ve işlemi yapıp tekrar uykuya geçiyor yani tuşa basılı tutma işi bunu bozuyor maalesef :(

nerde yanlış yapıyorum?

enrique_iglesias

Arkadaşlar tamamdır bir yanlışlık yok bir kaç satır ekledim butona basılı olduğu sürece kesme bloğu içinde sonsuz döngüye giriyor bu şekide sorunumu çözdüm ilgilenen arkadaşlara teşekkür ederim....

ORC

Alıntı yapılan: tamirci_erhan - 19 Aralık 2008, 22:01:02
Dostum programda ilgili ayarları kurup portchange kesmesini açıp sonra pici uyku moduna sok port change kesmesi ile pic uyanıp kesme alt programını çalıştıracaktır kesme altprogramındada tusları okuyup rfden gönderebilirsin yani tusa bastıgın sürece pic uykudan cıkıp rf ile dataları gönderebilr. Elimdeki bir kitapta bulunan uyku modu uygulamsını ekledim bir incele tabi kodlar asm protchange kesmesi ile pic uyandırma işlemi yapılıyor

Uyku modu uygulaması

Linki yenileyebilirmisiniz acaba

izwirlee_35

Alıntı yapılan: ORC - 31 Mayıs 2010, 21:26:49
Linki yenileyebilirmisiniz acaba

evet katılıyorum linki yenileyebilirmisiniz ?
keep learning . . .