kesme neden sadece bir kere işliyor????

enexs

Üye
Katılım
4 Kas 2008
Mesajlar
99
Puanları
1
Yaş
39
merhaba arkadaşlar
picin a0 pinindeki butona basana kadar b portundaki ledler binari olarak belli bir gecikme ile yanıyor butona basınca pic uyuyor ledler sönüyor RB<4:7> arası pinlere değişiklik kesmesi uygulanınca pic uyanıyor ve saymaya kaldığı yerden devam ediyor sonra tekrar uyutunca bu sefer uyanamıyor yani benim anladığım ikinci kesme gelmiyor. neden? hex,asm ve isis ektedir
list p=16F877A
#include<P16F877A.INC>
__config H'3F31'
sayac1 EQU 0X020
sayac2 EQU 0X021
ORG 0X000
goto ana_program
ORG 0X004
goto kesme
kesme
bcf INTCON ,RBIE
bcf PORTB,4
bcf PORTB,5
bcf PORTB,6
bcf PORTB,7
retfie
ayar
clrf PORTA
clrf PORTB
bsf STATUS,RP0
movlw b'000001'
movwf TRISA
movlw b'11110000'
movwf TRISB
movlw b'00000111'
movwf ADCON1
bsf INTCON,GIE
bsf INTCON,RBIE
bcf STATUS,RP0
return
gecikme
movlw H'FF'
movwf sayac1
movwf sayac2
dongu1
decfsz sayac1
goto dongu2
goto bitir
dongu2
movlw H'FF'
movwf sayac2
icdongu
decfsz sayac2
goto icdongu
goto dongu1
bitir
return
uyu
movf PORTB,W
clrf PORTB
sleep
nop
movwf PORTB
return
ana_program
call ayar
bcf STATUS,RP0
kontrol
btfss PORTA,0
HAYIR
call uyu
EVET
incf PORTB
call gecikme
goto kontrol
end
 

Ekli dosyalar

  • asm ile kesme.rar
    15 KB · Görüntüleme: 6
Merhaba arkadaşım.
Senin bu programda yaptığın hata kesme alt programındadır. Çünkü ;

BCF INTCON,RBIE yazmışsın

Kesme içinde sen burda otomatikmen portb değişim kesmesini iptal ediyorsun. Dolayısı ile ikinci defa kesme almıyor. Bunun yerine kesmenin meydana geldiğini PIC'e haber veren, ilgili kesmeye ait bayrağı temizlemelisin ki yeni kesmeler oluştuğunda PIC bunu algılayabilsin. Doğrusu aşağıda ki gibi olmalı.

BCF INTCON,RBIF

Ayrıca yazım formatına da dikkat edersen senin için iyi olur program birazcık sıkışık ve karışık görünüyor. Aksi taktirde ileride lazım olduğunda anlaman(kendi programını) zor olur.

Eğer başka bir mantıksal hata yok ise sanırım program çalışır. Kolay gelsin...
 
Son düzenleme:

Forum istatistikleri

Konular
129,059
Mesajlar
922,903
Kullanıcılar
451,331
Son üye
doby17

Yeni konular

Geri
Üst