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

📄 keyscan.lst

📁 51单片机用汇编实例 包括ad
💻 LST
字号:
A51 MACRO ASSEMBLER  KEYSCAN                                                              03/16/2006 09:08:59 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN KeyScan.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE KeyScan.Asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;==============================================================
                       2     ; 文件名称: KeyScan.Asm
                       3     ; 功能描述: 8255扩展IO, 完成键盘及数码管显示实验.
                       4     ;           按下按键, 数码管显示相应键值.
                       5     ;==============================================================
                       6     
  7F00                 7     A_8255    EQU 7F00H             ;8255端口定义
  7F01                 8     B_8255    EQU 7F01H
  7F02                 9     C_8255    EQU 7F02H
  7F03                10     CON_8255  EQU 7F03H
                      11     
0000                  12             ORG 0000H
0000 020100           13             LJMP MAIN
0100                  14             ORG 0100H
0100 755000           15     MAIN:   MOV 50H,#00H            ;键值缓冲
0103 755100           16             MOV 51H,#00H
0106 755200           17             MOV 52H,#00H
0109 755300           18             MOV 53H,#00H
010C 755400           19             MOV 54H,#00H
010F 755500           20             MOV 55H,#00H
0112 7D55             21             MOV R5, #55H
0114 7481             22             MOV  A, #81H
0116 907F03           23             MOV  DPTR, #CON_8255    ;8255控制端口
0119 F0               24             MOVX @DPTR, A           ;写入控制字
011A 120191           25     BEGIN:  LCALL DIS               ;调用显示子程序
011D 12018A           26             LCALL CLEAR             ;清屏
0120 12017C           27             LCALL CCSCAN            ;调用键扫子程序
0123 7003             28             JNZ INK1                ;判是否有键按下
0125 02011A           29             LJMP BEGIN
0128 120191           30     INK1:   LCALL DIS
012B 1201D1           31             LCALL DL1MS             ;消除按键抖动           
012E 1201D1           32             LCALL DL1MS
0131 12018A           33             LCALL CLEAR
0134 12017C           34             LCALL CCSCAN
0137 7002             35             JNZ INK2
0139 211A             36             AJMP BEGIN
                      37     
013B 7AFE             38     INK2:   MOV R2,#0FEH
013D 7C00             39             MOV R4,#00H             ;从第0列开始扫描
013F 907F00           40     COLUM:  MOV DPTR,#A_8255
0142 EA               41             MOV A,R2
0143 F0               42             MOVX @DPTR,A            ;写入列扫描值
0144 907F02           43             MOV DPTR, #C_8255       
0147 E0               44             MOVX A,@DPTR
0148 20E004           45             JB ACC.0,LINE1          ;判第0行的值
014B 7400             46             MOV A,#00H              ;第0行
014D 2162             47             AJMP KCODE
014F 20E104           48     LINE1:  JB ACC.1,LINE2          
0152 7404             49             MOV A,#04H              ;第1行
0154 2162             50             AJMP KCODE
0156 20E204           51     LINE2:  JB ACC.2,LINE3          
0159 7408             52             MOV A,#08H              ;第2行
015B 2162             53             AJMP KCODE
015D 20E311           54     LINE3:  JB ACC.3,NEXT
0160 740C             55             MOV A, #0CH             ;第3行
0162 2C               56     KCODE:  ADD A,R4                ;得到键值       
0163 31DA             57             ACALL PUTBUF
0165 C0E0             58             PUSH ACC
A51 MACRO ASSEMBLER  KEYSCAN                                                              03/16/2006 09:08:59 PAGE     2

0167 3191             59     KON:    ACALL DIS
0169 318A             60             ACALL CLEAR
016B 317C             61             ACALL CCSCAN
016D 70F8             62             JNZ KON
016F D0E0             63             POP ACC
0171 0C               64     NEXT:   INC R4
0172 EA               65             MOV A,R2
0173 30E404           66             JNB ACC.4,KERR
0176 23               67             RL A
0177 FA               68             MOV R2,A
0178 213F             69             AJMP COLUM
017A 211A             70     KERR:   AJMP BEGIN
017C 907F00           71     CCSCAN: MOV DPTR,#A_8255        ;按键扫描
017F 7400             72             MOV A,#00H
0181 F0               73             MOVX @DPTR,A
0182 907F02           74             MOV DPTR,#C_8255
0185 E0               75             MOVX A,@DPTR
0186 F4               76             CPL A                   ;取反
0187 540F             77             ANL A,#0FH
0189 22               78             RET
                      79     
018A 907F01           80     CLEAR:  MOV DPTR, #B_8255       ;清屏
018D 7400             81             MOV A,#00H
018F F0               82             MOVX @DPTR,A
0190 22               83             RET
                      84     
