汇编语言设计的单片机4*4矩阵键盘
/ *实验目标:1 掌握键盘扫描原理和1 0/十六进制数字 *2 *2 的转换。了解微控制器输入和输出过程以及如何收集数据。
实验:键盘有1 6 个键,从0到F。
按相应的键在数字管上显示相应的数字。
4 *4 */; **************************************************************************************************************************************************************************************************************************************; 01 2 3 --- P2 0; 4 5 6 7 --- P2 1 ; 8 9 AB --- P2 2 ; CDEF --- P2 3 ; |||; P2 4 P2 5 P2 6 P2 7 ; org0000hljmpmainorg003 0hmai n:movdptr,#tab;将表标头放入dptrlcallkey中。
请致电Movca键盘扫描仪, @A+DPTR。
检查表后,将密钥值发送到ACCMOVP0。
将ACC值发送到P0端口CLRP1 .3 显示ljmpmain。
显示重复键:lcallks返回调用子例程。
调用检测密钥子例程JNZK1 按键继续使用lcalldelay2 调用延迟驱动程序AJMPKEY,该程序通过不键按键来调用延迟。
按键K1 :lcalldelay2 返回继续检测是否有lcalldelay2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :按LCALLDELAY2 K1 :LCA K3 :按MOVP2 ,R2 将R2 值发送到P2 端口L6 :JBP2 .0,L1 ; P2 .0等于1 比1 ,#00H;将第一行的线值发送到accajmplk。
钥匙值处理程序键值L1 :JBP2 .1 ,L2 ; P2 .1 等于1 至1 ,L2 Mova,#04 H;将第二行的线值发送到accajmplk。
键值处理L2 :为JBP2 .2 和L3 发送密钥值程序的键值。
P1 .2 等于1 比1 ,l3 mova,#08 H;将第3 行中的行值发送到accajmplk。
跳到钥匙值处理程序L3 :JBP2 .3 P2 .3 跳到下一个Mova。
将第四行中的值发送到ACCDLK:ADDA,R4 行和列值之后的键值添加到ApushAcc。
将A的值发送到堆栈中的临时存储K4 :lcallDelay2 延迟通话脱机程序lcallks。
调用密钥检测程序JNZK4 钥匙未发布,并继续返回检测POPACC。
将堆栈值发送到AccretNext:Inc R4 添加Mova,R2 将R2 的值发送到Ajnbacc.7 扫描完成,并跳到了下一轮扫描RLA的钥匙。
扫描尚未完成,将值转移到右侧的值,然后运行下一个列Movr2 的扫描。
将ACC值发送到R2 临时存储AJMPK3 跳到K3 并在KS:MOVP2 ,#0FH上发送高第四位; P2 端口0。
请阅读P2 端口XRLA,#0FH。
将A的值发送到A或RET的值。
子例程返回延迟2 8 *fa*2 = 4 0msmovr5 ,#08 Hl7 :movr6 ,#0fahl8 :djnzr6 ,l8 djnzr5 ,l7 rettab:db0c0h; 0DB0F9 H; 1 db0a4 h; 2 DB0B0H; 3 DB 09 9 H; 4 DB09 2 H; 5 DB08 2 H; 6 DB0F8 H; 7 DB08 0H; 8 DB09 0H; 9 DB08 8 H; ADB08 3 H; BDB0C6 H; CDB0A1 H; DDB08 6 H; EDB08 EH;