CALL LCD_WI MOV R7,#0
KLOOP: CALL XGEL ;读键值 CJNE A,#20H,KLP0;有键按下转KLP0 SJMP KLOOP ;无键按下继续读 KLP0: JB ACC.7,MAIN ;是功能键转MAIN MOV B,A ;暂存键值 MOV A,R7
CJNE A,#15,KLP1 ;未显示满15个字符转 MOV R7,#0 ;清计数
MOV A,#0C0H ;显示满15个字符重定义光标 CALL LCD_WI KLP1: MOV A,B
CALL LCD_WD ;数字键送LCD显示 INC R7
SJMP KLOOP ;继续读键
;键扫消抖程序
XGEL: MOV R6,#6 ;延时参数 CALL DELAY ;延时消抖 CALL GETKEY ;得到键盘扫描码 MOV R4,A ;键消抖处理程序 MOV R1,#48H MOV A,@R1 MOV R2,A INC R1 MOV A,@R1 MOV R3,A MOV A,R4
XRL A,R3
MOV R3,04H ;R4 MOV R4,02H ;R2 JZ XGE10 MOV R2,#88H
MOV R4,#88H ;键盘消抖延迟参数 XGE10: DEC R4 MOV A,R4 XRL A,#82H JZ XGE11 MOV A,R4 XRL A,#0EH JZ XGE11 MOV A,R4 JZ XGE12 MOV R4,#20H DEC R2 SJMP XGE13 XGE12: MOV R4,#0FH XGE11: MOV R2,04H NOP NOP
MOV R4,03H XGE13: MOV R1,#48H MOV A,R2 MOV @R1,A INC R1 MOV A,R3 MOV @R1,A
;R4 ;R3
MOV A,R4 JB ACC.5,XG113 MOV DPTR,#KEYCODE MOVC A,@A+DPTR XG113: RET
;键扫子程序 GETKEY: SETB RS1 MOV R2,#0FEH MOV R3,#08H MOV R0,#00H LGEP1: PUSH DPL PUSH DPH
MOV DPTR,#OUTBIT MOV A,R2 MOVX @DPTR,A RL A MOV R2,A
MOV DPTR,#IN_KEY MOVX A,@DPTR POP DPH POP DPL CPL A ANL A,#0FH JNZ LGEP0 INC R0 DJNZ R3,LGEP1 XGEP33: MOV A,#20H XGEP3: MOV R2,A
MOV A,#0FH PUSH DPL PUSH DPH
MOV DPTR,#OUTBIT MOVX @DPTR,A POP DPH POP DPL MOV A,R2 CLR RS1 SJMP RETURN LGEP0: CPL A
JB ACC.0,XGEP0 MOV A,#00H SJMP LGEPP XGEP0: JB ACC.1,XGEP1 MOV A,#08H SJMP LGEPP XGEP1: JB ACC.2,XGEP2 MOV A,#10H SJMP LGEPP XGEP2: JB ACC.3,XGEP33 MOV A,#18H LGEPP: ADD A,R0 SJMP XGEP3 RETURN: RET
;读LCD忙闲状态 CHKBUSY:PUSH DPH PUSH DPL
相关推荐: