毕业设计正文 雷洋 电气化15-1(修改)(11)
时间:2025-07-08
时间:2025-07-08
在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。
键盘扫描子程序如下: ORG 0000H AJMP MAIN ORG 0030H MAIN:
MOV DPTR,#TAB ;将表头放入DPTR LCALL KEY ;调用键盘扫描程序
MOVC A,@A+DPTR 查表后将键值送入ACC MOV P0,A ;将Acc值送入P0口 CLR P2.1 开显示 LJMP MAIN ;返回反复循环显示
KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续
LCALL DELAY2 无键按调用延时去抖 AJMP KEY ;返回继续检测按键 K1: LCALL DELAY2
LCALL DELAY2 ;有键按下延时去抖动 LCALL KS ;再调用检测按键程序 JNZ K2 ;确认有按下进行下一步 AJMP KEY ;无键按下返回继续检测
K2: MOV R2,#0EFH 将扫描值送入R2暂存 MOV R4,#00H ;将第一列值送入R4暂存 K3: MOV P1,R2 ;将R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H 将第一行值送入ACC AJMP LK ;跳转到键值处理程序
L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H 将第二行的行值送入ACC AJMP LK ;跳转到键值理程序进行键值处理 L2: JB P1.2,L3 ;P1.2等于1跳转到L3 MOV A,#08H ;将第三行的行值送入ACC AJMP LK ;跳转到键值处理程
L3: JB P1.3,NEXT ;P1.3等于1跳转到NEXT处 MOV A,#0cH 将第四行的行值送入ACC
LK: ADD A,R4 ;行值与列值相加后的键值送入A PUSH ACC ;将A中的值送入堆栈暂存
K4: LCALL DELAY2 ;调用延时去抖动程序 LCALL KS ;调用按键检测程序
JNZ K4 ;按键没有松开继续返回检测 POP ACC ;将堆栈的值送入ACC RET
NEXT: INC R4 ;将列值加一
下一篇:电气设备维修管理论文