23 Kasım 2011 Çarşamba

2. Kesmeler (Devam 4)



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.

Hiç yorum yok:

Yorum Gönder