- 10
- 0
- 约1.62万字
- 约 73页
- 2020-05-04 发布于广东
- 举报
AJMP TRYK ;求键号 NEXT: INC R3 ;扫描下一列 MOV A,R2 ;列扫描字送A JNB ACC.3,EXIT ;4列扫描完,重新进行下一轮扫描 RL A ;4列未扫描完,扫描字左移扫描下一列 MOV R2,A ;扫描字送A AJMP LINE0 ;转向扫描下一列 EXIT: AJMP KEYSCAN ;等待下一次按键 TRYK: ADD A, R3 ;按公式计算键码,求得键号 PUSH ACC ;键号入栈保护 LETK: ACALL TEST ;等待按键释放 JNZ LETK ;按键未释放,继续等待 POP ACC ;按键释放,键号出栈 RET TEST: MOV DPTR,#PORTA ;DPTR指针指向8155的A口 MOV A,#00H MOVX @DPTR,A ;全扫描字00H送8155的A口 MOV DPTR,#PORTC ;DPTR指针指向8155的C口 MOVX A,@DPTR ;读入C口行状态 CPL A ;A取反,以高电平表示有键按下 ANL A,#07H ;屏蔽高5位 RET 显示子程序: DISPLAY:JB F0,DISP ;允许时间显示标志F0=1转DISP ACALL SEPA ;否则调用SEPA刷新显示缓冲区 DISP:PUSH PSW ;动态扫描显示子程序 PUSH ACC SETB RS0 MOV DPTR,#PORTA ;关显示 MOV A,#0FFH MOVX @DPTR,A MOV R0,#DISP0 MOV R7,#00H MOV R6,#06H MOV R5,#0FEH DIS1: MOV DPTR,#TAB MOV A,@R0 MOVC A,@A+ DPTR MOV DPTR,# PORTB MOVX @DPTR,A MOV DPTR,# PORTA MOV A,R5 MOVX @DPTR,A HERE: DJNZ R7,HERE INC R0 MOV A,R5 RL A MOV R5,A DJNZ R6,DIS1 CLR RS0 POP ACC POP PSW RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;共阴极 字型码表 合字子程序: COMB: MOV R0,#DISP1 ;R0指向显示缓冲区小时低位 ACALL COMB1 ;合字 CJNE A,#24H,CHK CHK: JNC EXIT1 ;大于24则取消本次设置,退出 MOV @R1,A ;小时送计时小时单元 INC R1 MOV R0,#DISP3 ;R0指向显示缓冲区分低位 ACALL COMB1 CJNE A,#60H,CHK CHK1:JNC EXIT1 ;大于60则取消本次设置,退出 MOV @R1,A INC R1 MOV R0,#DISP5 ;R0指向显示缓冲区秒低位 ACALL COMB1
原创力文档

文档评论(0)