buna benzer bi programla bende uğraşıyorum.RA0 butonuna 10 defa basıca PORTB nin 0. bitindeki ledi yakmaya çalışyorum ancak düzgün olarak çalışmıyor.kodlarım şunlar.
Kod:
LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
CLRF PORTB
SAYAC EQU h'20'
BANKSEL TRISB
MOVLW b'11111110'
MOVWF TRISB
MOVLW b'11111111'
MOVWF TRISA
BANKSEL PORTB
MOVLW h'07'
MOVWF CMCON
BASLA
MOVLW d'10'
MOVWF SAYAC
TEST
BTFSC PORTA 0
GOTO TEST
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ SAYAC F
GOTO TEST
BSF PORTB 0
DONGU
GOTO DONGU
END
devreyi oluşturdum.biraz araştırdıktan sonra sorunun butona basıldığında oluşan arktan dolayı meydana geldiğini öğrendim.bunu önlemek için yazılımdaki NOP komutlarının sayısını arttırarak(gerekirse 100 veya daha fazla) döngü gecikmesi yapmak yada donanımsal olarak butonun uçlarına kondansatör bağlamak gerekiyomuşAncak her iki şekildede isatedğim tutarlılık çalıştıramadaım.Butona basılış süresine ve sayısına göre farklı tepkiler veriyo.Yardımcı olursanız sevinirm