INTI MOV MOV CJNE AJMP CALL D20 ; 延时去抖动 P1, #0FFH ; P1口送全1值 A, P1 ; 读P1口各引脚 A, #0FFH,CLOSE ; 验证是否确实有键闭合 INT0 ; 无键按下
CLOSE:
JNB JNB JNB JNB JNB JNB JNB INT0: RETI KEY 7: …… KEY 71: MOV A, P1 JNB ACC.7, FUNC71 RETI KEY 6: …… …… D20: …… …… END
ORG 1000H INT11:LCALL DELAY ; 延时去抖动 MOV A, P1 ; 读输入线 ANL A, #0FH ; 判断是否有键闭合 CJNE A, #0FH, TEST ; 有键闭合,转判断按键程序 RETI ; 无键闭合,返回 TEST: MOV B, A ; 暂存 LCALL KEYR ; 调用读取子程序 MOV 40H, R3 ; 暂存在40H单元 MOV P2, #0FH ; 输出线写1 MOV P1, B ; 输入线写入数据 MOV A, P2 ; 读输出线 LCALL KEYR ; 调用读取子程序 XCH A, R3 SWAP A ORL 40H, A ; 得按键特征值 RETI
盘)、定时控制方式(定时扫描键盘)、中断方式。
CPU对键盘上闭合键的键号确定方法:根据扫描线和回送线的状
态计算求得,或根据行线和列线的状态查表求得。
2.键输入程序的设计方法
(1)判断键盘上是否有键闭合; (2)消除键的机械抖动; (3)确定闭合键的物理位置; (4)得到闭合键的编号; (5)确保CPU对键的一次闭合只做一次处理
独立连接式键盘连接图如 右图所示。当没有键被按下 时,所有的数据输入线都为 高电平;当有任意一个键被 按下时,与之相连的数据输 入线将变为低电平;通过相 应指令,可以判断是否有键 按下。