4*4矩阵键盘中断方式完整配置具体程序
时间: 2023-12-03 21:02:20 浏览: 67
在8051单片机中,4*4矩阵键盘的中断方式配置需要以下步骤:
1. 设置中断向量表,将中断向量表的第3号位置为键盘中断服务程序的入口地址。
```
ORG 0H ;程序从0H地址开始
LJMP MAIN ;跳转到主程序入口
ORG 0BH ;键盘中断向量表
LJMP KEYINT ;键盘中断服务程序入口
```
2. 配置键盘的行列引脚为输入和输出。
```
MOV P1,#0FH ;P1口低4位为列输出,高4位为行输入
```
3. 设置键盘中断使能标志INT0和相应的中断优先级。
```
SETB IT0 ;设置INT0中断使能标志
SETB EX0 ;设置外部中断0使能标志
MOV IP,#00000001B ;设置中断优先级
```
4. 编写键盘中断服务程序,当键盘有按键按下时,该程序会被调用。
```
KEYINT:
PUSH PSW ;保存现场
PUSH ACC ;保存累加器
CLR P1.3 ;列1输出低电平
ANL P1,#0FH ;读取行状态
CJNE P1,#0EH,SKIP1 ;判断是否按下第1行的键
MOV A,#1 ;设置键值为1
SJMP KEYINTEND ;结束中断服务程序
SKIP1: CJNE P1,#0DH,SKIP2 ;判断是否按下第2行的键
MOV A,#2 ;设置键值为2
SJMP KEYINTEND ;结束中断服务程序
SKIP2: CJNE P1,#0BH,SKIP3 ;判断是否按下第3行的键
MOV A,#3 ;设置键值为3
SJMP KEYINTEND ;结束中断服务程序
SKIP3: CJNE P1,#07H,SKIP4 ;判断是否按下第4行的键
MOV A,#4 ;设置键值为4
SJMP KEYINTEND ;结束中断服务程序
SKIP4: CLR P1.2 ;列2输出低电平
ANL P1,#0FH ;读取行状态
CJNE P1,#0EH,SKIP5 ;判断是否按下第5行的键
MOV A,#5 ;设置键值为5
SJMP KEYINTEND ;结束中断服务程序
SKIP5: CJNE P1,#0DH,SKIP6 ;判断是否按下第6行的键
MOV A,#6 ;设置键值为6
SJMP KEYINTEND ;结束中断服务程序
SKIP6: CJNE P1,#0BH,SKIP7 ;判断是否按下第7行的键
MOV A,#7 ;设置键值为7
SJMP KEYINTEND ;结束中断服务程序
SKIP7: CJNE P1,#07H,SKIP8 ;判断是否按下第8行的键
MOV A,#8 ;设置键值为8
SJMP KEYINTEND ;结束中断服务程序
SKIP8: CLR P1.1 ;列3输出低电平
ANL P1,#0FH ;读取行状态
CJNE P1,#0EH,SKIP9 ;判断是否按下第9行的键
MOV A,#9 ;设置键值为9
SJMP KEYINTEND ;结束中断服务程序
SKIP9: CJNE P1,#0DH,SKIP10 ;判断是否按下第10行的键
MOV A,#10 ;设置键值为10
SJMP KEYINTEND ;结束中断服务程序
SKIP10: CJNE P1,#0BH,SKIP11 ;判断是否按下第11行的键
MOV A,#11 ;设置键值为11
SJMP KEYINTEND ;结束中断服务程序
SKIP11: CJNE P1,#07H,SKIP12 ;判断是否按下第12行的键
MOV A,#12 ;设置键值为12
SJMP KEYINTEND ;结束中断服务程序
SKIP12: CLR P1.0 ;列4输出低电平
ANL P1,#0FH ;读取行状态
CJNE P1,#0EH,SKIP13 ;判断是否按下第13行的键
MOV A,#13 ;设置键值为13
SJMP KEYINTEND ;结束中断服务程序
SKIP13: CJNE P1,#0DH,SKIP14 ;判断是否按下第14行的键
MOV A,#14 ;设置键值为14
SJMP KEYINTEND ;结束中断服务程序
SKIP14: CJNE P1,#0BH,SKIP15 ;判断是否按下第15行的键
MOV A,#15 ;设置键值为15
SJMP KEYINTEND ;结束中断服务程序
SKIP15: CJNE P1,#07H,SKIP16 ;判断是否按下第16行的键
MOV A,#16 ;设置键值为16
SJMP KEYINTEND ;结束中断服务程序
SKIP16: CLR P1.0 ;列4输出高电平
SETB P1.1 ;列3输出高电平
SETB P1.2 ;列2输出高电平
SETB P1.3 ;列1输出高电平
KEYINTEND:
POP ACC ;恢复累加器
POP PSW ;恢复现场
RET ;返回
```
以上就是4*4矩阵键盘中断方式完整配置具体程序的步骤和代码。