键盘扫描显示键值
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORG 0000H
START:MOV 20H,#10 ;初始键值10送20H单元,目的是在没有键按下时显示数码管“P”
SRXP: MOV DPTR,#8000H ;将输入芯片74LS244的片选地址8000H送DPTR,选中芯片74LS244
MOVX A,@DPTR ;读取74LS244各管脚的状态,亦即读取按钮开关的状态
CPL A ;目的是确保在没有按键按下时,P0口输出低电平,与相电路搭配
JZ SCXP ;若A中数为0,则说明无按键按下,则直接跳转到SCXP,进行显示
ACALL KEYIN ;若有按键按下则调用键盘输入子程序
SCXP: MOV DPTR,#TAB ;共阴极段码表首地址送DPTR
MOV A,20H ;键值取到累加器A中
MOVC A,@A+DPTR ;取键值的段码到累加器A
MOV DPTR,#8100H ;将输出芯片74LS273的片选地址8100H送DPTR,选中芯片74LS273
MOVX @DPTR,A ;键值的段码送输出芯片74LS273处显示
CLR P3.0 ;点亮P3.0位的数码管
SJMP START ;继续扫描按键
KENIN:MOV R0,#0 ;命令键值从0开始,若要使得键值从1开始显示,则须设置R0=1
LP1: JB ACC.0,LP2 ;最低位为1,则转到LP2处执行,目的是将已动作的按键SB0的键值送显
RR A ;动态循环扫描键值,
INC R0 确定按下的键的位置,
SJMP LP1 并送显!
LP2: MOV 20H,R0 ;取键值并送入20H单元
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H
END