×
单片机 > 单片机程序设计 > 详情

课程设计:矩阵键盘扫描(汇编)

发布时间:2020-05-29 发布时间:
|

//比较简单的汇编矩阵键盘扫描程序
//P2口高四位接列线,第四位接行线

//源程序和proteus仿真我一打包,地址:http://proteus.5d6d.com/thread-9013-1-1.html
          ORG  0000H
          AJMP MAIN

          ORG  0030H
MAIN: MOV  P2,#0F0H ;给列送高电平
          LCALL DELAY  ;延时,使电路稳定下来
          MOV  R4,00H
          MOV  A,P2  ;取P2口的值
          ANL  A,#0F0H  ;屏蔽行线的影响
          CJNE A,#0F0H,L ;如果有键按下,就跳转到L
DESPLAY:
          MOV  A,R7
          MOV  DPTR,#TABLE 
          MOVC A,@A+DPTR
          MOV  P1,A 
          AJMP MAIN 

L:       LCALL DELAY  ;延时去除抖动
          MOV  A,P2  ;重新取值
          JB  ACC.4,L1 ;P2.4这一列有键按下?没有则跳转到L1
          MOV  R3,#00H  ;R3用作记列号
           AJMP Q1

L1:     JB  ACC.5,L2
          MOV  R3,#01H
          AJMP Q1

L2:     JB  ACC.6,L3
          MOV  R3,#02H
          AJMP Q1

L3:     JB  ACC.7,MAIN
           MOV  R3,#03H
           AJMP Q1

Q1:     MOV  P2,#0FH  ;给行送高电平
           LCALL DELAY  ;延时,稳定电路
           MOV  A,P2  ;取值
           ANL  A,#0FH  ;屏蔽高四位
          JB  ACC.0,Q2 ;判断是不是第0行,不是则转移
           MOV  R4,#00H  ;如果是,那把0送给R4(R4存行(转换为键号))
          AJMP JIA

Q2:     JB  ACC.1,Q3
           MOV  R4,#04H
           AJMP JIA

Q3:     JB  ACC.2,Q4
           MOV  R4,#08H
           AJMP JIA

Q4:     JB  ACC.3,MAIN
           MOV  R4,#0CH
           AJMP JIA

JIA:     MOV  A,R3    ;行号加上列号就是改键的值
          ADD  A,R4
           MOV  R7,A  ;调整后放在R7寄存器中
           AJMP MAIN

DELAY: MOV  R6,#20H  ;仿真时测试延时为13ms

 Q6:       MOV  R5,#0BBH
              DJNZ R5,$
              DJNZ R6,Q6
              RET

//下面为0-f的字形表
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ,7FH,6FH,77H
             DB 7CH,39H,5EH,79H,71H;

             END  

关键字:课程设计  矩阵键盘扫描  汇编

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些