BTFSS PORTB,VT ; 判断VT管脚高低
GOTO KEY_DOWN ; 为低
BTFSC SYS_FLAG,VT_UP ; 为高,判断标志位VT_UP是否为低
GOTO UP_UP ; 为高,进入按键高电平处理
BSF SYS_FLAG,GR_UP ; 为低,设高干扰标志
BTFSC SYS_FLAG,GR_DOWN ; 是否有低干扰标志
CLRF GR_TIME ; 有则清干扰计数器
BTFSS SYS_FLAG,MS10_F ; 系统是否经过10 MS,
RETURN ; 未经过10 MS 返回
INCF GR_TIME ; 对计数器加一
MOVLW .3 ; 判断是否经过30 MS
SUBWF GR_TIME,W
BTFSS STATUS,C
RETURN
; 确认为上升沿
BCF SYS_FLAG,GR_UP ; 清高干扰标志
CLRF GR_TIME
BSF SYS_FLAG,VT_UP ; 设置VT_UP高标志
; 确认 为高电平,
UP_UP: CLRF GR_TIME ; 清干扰计数器
KEY_DOWN: BTFSS SYS_FLAG,VT_UP ; 判断VT_UP是否为高
GOTO DOWN_DOWN ; 为低,进入低电平处理
BSF SYS_FLAG,GR_DOWN ; 为高,设低干扰标志
BTFSC SYS_FLAG,GR_UP ; 判断是否有高干扰标志
CLRF GR_TIME ; 有则清干扰计数器
BTFSS SYS_FLAG,MS10_F ; 判断系统是否经过 10 MS
RETURN ; 未经过 10 MS
INCF GR_TIME ; 干扰计数器加一
MOVLW .3
SUBWF GR_TIME ; 系统是否经过30 MS
BTFSS STATUS,C
RETURN
BCF SYS_FLAG,GR_DOWN ; 确认为下降沿,清低干扰标志
CLRF GR_TIME ; 清干扰计数器
BCF SYS_FLAG,VT_UP ; 清VT_UP标志
; 确认为低电平
DOWN_DOWN: CLRF GR_TIME ; 清干扰计数器
变量说明:
PORTB-----------PIC16C54C的RB口
VT-----------PT2270的VT引脚
SYS_FLAG-----------系统标志位寄存器
VT_UP-----------VT引脚的实际确认状态
GR_DOWN-----------VT引脚的低电平暂态标志
GR_UP-----------VT引脚的高电平暂态标志
MS10_F-----------系统10MS标志
GR_TIME-----------时间计数器
本文关键字:单片机 解码器 源程序 PIC单片机,单片机-工控设备 - PIC单片机