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

📄 keyboardscan.lst

📁 51单片机的键盘扫描功能
💻 LST
字号:
A51 MACRO ASSEMBLER  KEYBOARDSCAN                                                         02/13/2006 15:22:41 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN keyboardscan.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE keyboardscan.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************    
                       2     
                       3     ;********************************************************************************    
                       4     ;*  描述:                                                                       *    
                       5     ;*         矩阵键盘数码管显示键值                                               *    
                       6     ;*                                                                              *    
                       7     ;*         矩阵键盘定义:                                                       *
                       8     ;*         P1.0-P1.3为列线,P1.4-P1.7为行线                                      *    
                       9     ;*                                                                              *    
                      10     ;*                                                                              *    
                      11     
                      12     ;********************************************************************************    
                      13     
                      14     
  0093                15                RELAY  EQU  P1.3
  00B3                16                BEEP   EQU  P3.3
                      17     ;------------------------------------------------------
0000                  18                ORG  0000H
0000 8000             19                JMP  MAIN
                      20     ;------------------------------------------------------
0002 758160           21     MAIN:      MOV  SP,#60H
0005 753000           22                MOV  30H,#00H          
0008                  23     LOOP1:
0008 110E             24                CALL  KEY_IN
000A 116A             25                CALL  KEY_PLAER
000C 80FA             26                JMP  LOOP1
                      27     ;-----------------------------------------------------
000E 7590F0           28     KEY_IN:    MOV  P1,#0F0H          ;置列线为0,行线为1
0011 E590             29                MOV  A,P1
0013 54F0             30                ANL  A,#0F0H
0015 F5F0             31                MOV  B,A
0017 75900F           32                MOV  P1,#0FH           ;置列线为1,行线为0
001A E590             33                MOV  A,P1
001C 540F             34                ANL  A,#0FH
001E 45F0             35                ORL  A,B               ;高四位与低四位重新组合
0020 B4FF01           36                CJNE  A,#0FFH,KEY_IN1  ;0FFH为末按键
0023 22               37                RET
0024 F5F0             38     KEY_IN1:   MOV  B,A
0026 900059           39                MOV  DPTR,#KEYTABLE
0029 7BFF             40                MOV  R3,#0FFH           ;
002B 0B               41     KEY_IN2:   INC  R3
002C EB               42                MOV  A,R3
002D 93               43                MOVC  A,@A+DPTR
002E B5F006           44                CJNE  A,B,KEY_IN3
0031 EB               45                MOV  A,R3             ;找到,取顺序码            
0032 F530             46                MOV  30H,A
0034 113B             47                CALL  BEEP_BL
0036 22               48                RET
0037 B4FFF1           49     KEY_IN3:   CJNE  A,#0FFH,KEY_IN2  ;末完,继续查
003A 22               50                RET                    ;0FFH为结束码
                      51     ;----------------------------------------------
                      52     ;蜂鸣器响一声子程序
                      53     ;----------------------------------------------
003B                  54     BEEP_BL:
003B 7E64             55                MOV  R6,#100
003D 1148             56       BL1:     CALL  DEX1
003F B2B3             57                CPL  BEEP
0041 DEFA             58                DJNZ  R6,BL1
A51 MACRO ASSEMBLER  KEYBOARDSCAN                                                         02/13/2006 15:22:41 PAGE     2

0043 7D19             59                MOV  R5,#25
0045 114E             60                CALL  DELAY
0047 22               61                RET
0048 7FB4             62      DEX1:     MOV  R7,#180
004A 00               63      DEX2:     NOP
004B DFFD             64                DJNZ  R7,DEX2
004D 22               65                RET
004E                  66     DELAY:                    ;延时R5×10MS
004E 7E32             67                MOV  R6,#50
0050 7F64             68     DELAY1:    MOV  R7,#100
0052 DFFE             69                DJNZ  R7,$
0054 DEFA             70                DJNZ  R6,DELAY1
0056 DDF6             71                DJNZ  R5,DELAY
0058 22               72                RET
                      73     ;-----------------------------------------------------
0059                  74     KEYTABLE:
0059 EEEDEBE7         75         DB  0EEH,0EDH,0EBH,0E7H,0DEH  ;0,1,2,3,4,  顺序码
005D DE                      
005E DDDBD7BE         76         DB  0DDH,0DBH,0D7H,0BEH,0BDH  ;5,6,7,8,9,
0062 BD                      
0063 BBB77E7D         77         DB  0BBH,0B7H,07EH,07DH,07BH  ;A,B,C,D,E,
0067 7B                      
0068 77FF             78         DB  077H,0FFH                 ;F      0FF为结束码
                      79     ;-----------------------------------------------------
                      80     ;键值显示子程序
                      81     ;使用一个数码管显示
                      82     ;-----------------------------------------------------
006A                  83     KEY_PLAER:
                      84                 
006A E530             85                  MOV  A,30H
006C 900075           86                  MOV  DPTR,#TAB      ;取段码表地址
006F 93               87                  MOVC  A,@A+DPTR     ;查显示数据对应段码
0070 F580             88                  MOV  P0,A           ;段码放入P0口
0072 C2A7             89                  CLR  P2.7           ;第一个数码管亮             
0074 22               90                  RET               
                      91     ;-----------------------------------------------------
0075                  92     TAB:
0075 C0F9A4B0         93      DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
0079 999282F8                
007D 80908883         94      DB  80H,90H,88h,83h,0c6h,0a1h,86h,8eh
0081 C6A1868E                
                      95     ;-----------------------------------------------------
                      96     
                      97         END
A51 MACRO ASSEMBLER  KEYBOARDSCAN                                                         02/13/2006 15:22:41 PAGE     3

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

B. . . . . . . . .  D ADDR   00F0H   A   
BEEP . . . . . . .  B ADDR   00B0H.3 A   
BEEP_BL. . . . . .  C ADDR   003BH   A   
BL1. . . . . . . .  C ADDR   003DH   A   
DELAY. . . . . . .  C ADDR   004EH   A   
DELAY1 . . . . . .  C ADDR   0050H   A   
DEX1 . . . . . . .  C ADDR   0048H   A   
DEX2 . . . . . . .  C ADDR   004AH   A   
KEYTABLE . . . . .  C ADDR   0059H   A   
KEY_IN . . . . . .  C ADDR   000EH   A   
KEY_IN1. . . . . .  C ADDR   0024H   A   
KEY_IN2. . . . . .  C ADDR   002BH   A   
KEY_IN3. . . . . .  C ADDR   0037H   A   
KEY_PLAER. . . . .  C ADDR   006AH   A   
LOOP1. . . . . . .  C ADDR   0008H   A   
MAIN . . . . . . .  C ADDR   0002H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RELAY. . . . . . .  B ADDR   0090H.3 A   
SP . . . . . . . .  D ADDR   0081H   A   
TAB. . . . . . . .  C ADDR   0075H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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