2×2行列式键盘电路设计并编写键盘扫描子程序实例
扫描二维码
随时随地手机看文章
1)2×2行列式键盘电路如图所示////////
图片1
(2)键盘扫描子程序:
KEY1:ACALLKS1;调用判断有无键按下子程序
JNZLK1;有键按下,转LK1
AJMPKEY1;无键按下,返回
LK1:ACALLT12MS;调延时12ms子程序
ACALLKS1;查有无键按下
JNZLK2;若有,则为键确实按下,转逐列扫描
AJMPKEY1;无键按下,返回
LK2:MOVR4,#00H;首列号R4
MOVR2,#FEH;首列扫描字R2
LK4:MOVA,R2;列扫描字P1口
MOVP1,A;使第一列线为0
MOVA,P1;读入行状态
JBACC.0,LONE;第0行无键按下,转查第一行
MOVA,#00H;第0行有键按下,该行首键号#00HA
AJMPLKP;转求键号
LONE:JBACC.1,NEXT;第一行无键按下,转查下一列
MOVA,#02;第一行有键按下,该行首键号#02A
LKP:ADDA,R4;键号=首行号+列号
PUSHACC;键号进栈保护
LK3:ACALLKS1;等待键释放
JNZLK3;未释放,等待
POPAC;键释放,键号A
RET;键扫描结束
NEXT:INCR4;列号加1,指向下一列
MOVA,R2;列扫描字A
JNBACC.1,KND;判断2列全扫描完?扫描完,转KND
RLA;没扫描完,扫描字左移一位,形成下一列扫描字
MOVR2,A;扫描字R2
AJMPLK4;扫描下一列
AJMPKEY1;全扫描完,返回
MOVA,#FCH;全扫描字11111100BA
MOVP1,A;全扫描字所有行
MOVA,P1;读取列值
CPLA;取正逻辑,高电平表示有键按下
ANLA,#0C0H;屏蔽低6位,取高2位
RET;出口状态(A)!=0,有键按下