十年专注单片机方案开发的方案公司英锐恩,分享键判断制作的可逆计数器。英锐恩现提供服务产品涉及主控芯片:8位单片机、16位单片机、32位单片机及各类运算放大器等。
这个程序的主要学习目的:学用键盘的按下与松开
思路:通过对ra1键盘的按下,加一,只有松开后,再按下,才能再加一,规律是0-256变化
通过对ra2键盘的按下,减一,只有松开后,再按下,才能再减一,规律是256-0变化
也可以直接从RA1 RA2 输入脉冲信号,实现加减计数功能,输入脉冲信号计数时要改变延时时间或者不要延时,一保证每个脉冲有效计数,不被漏掉.
;说明:可逆计数器,
;***********************************
LIST P=PIC16F876A
#INCLUDE P16F876A.INC
;************************************
COUNT1 EQU 20H
COUNT2 EQU 21H
COUNT3 EQU 22H
COUNT4 EQU 23H
COUNT5 EQU 24H
;**********************************
ORG 0
START BSF STATUS,RP0
MOVLW B'11111111'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BCF OPTION_REG,7
BCF STATUS,RP0
MOVLW 0
MOVWF COUNT1
MOVWF COUNT2
MOVWF COUNT3
MOVWF PORTC
LOOP0 BTFSS PORTB,1
GOTO LOOP
BTFSS PORTB,2
GOTO LOOP1
GOTO LOOP0
LOOP CALL DELAY1
INCF COUNT1,1
MOVF COUNT1,0
MOVWF PORTC
CALL DELAY
BTFSC PORTB,1
GOTO LOOP0
GOTO $-2
;*********************************
LOOP1 CALL DELAY1
DECF COUNT1,1
MOVF COUNT1,0
MOVWF PORTC
CALL DELAY
BTFSC PORTB,2
GOTO LOOP0
GOTO $-2
DELAY MOVLW D'30'
MOVWF COUNT2
LOP2 MOVLW D'30'
MOVWF COUNT3
DECFSZ COUNT3,1
GOTO $-1
DECFSZ COUNT2,1
GOTO LOP2
RETURN
DELAY1 MOVLW D'5'
MOVWF COUNT4
LOP1 MOVLW D'5'
MOVWF COUNT5
DECFSZ COUNT5,1
GOTO $-1
DECFSZ COUNT4,1
GOTO LOP1
RETURN
;**********************************
END