武汉理工大学《计算机控制技术》课程设计说明书
本次选择使用编程扫描的方法,所以在一开始的时候就要通过初始化程序定义8155PA、PB、PC口的工作方式。
本次选用软件方法去抖动,所以要编写去抖动延时程序。
5.2 程序流程图
程序流程图如图5-1所示。
图5-1 键盘扫描流程图
开 始 否 有键闭合? 是 调用去抖动延时子程序 否 有键闭合? 是 计算键值并入栈保护 否 闭合键释放? 是 键号 A,出栈 返 回 14
武汉理工大学《计算机控制技术》课程设计说明书
5.3源程序
ORG 0000H AJMP MAIN ORG 0100H MAIN: NOP ;8155控制字
KD1:MOV DPTR ,#7F00H ;PA,PBMOV A,#03H MOVX @DPTR,A
LCALL KEY1 ;KEY1:ACALL KS1 ; JNZ
LK1 ;
AJMP KEY1
;LK1:ACALL DELA12 ;12ms ACALL KS1 ; JNZ
LK2 ;
AJMP KEY1
;LK2:MOV R2,#0FEH ;R2=11111110B
MOV
R4,#00H
LK4:MOV DPTR,#7F01H MOV A,R2 MOVX @DPTR,A
INC DPTR ; INC DPTR MOVX
A,@DPTR
JB ACC.0,LONE ;
口为输出,PC口为输入调用扫描子程序 有无键按下子程序 有键按下,转去抖延时程序
无键按下,继续扫描
延时程序调用 判断键是否真正按下 有键按下,转逐列扫描
无键按下,继续扫描
存放键值
使PA0=0
指向PC口
读入行状态
第0行无键按下,转LONE
15
;R4 ; ;武汉理工大学《计算机控制技术》课程设计说明书
MOV A,#00H ;有键按下,设置行首键号 AJMP
LKP ;转求键号
;第1行无键按下,转LTWO
LONE:JB ACC.1,LTWO
MOV
A,#06H ;有键按下,设置行首键号
AJMP LKP ;转求键号
LTWO:JB ACC.2,LTHR MOV
A,#0CH ;
AJMP LKP LTHR:JB ACC.3,LFOR
MOV A,#012H
LFOR:JB ACC.4,LFIV MOV A,#18H LFIV:JB ACC.5,NEXT MOV A,#1EH
LKP: ADD ACC,R4 ;
PUSH ACC ;LK3: ACALL KS1 ; JNZ LK3 ; POP
ACC ;
AJMP OVER
;NEXT:INC R4 ; MOV
A,R2
; JNB ACC.7,KND
RL A ; MOV R2,A ;
AJMP LK4 ;LTHR:JB ACC.3,NEXT
MOV A,#18H ;LKP: ADD A,R4
;
;第2行无键按下,转LTHR
有键按下,设置行首键?
;转求键号
;第3行无键按下,查下一列 ;有键按下,设置行首键
求键号,键号=行首键号+列号 保护键号
等待键释放 键未释放,继续等待 键释放,键号送A
键扫描结束
列号加1,指向下一列
判断8列扫描完否
;8列扫描完,继续
扫描字左移一位 送扫描字 转下一列扫描
;第3行无键按下,查下一列
有键按下,设置行首键
求键号,键号=行首键号+列号
16
武汉理工大学《计算机控制技术》课程设计说明书
PUSH ACC ;保护键号
LK3:ACALL KS1 ;等待键释放
JNZ LK3 ;键未释放,继续等待 POP ACC ; 键释放,键号送A AJMP
OVER
;键扫描结束
NEXT:INC R4
;列号加1,指向下一列
MOV A,R2 JNB ACC.7,KND
; 8列扫描完,继续
RL A ;字左移一位 MOV R2,A ;送扫描字 AJMP LK4 ;下一列扫描
KND:AJMP KEY1
OVER:RET ;扫描结束 KS1:MOV DPTR,#7F01H ;向PA口
MOV A,#00H ;扫描字 MOVX
@DPTR,A
;描字送PA口
INC DPTR INC DPTR MOVX
;向PC口
A,@DPTR ;入PC口状态
CPL ;高电平表示有键按下 ANL A,#0FH ;蔽高4位 RET
;晶振为6MHz时的12ms延时子程序 DELL:MOV R7,#12 DEL:MOV R6,#250 NN:DJNZ R6,NN DJNZ R7,DEL RET
17
武汉理工大学《计算机控制技术》课程设计说明书
END
6调试记录及结果分析
程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。
在调试过程中,会发现程序中的错误,例如分号不是在英文输入状态下输入的,为使程序正常运行,要对这些错误进行改正。
编写的程序能够完成按键识别和去抖动的功能。
18