pic18f4550 'de kesme hikayesi

Başlatan forumsad, 24 Mayıs 2011, 16:31:13

forumsad

arkadaşlar kesme olayını çat pat anladım kopyala yapıştırla idare ettik ama tam olarak anlamak için bir hikaye yazacağım
hatalı ve eksik yerleri düzeltirseniz sevinirim
saygılarımla

kesme hikayesi;
bir müzede güvenlik görevlisiyim....görevim uzun bir koridorda gidip-gelmek  koridorun sağında-solunda odalar var
bu odalara kesme odaları diyebiliriz bir çok kesme odası var bu odaların kapısı 2 anahtarla açılıyor biz portb.0 kesme odasını ele alalım...

nöbeti teslim aldığımda elime 2 adet anahtar alıyorum

1-Symbol GIE INTCON.7       '  Global Interrupt Enable bit
2-Symbol INT0IE INTCON.4    ' INT0 External Interrupt Enable bit


bu üç anahtarla portb.0 kesme odasına istediğim anda girebilirim...

nöbetimde bir süre sonra telszi mesajı geliyor ve portb.0 kesme odasını kontrol etmem isteniyor
hemen 2 anahtarımı kullanıp odayı açıyorum
GIE=1
INT0IE=1

ama odanın içi karanlık el fenerimi çıkartıp yakıyorum
Symbol INT0IF INTCON.1     ' INT0 External Interrupt Flag bit
INT0IF=1

odayı kontrol ettikten sonra odadan çıkıyorum ve el fenerimi söndürüyorum
INT0IF=0

ve koridorda gezinmeye devam ediyorum tekrar telsiz ihbarı geldiğinde tekrar odaya girebilmek için
2 anahtarımı yanımda tutuyorum....




[b]REGISTER 9-1: INTCON: INTERRUPT CONTROL REGISTER[/b]
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x
[b][color=red]GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF(1)[/color][/b]
bit 7 bit 0
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as '0'
-n = Value at POR '1' = Bit is set '0' = Bit is cleared x = Bit is unknown
bit 7 GIE/GIEH: Global Interrupt Enable bit
When IPEN = 0:
1 = Enables all unmasked interrupts
0 = Disables all interrupts 
When IPEN = 1:
1 = Enables all high-priority interrupts 
0 = Disables all interrupts
bit 6 PEIE/GIEL: Peripheral Interrupt Enable bit
When IPEN = 0:
1 = Enables all unmasked peripheral interrupts
0 = Disables all peripheral interrupts 
When IPEN = 1:
1 = Enables all low-priority peripheral interrupts  (if GIE/GIEH = 1) 
0 = Disables all low-priority peripheral interrupts
bit 5 TMR0IE: TMR0 Overflow Interrupt Enable bit 
1 = Enables the TMR0 overflow interrupt 
0 = Disables the TMR0 overflow interrupt
bit 4 INT0IE: INT0 External Interrupt Enable bit 
1 = Enables the INT0 external interrupt 
0 = Disables the INT0 external interrupt
bit 3 RBIE: RB Port Change Interrupt Enable bit 
1 = Enables the RB port change interrupt 
0 = Disables the RB port change interrupt
bit 2 TMR0IF: TMR0 Overflow Interrupt Flag bit 
1 = TMR0 register has overflowed (must be cleared in software) 
0 = TMR0 register did not overflow
bit 1 INT0IF: INT0 External Interrupt Flag bit 
1 = The INT0 external interrupt occurred (must be cleared in software) 
0 = The INT0 external interrupt did not occur
bit 0 RBIF: RB Port Change Interrupt Flag bit
(1)
 
1 = At least one of the RB7:RB4 pins changed state (must be cleared in software) 
0 = None of the RB7:RB4 pins have changed state
Note 1: A mismatch condition will continue to set this bit. Reading PORTB, and then waiting one additional instruction 
cycle, will end the mismatch condition and allow the bit to be cleared.


bu anlatıma göre kesme ayarları;
'*****KESME********************
Symbol GIE INTCON.7       ' Global Interrupt Enable
Symbol INT0IE INTCON.4    ' INT0 External Interrupt Enable
Symbol INT0IF INTCON.1     ' INT0 External Interrupt Flag
On_Interrupt GoTo kesme 
GIE=1
INT0IE=1
'*************************


kesme:
INT0IF=1
PORTE.1=1  'led yan
INT0IF=0
GoTo Loop




bu şekilde uyguladığımda isisde kesme  gerçekleşmiyor

oooben

merhaba uzun zaman geçmiş umarım sana iş çıkartmış olmam ama kolayda ise dosyaların
bu konuda tmr0 kesmesini nasıl tanımladın ve nasıl uyguladın basit bir blok yayınlayabilir misin


tanımlar

on interrupt goto kesme

main:

goto main

kesme:

....
.....
..
çıkış işlemleri

gibi

şimdiden teşekkür ederim