参考检测到某按键按下后,对这个键进行赋值。
M_KEY EQU XXH ;键值存储单元
KEY_SCAN: MOV M_KEY,#0FFH ;键扫描子程序
;初始键值为0FFH
COL1_LINE1:MOV SBUF,#11111110B ;第1列
LCALL DELAY1 ;等待串行输出结束
JB P3.4,COL1_LINE2 ;COL1_LINE1键未按下,转COL1_LINE2键检测
LCALL DELAY20mS ;防抖动,20mS延时
JB P3.4,COL1_LINE2 ;COL1_LINE1键未按下,转COL1_LINE2键检测
LOOP1_1: JNB P3.4,$ ;等待按键释放
LCALL DELAY20mS ;防抖动,20mS延时
JNB P3.4,LOOP1_1
MOV M_KEY,#XXH ;1列1行键赋值,存于M_KEY
LJMP KEY_END
COL1_LINE2:JB P3.5,COL2_LINE1 ;
...... ;1列2行键处理
......
KEY_END: RET ;键扫描子程序返回,键值在M_KEY中
;M_KEY=0FFH为无键按下