Device 16F877 XTAL 4 TRISB = %11110000 PORTB = 0 TRISC = 0 PORTC = 0 ON_HARDWARE_INTERRUPT GoTo Kesme INTCON = %10001000 GoTo AnaProgram Kesme: If INTCON.0=1 Then ;PortB değişim kesmesi oluştumu PORTC.4=PORTB.4 PORTC.5=PORTB.5 PORTC.6=PORTB.6 PORTC.7=PORTB.7 INTCON.0=0 EndIf Context Restore AnaProgram: PORTC.3=1 DelayMS 500 PORTC.3=0 DelayMS 500 GoTo AnaProgram |
Yukarıdaki örnekte PortB’nin değişimi kesmesi kullanılmıştır. Kesme oluştuğunda kesmenin hangi nedenden dolayı oluştuğu direk olarak ilgili Led’e aktarılmıştır.
Şöyle ki program ilk çalıştığında kesme oluşmaz. Ama herhangi bir butona basıldığında ilgili uç değer değiştirir. Bu değer değişiminin anlamı şudur. İlgili pin Logic 0’da duruyorken Logic 1’e giderse değer değişimi oldu demektir ve kesme oluşur. Butonu basılı tuttuğunuzda kesme oluşmaz çünkü uç hala Logic 1’de duruyordur. Ama butonu bıraktığınızda Logic 1’de duran uç Logic 0’a gider ve yeniden bir kesme oluşur. Kesme 1’e giderken oluşursa ilgili led yanar 0’a giderken oluşursa ilgili Led söner.