微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 最简行列式按钮识别程序

最简行列式按钮识别程序

时间:10-02 整理:3721RD 点击:
 

              ORG 0000H

              LJMP START

              ORG 0050H

       START:  MOV DPTR,#TAB

     MAIN:   MOV P2,#0FH

       M1: MOV A,P2

              CJNE A,#0FH,M2

              SJMP M1

       M2: LCALL DEL   ;延时子程序

              MOV A,P2

              CJNE A,#0FH,M3  

              SJMP M1     ;去抖动

       M3: LCALL KEY

              MOVC A,@A+DPTR  ;查表取出键码

              MOV P0,A

                CLR P1.3        ;显示

              LCALL DEL

              SJMP MAIN

    ;----------计算键值子程序------------

         ;-----首先计算行键值-----------

       KEY:    JB P2.0,K4   ;判断行线P2.0上按键有无按下

              MOV R0,#0    ;P2.0已按下

              SJMP ZERO    ;跳转至计算列键值

       K4: JB P2.1,K8   ;判断行线P2.1上按键有无按下

              MOV R0,#4    ;P2.1已按下

              SJMP ZERO

       K8: JB P2.2,KC   ;判断行线P2.2上按键有无按下

              MOV R0,#8    ;P2.2已按下

              SJMP ZERO

       KC: MOV R0,#0CH

          ;----计算列键值-------------

       ZERO:   MOV P2,#0F0H 

              JB P2.4,ONE  ;判断行线P2.4上按键有无按下

              MOV R1,#0    ;P2.4已按下

              SJMP WAIT    ;跳转至等待按键释放

       ONE:     JB P2.5,TWO  ;判断行线P2.5上按键有无按下

              MOV R1,#1    ;P2.5已按下

              SJMP WAIT

       TWO:    JB P2.6,THR  ;判断行线P2.6上按键有无按下

              MOV R1,#2    ;P2.6已按下

              SJMP WAIT

       THR:      MOV R1,#3    ;P2.7已按下

           ;----等待按键释放-------

       WAIT:   MOV P2,#0F0H   ;等待按键释放

              MOV A,P2

              CJNE A,#0F0H,WAIT

              MOV A,R0

              ADD A,R1     ;计算出键值

              RET

           ;----延时子程序-------

       DEL:      MOV R6,#40

       D1:  MOV R7,#248

              DJNZ R7,$

              DJNZ R6,D1

              RET

 

       TAB:      DB  0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

 

              DB 88H,83H,0C6H,0A1H,86H,8EH

            END            

000000000000000000000000000.0

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top