专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

4×4矩阵键盘检测HD7279A显示汇编程序

作者:浪子   来源:浪子   点击数:  更新时间:2014年06月10日   【字体:
 ORG 0000H
LJMP  KKEYI
ORG   0030H
  DAT1 DATA 28H
  CLK  bit  P3.0
  DAT  bit  P3.1
  CS   bit  P3.2
         
KKEYI:   LCALL KKS1    ; ;键盘信号搜索KEY SCANNING PROG
          JNZ   KLK1       ;  有键盘, 转跳 KLK1
     LCALL DELAY
          LCALL DELAY
          SJMP  KKEYI      ;  无键,转跳 KKEYI 继续测键
K0:       MOV DAT1,A
          LJMP  DISP
          MOV  DAT1,#00H
          LJMP  DISP
KLK1:   LCALL DELAY
        LCALL DELAY
        LCALL KKS1
        JNZ   KLK2       ;  确实有键,转跳至 KLK2
        LCALL DELAY
        LJMP  KKEYI
                          ; --------------------------------------------
KLK2:   MOV   P1,#0FEH        ; THERE IS KEYI
          NOP
          JB    P1.4,NOK1
          MOV   A,#00H
          LJMP  NUM
NOK1:     NOP
          JB    P1.5,NOK2
          MOV   A,#01H
          LJMP  NUM
NOK2:     NOP
          JB    P1.6,NOK3
          MOV   A,#02H
          LJMP  NUM
NOK3:     NOP
          JB    P1.7,NOK4
          MOV   A,#03H
          LJMP  NUM
NOK4:     NOP
          MOV   P1,#0FDH        ; THERE IS KEYI
          NOP
          JB    P1.4,NOK5
          MOV   A,#04H
          LJMP  NUM
NOK5:     NOP
          JB    P1.5,NOK6
          MOV   A,#05H
          LJMP  NUM
NOK6:     NOP
          JB    P1.6,NOK7
          MOV   A,#06H
          LJMP  NUM
NOK7:     NOP
          JB    P1.7,NOK8
          MOV   A,#07H
          LJMP  NUM
NOK8:     NOP
          MOV   P1,#0FBH        ; THERE IS KEYI
          NOP
          JB    P1.4,NOK9
          MOV   A,#08H
          LJMP  NUM
NOK9:     NOP
          JB    P1.5,NOKA
          MOV   A,#09H
          LJMP  NUM
NOKA:     NOP
          JB    P1.6,NOKB
          MOV   A,#0AH
          LJMP  NUM
NOKB:     NOP
          JB    P1.7,NOKC
          MOV   A,#0BH
          LJMP  NUM
NOKC:     NOP
          MOV   P1,#0F7H
          NOP
          JB    P1.4,NOKD
          MOV   A,#0CH
          LJMP  NUM
NOKD:     NOP
          JB    P1.5,NOKE
          MOV   A,#0DH
          LJMP  NUM
NOKE:     NOP
          JB    P1.6,NOKF
          MOV   A,#0EH
          LJMP  NUM
NOKF:     NOP
          JB    P1.7,BACK
          MOV   A,#0FH                                 
NUM:    MOV   DAT1,A
          LJMP  DISP
KKS1:     MOV   P1,#0F0H        ; IS THERE ANY
          MOV   A,P1
          MOV   R4,A
          ORL   A,#0FH
          CPL   A
          RET
BACK:    LJMP  KKEYI
DISP:     MOV  29H,#0C8H
          ACALL SEND
          MOV  29H,DAT1
          ACALL  SEND
          LJMP KKEYI
SEND:     CLR cs
          MOV R3,#08H
          ACALL LONG
SEND_LOOP:MOV C,29H.7
          MOV dat,C
          SETB clk
          ACALL SHORT
          CLR clk
          ACALL SHORT
          MOV A,29H
          RL A
          MOV 29H,A
          DJNZ R3,SEND_LOOP
          CLR clk
          RET
LONG:MOV R5,#02H
LLP:DJNZ R5,LLP
SHORT:MOV R6,#08H
SLP:DJNZ R6,SLP
    RET
DELAY:MOV  R7,#08H
    LP:DJNZ  R7,LP
    RET
        END
关闭窗口

相关文章