buton ile sayıcı

Başlatan emekli, 08 Ekim 2011, 17:12:34

emekli

arkadaşlar  orhan altınbaşağın  kitabında bir butona 10defa basınca portb,0 daki led yakan programı yazıp derledim , zaman geciktirme yaptırdım preteusta simile ettiğimde bazen11 de bazen 8 de led yanıyor bu programı
daha kararlı nasıl yazabilirim veya başka komutlarla yazılmış programlar varmıdır

OG

Kodları görüp değerlendirmek için gidip kitap satın almam lazım, nerede satılıyor?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

-Hasan-

Ark söndürme gecikmeniz az gelmiş olabilir. Kodları verin bir bakalım.

emekli

               LIST   P=16F84A.
            INCLUDE      "P16F84A.INC"
SAY1      EQU         H'0C'
SAY2      EQU         H'0D'
SAYAC      EQU         H'0E'
         BSF         STATUS,5
         MOVLW      H'FF'
         MOVWF      TRISA
         CLRF      TRISB
         BCF         STATUS,5
         CLRF      PORTB
BASLA
         MOVLW      D'10'
         MOVWF      SAYAC
TEST
         BTFSS      PORTA,1
         GOTO      TEST
         CALL      GEC
         DECFSZ      SAYAC,F
         GOTO      TEST
         BSF         PORTB,0
GEC
         MOVLW      D'80'
         MOVWF      SAY1
DON1
         MOVLW      D'80'
         MOVWF      SAY2
DON2
         DECFSZ      SAY2,F
         GOTO      DON2
         DECFSZ      SAY1,F
         GOTO      DON1
         RETURN
         END :-[ ::)
arkadaşlar ilginize teşekkür  kodu yazdım

-Hasan-

LIST   P=16F84A.
            INCLUDE      "P16F84A.INC"
SAY1      EQU         H'0C'
SAY2      EQU         H'0D'
SAYAC      EQU         H'0E'
         BSF         STATUS,5
         MOVLW      H'FF'
         MOVWF      TRISA
         CLRF      TRISB
         BCF         STATUS,5
         CLRF      PORTB
BASLA
         MOVLW      D'10'
         MOVWF      SAYAC
TEST
         BTFSS      PORTA,1
         GOTO      TEST
         CALL      GEC
         DECFSZ      SAYAC,F
         GOTO      TEST
         BSF         PORTB,0
         SONSUZ ;Programın işi bittiğinde bu şekilde sonsuz döngü yapın, boş bırakmayınyoksa program saçmalayabilir.
         GOTO SONSUZ
GEC
         MOVLW      0xFF
         MOVWF      SAY1
DON1
         MOVLW      0xFF
         MOVWF      SAY2
DON2
         DECFSZ      SAY2,F
         GOTO      DON2
         DECFSZ      SAY1,F
         GOTO      DON1
         RETURN
         END 


Bu şekilde bir deneyin, gecikmeyi yükselttim.

kudretuzuner

Merhaba
Bu kodlara bakar mısınız?Ben çalıştırdım.
LIST   P=16F84
INCLUDE "P16F84.INC"
SAY1 EQU H'0C'
SAY2 EQU H'0D'
SAYAC EQU H'0E'
BSF STATUS,5
MOVLW H'FF'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,5
CLRF PORTA
CLRF PORTB
BASLA
MOVLW D'10'
MOVWF SAYAC
TEST
BTFSC PORTA,1;BU BÖLÜM PORTA,1' BASILDIĞINI ALGILIYOR
GOTO TEST
CALL GEC
DECFSZ SAYAC,F
GOTO TEST
BSF PORTB,0
GEC
MOVLW H'FF'
MOVWF SAY1
DON1
MOVLW H'FF'
MOVWF SAY2
DON2
DECFSZ SAY2,F
GOTO DON2
DECFSZ SAY1,F
GOTO DON1
RETURN
END
Amatör

emekli

ilginize  teşekkür ederim  arkadaşlar çalıştırdım