serkan0388
Üye
- Katılım
- 2 Kas 2008
- Mesajlar
- 1
- Puanları
- 1
- Yaş
- 40
timer0 ile iki anahtara bağlı bir ledi nasıl kontol edebilirm?1. anahtar ledi 10 sn. yakıyor.2. anahtar ise aynı ledi 5 sn. yakıyor.Mesela 1. anahtar kapandıktan 3 sn. sonra ikinci anahtar da kapanırsa ledin yine 5 sn. sonra sönmesi lazım.yani toplamda 8 sn. yanmış olacak.yada ikinci anahtar kapandıktan 4 sn sonra birinci anahtar kapanırsa led yine 10 sn sonra sönecek yani toplamda 14 sn. yanmış olacak.timer her 50 ms. de bir kesme bayrağını 1 yapıyor olarak ayarladım diyelim.timer0 aktif olduktan sonra 200 çevrim sonunda(10 sn sonra) ledi söndürüyorum.yalnız ikinci anahtarı nasıl eklicem o konuda yardımcı olursanız sevinirim.(PIC16F877a kullanıyorum)
;10 sn için kesme alt programı
BCF INTCON,2 ; TMR0 kesmesini sonrakilere hazırla
MOVLW D'20' ; TMR0 ilk sayısı = d’20’
MOVWF TMR0 ; TMR0 saymaya başlar
INCF SAY,F ; 10 mS'leri tutan sayacı 1 arttır
MOVLW D'200'
SUBWF SAY,W ; W = SAY - W
BTFSS STATUS,Z ; SAY = 200 oldu mu?
GOTO KESME_SONU ; Hayır, ana programa git ve bekle.
CLRF SAY ;Evet,10 mS'leri tutan sayacı sıfırla
CLRF PORTB
KESME_SONU
RETFIE
;10 sn için kesme alt programı
BCF INTCON,2 ; TMR0 kesmesini sonrakilere hazırla
MOVLW D'20' ; TMR0 ilk sayısı = d’20’
MOVWF TMR0 ; TMR0 saymaya başlar
INCF SAY,F ; 10 mS'leri tutan sayacı 1 arttır
MOVLW D'200'
SUBWF SAY,W ; W = SAY - W
BTFSS STATUS,Z ; SAY = 200 oldu mu?
GOTO KESME_SONU ; Hayır, ana programa git ve bekle.
CLRF SAY ;Evet,10 mS'leri tutan sayacı sıfırla
CLRF PORTB
KESME_SONU
RETFIE