2×2行列式键盘电路设计并编写键盘扫描子程序实例

电子元件 4年前 (2022) aysz01
0

1)2×2行列式键盘电路如图所示

 

图片1

(2)键盘扫描子程序:

KEY1: ACALL KS1 ;调用判断有无键按下子程序

JNZ LK1 ;有键按下,转LK1

AJMP KEY1 ;无键按下,返回

LK1: ACALL T12MS ;调延时12ms子程序

ACALL KS1 ;查有无键按下

JNZ LK2 ;若有,则为键确实按下,转逐列扫描

AJMP KEY1 ;无键按下,返回

LK2: MOV R4,#00H ;首列号 R4

MOV R2,#FEH ;首列扫描字 R2

LK4: MOV A,R2 ;列扫描字 P1口

MOV P1,A ;使第一列线为0

MOV A,P1 ;读入行状态

JB ACC.0,LONE;第0行无键按下,转查第一行

MOV A,#00H ;第0行有键按下,该行首键号#00H A

AJMP LKP ;转求键号

LONE: JB ACC.1,NEXT ;第一行无键按下,转查下一列

MOV A,#02 ;第一行有键按下,该行首键号#02 A

LKP: ADD A,R4 ;键号=首行号+列号

PUSH ACC ;键号进栈保护

LK3: ACALL KS1 ;等待键释放

JNZ LK3 ;未释放,等待

POP AC ;键释放,键号 A

RET ;键扫描结束

NEXT: INC R4 ;列号加1,指向下一列

MOV A,R2 ;列扫描字 A

JNB ACC.1,KND ;判断2列全扫描完?扫描完,转KND

RL A ;没扫描完,扫描字左移一位,形成下一列扫描字

MOV R2,A ;扫描字 R2

AJMP LK4 ;扫描下一列

AJMP KEY1 ;全扫描完,返回

MOV A,#FCH ;全扫描字11111100B A

MOV P1,A ;全扫描字 所有行

MOV A,P1 ;读取列值

CPL A ;取正逻辑,高电平表示有键按下

ANL A,#0C0H ;屏蔽低6位,取高2位

RET ;出口状态(A)!=0,有键按下

版权声明:aysz01 发表于 2022-08-06 9:24:08。
转载请注明:2×2行列式键盘电路设计并编写键盘扫描子程序实例 | 鳌游电工

暂无评论

暂无评论...