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

📄 键盘显示程序.txt

📁 键盘显示程序.rar键盘是由若干个技键组成的开关矩阵
💻 TXT
字号:
       ORG 0000H
       MOV SP,#60H          ;初始化堆
       MOV B,#10            ;初始化显示为“--”
       MOV B,#10
       LCALL SHOWX


WAITE: MOV P1,#0FH           ; 令全部列线为低电平,行线全为输入线
    MOV A,P1               ;读扫描结果
       CJNE A,#0FH,WAITEA    ;根据扫描结果判断有无键按下,
                         
       SJMP WAITE      ;有,跳到WAITEA 
              ;无,跳回WAITE,开始新一次扫描        



WAITEA: LCALL DELAYTIME   ;按键延时消抖
       MOV P1,#0FH           ;令列线全为低电平,行线全为输入线
       NOV A,P1              ;度读扫描结果
       CJNE A,#0FH,SCAN      ;再根据扫描结果判断有无按键按下,有跳到SCAN
       SJMP WAITE            ;无,跳回WAITE,开始新一次扫描 

SCAN:                        ;扫描键盘,查出键码,得出键值并显现出来 
      MOV R2,#0EFH           ;扫描寄存单元R3初始化为:扫描第一列(低电平有效),
                             ;行线全为输入线    
      MOV R3,#0              ;窜键标志寄存单元初试化为 0          


FIND: MOV P1,R2              ;扫描值送P1口
      MOV A,P1               ;读扫描结果(键码) 
      CJNE A,02H,LOAD        ;是否在这一列按下键?是,跳到LOAD

RLR2: MOV A,R2               ; 否,扫描值送A   
      RL A                   ;左移一位
      MOV R2,A               ;送回扫描寄存单元R2
    CJNE A,#0FEH,FIND      ;是否所有列都已经扫描一遍?否,跳到FIND
      LCALL KEY              ;是,求键值并显示
      SJMP WAITE             ;开始新一次扫描  

LOAD:INC R3                  ;窜键标志寄存单元的值加1
     CJNE R3,#1,WAITE        ;是否窜键?是,这一次扫描作废,开始新一次扫描
    MOV  R4,A                ;否,当前扫描结果(键码)暂存到R4
    SJMP RLR2                ;跳到RLR2,开始下一列扫描

KEY:MOV R2,#0FFH             ;计算键值子程序,初始化键值寄存单元
    MOV DPTR,#KEYTABLE       ;向DPTR加载键码表
CHAZ:INC R2                  ;键值加1
      MOV A,R2               ;键值送给A
      MOVC A,@A+DPTR         ;查出对比键码
      CJNE A,#0FFH,CHA       ;搜索对比键码结束?否,跳到CHA
      RET                    ;是,最终没找出有效键值,直接返回
CHA: CJNE A,R4,CHAZ          ;对比键码于当前扫描结果(键码)一致?
                             ;否,跳到CHAZ再搜索;是,显示出来    
     LCALL SHOW
     RET                     ;返回

SHOW: MOV A,R2               ;显示键值子程序
      MOV B,#10
      DIV AB
SHOWX:












     RET
DELAYTIME:                   ;50ms延时子程序
        MOV   TMOD,#01H
HH:     MOV   THO,#4CH
        MOV   TLO,#00H
        SETB  TRO
        CLR   TFO
        NB    TFO,S
        CLR   TRO
        RET
KEYTABLE:                    ;键码表
DB 07EH,07DH,07BH,077H
DB 0BEH,0BDH,0BBH,0B7H
DB 0DEH,0DDH,0DBH,0D7H
DB 0EEH,0EDH,0EBH,0E7H
DB 0FFH
LEDTABLE:                   ;LED字型码表
DB 0FCH,060H,0DAH,0F2H,066H,0B6H
DB 0BEH,0E0H,0FEH,0E6H,002H
       END
              
     
     

                 
     
           
           
       
       
     
 
   
         
       


































































⌨️ 快捷键说明

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