0191 C0E0             85     DIS:    PUSH ACC                ;显示
0193 C000             86             PUSH 00H
0195 C003             87             PUSH 03H
                      88             ;MOV A,#0FFH
                      89             ;MOV DPTR,#A_8255
                      90             ;MOVX @DPTR,A
0197 7850             91             MOV R0,#50H
0199 7BDF             92             MOV R3,#0DFH
019B 74FF             93     AGAIN:  MOV A,#0FFH
019D 907F00           94             MOV DPTR,#A_8255
01A0 F0               95             MOVX @DPTR,A
01A1 E6               96             MOV A,@R0
01A2 9001C1           97             MOV DPTR,#DSEGS
01A5 93               98             MOVC A,@A+DPTR
01A6 907F01           99             MOV DPTR,#B_8255
01A9 F0              100             MOVX @DPTR,A
01AA EB              101             MOV A,R3
01AB 907F00          102             MOV DPTR,#A_8255
01AE F0              103             MOVX @DPTR,A
01AF 31D1            104             ACALL DL1MS
01B1 08              105             INC R0
01B2 EB              106             MOV A,R3
01B3 30E004          107             JNB ACC.0,OUT
01B6 03              108             RR A
01B7 FB              109             MOV R3,A
01B8 219B            110             AJMP AGAIN
01BA D003            111     OUT:    POP 03H
01BC D000            112             POP 00H
01BE D0E0            113             POP ACC
01C0 22              114             RET
                     115     ;数码管段显示值
01C1 3F065B4F        116     DSEGS:  DB 03FH, 06H,05BH,04FH,066H,06DH,07DH, 07H
01C5 666D7D07                
01C9 7F6F777C        117             DB 07FH,06FH,077H,07CH,039H,05EH,079H,071H
01CD 395E7971                
                     118     
01D1 7F01            119     DL1MS:  MOV R7,#01H
01D3 7E80            120     DL0:    MOV R6,#080H
01D5 DEFE            121     DL1:    DJNZ R6,DL1
01D7 DFFA            122             DJNZ R7,DL0
A51 MACRO ASSEMBLER  KEYSCAN                                                              03/16/2006 09:08:59 PAGE     3

01D9 22              123             RET
                     124     
01DA C000            125     PUTBUF: PUSH 00H                ;保存键值到缓冲RAM中
01DC C0E0            126             PUSH ACC
01DE ED              127             MOV A,R5
01DF F8              128             MOV R0,A
01E0 D0E0            129             POP ACC
01E2 F6              130             MOV @R0,A
01E3 1D              131             DEC R5
01E4 BD4F02          132             CJNE R5,#04FH,GOBACK
01E7 7D55            133             MOV R5,#55H             ;重置缓冲地址
01E9 D000            134     GOBACK: POP 00H
01EB 22              135             RET
                     136     
                     137             END
A51 MACRO ASSEMBLER  KEYSCAN                                                              03/16/2006 09:08:59 PAGE     4

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
AGAIN. . . . . . .  C ADDR   019BH   A   
A_8255 . . . . . .  N NUMB   7F00H   A   
BEGIN. . . . . . .  C ADDR   011AH   A   
B_8255 . . . . . .  N NUMB   7F01H   A   
CCSCAN . . . . . .  C ADDR   017CH   A   
CLEAR. . . . . . .  C ADDR   018AH   A   
COLUM. . . . . . .  C ADDR   013FH   A   
CON_8255 . . . . .  N NUMB   7F03H   A   
C_8255 . . . . . .  N NUMB   7F02H   A   
DIS. . . . . . . .  C ADDR   0191H   A   
DL0. . . . . . . .  C ADDR   01D3H   A   
DL1. . . . . . . .  C ADDR   01D5H   A   
DL1MS. . . . . . .  C ADDR   01D1H   A   
DSEGS. . . . . . .  C ADDR   01C1H   A   
GOBACK . . . . . .  C ADDR   01E9H   A   
INK1 . . . . . . .  C ADDR   0128H   A   
INK2 . . . . . . .  C ADDR   013BH   A   
KCODE. . . . . . .  C ADDR   0162H   A   
KERR . . . . . . .  C ADDR   017AH   A   
KON. . . . . . . .  C ADDR   0167H   A   
LINE1. . . . . . .  C ADDR   014FH   A   
LINE2. . . . . . .  C ADDR   0156H   A   
LINE3. . . . . . .  C ADDR   015DH   A   
MAIN . . . . . . .  C ADDR   0100H   A   
NEXT . . . . . . .  C ADDR   0171H   A   
OUT. . . . . . . .  C ADDR   01BAH   A   
PUTBUF . . . . . .  C ADDR   01DAH   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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