protues实现4x4矩阵键盘汇编语言
时间: 2023-10-20 13:07:41 浏览: 214
Protues仿真实例(8051)-4X4矩阵键盘.rar
下面是一个简单的汇编程序,实现了4x4矩阵键盘的输入:
```
; 4x4矩阵键盘输入程序
ORG 0x0000 ; 程序入口地址
start:
MOV P1, #0xFF ; 将P1口置为输入状态
MOV P2, #0x0F ; 将P2口低4位置为输出状态
MOV A, #0x00 ; 清空A寄存器
MOV R7, #0x00 ; 清空R7寄存器
loop:
MOV P0, #0x0F ; 将P0口低4位置为输出状态
ANL P1, #0x0F ; 将P1口低4位与0x0F进行与运算
MOV R6, P1 ; 将P1口值存入R6寄存器
JB P1.0, col1 ; 判断是否按下第1列
JB P1.1, col2 ; 判断是否按下第2列
JB P1.2, col3 ; 判断是否按下第3列
JB P1.3, col4 ; 判断是否按下第4列
col1:
MOV A, #0x01 ; 将A寄存器置为1
MOV R7, #0x01 ; 将R7寄存器置为1
JMP endloop
col2:
MOV A, #0x02 ; 将A寄存器置为2
MOV R7, #0x01 ; 将R7寄存器置为1
JMP endloop
col3:
MOV A, #0x03 ; 将A寄存器置为3
MOV R7, #0x01 ; 将R7寄存器置为1
JMP endloop
col4:
MOV A, #0x04 ; 将A寄存器置为4
MOV R7, #0x01 ; 将R7寄存器置为1
JMP endloop
endloop:
MOV P0, #0xF0 ; 将P0口高4位置为输出状态
MOV P2, A ; 将A寄存器的值存入P2口
ORL P2, R7 ; 将R7寄存器的值与P2口进行或运算
SJMP loop ; 跳转到loop标签处,重复执行
END ; 程序结束
```
这个程序的原理是轮询键盘矩阵,当检测到有按键按下时,将对应的键码存入A寄存器,并将一个标志位存入R7寄存器。然后将键码和标志位通过P2口输出,供其它部分读取。
阅读全文