⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyboard.asm

📁 通过C语言编程
💻 ASM
字号:

 ; 上拉电阻,  P1.2-P1.5
 ;
 ;                            _ vcc +5
 ;         ___________________|
 ;         |   |   |   |
 ;         _   _   _   _
 ;        | | | | | | | | 
 ;        |_| |_| |_| |_|
 ;         |   |   |   |       ______
 ;      ---|---|---|---|----Y3|      |A___P1.0
 ;      ---|---|---|---|----Y2| 2-4  |
 ;      ---|---|---|---|----Y1| 译码 |B___P1.1
 ;      ---|---|---|---|----Y0|______|
 ;         |   |   |   |
 ;     P1.2 P1.3 P1.4 P1.5

?PR?KEYSCAN SEGMENT CODE
PUBLIC KEYSCAN
;RSEG ?PR? KEYSCAN


  BIN  EQU P1
  KEY  EQU 30H    ;存键值
  LINE EQU 31H
   ;ORG 0000H

;MAIN: LCALL KEYSCAN
;      AJMP MAIN
KEYSCAN:

 L1:      MOV  LINE,#01H
          ORL BIN,#3FH
          ACALL TRANS

          JZ    L2
          MOV   KEY,A
          NOP
          NOP
          LCALL DELAY_10ms
          ACALL  TRANS
          XRL   A,KEY

          JZ    K1


 L2:    MOV  LINE,#05H
        ORL  BIN,#3EH
        ACALL  TRANS
        JZ    L3
        MOV   KEY,A
        NOP
        NOP
        LCALL DELAY_10ms
        ACALL  TRANS
        XRL   A,KEY
        JZ    K1




 L3:    MOV  LINE,#09H
        ORL  BIN,#3DH
        ACALL TRANS
        JZ    L4
        MOV   KEY,A
        NOP
        NOP
        LCALL DELAY_10ms
        ACALL  TRANS
        XRL   A,KEY
        JZ    K1

 L4:    MOV  LINE,#0DH
        ORL  BIN,#3CH
        ACALL TRANS
        JZ    STOPSCAN
        MOV   KEY,A
        NOP
        NOP
        LCALL DELAY_10ms
        ACALL  TRANS
        XRL   A,KEY
        JZ    K1


 STOPSCAN:  MOV LINE,#00H
            AJMP KEYSCAN_STOP



 K1:    ACALL TRANS
        JNZ K1     ;松开?-,否则等待|
        MOV A,KEY
        RR  A
        RR  A

        JNB  ACC.0,K2  ;为0跳
        MOV KEY,#00H
        AJMP  TRANS_1


 K2:    JNB ACC.1,K3
        MOV KEY,#01H
        AJMP  TRANS_1


 K3:    JNB ACC.2,K4
        MOV KEY,#02H
        AJMP  TRANS_1


 K4:    JNB ACC.3,K5
        MOV KEY,#03H
        AJMP  TRANS_1
 K5:    MOV KEY,#00H
        AJMP  KEYSCAN_STOP




TRANS_1: MOV  A,KEY
         ADD  A,LINE
         MOV  KEY,A

KEYSCAN_STOP:
         ORL BIN,#3FH
         RET





;提取键值
TRANS:   MOV  A,BIN
          ORL  A,#0C3H
          CPL  A    ;取反
          RET


;10ms delay
DELAY_10ms:    MOV R1,#0DH
LOOP_IN_10ms:  MOV R2,#0FFH
               DJNZ R2,$
               DJNZ R1,LOOP_IN_10ms
               RET

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -