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

📄 lesson9.lst

📁 单片机实验
💻 LST
字号:
A51 MACRO ASSEMBLER  LESSON9                                                              05/03/2008 03:02:58 PAGE     1


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

LOC  OBJ            LINE     SOURCE

  CFA0                 1     PORT    EQU   0CFA0H
  0023                 2     BUF     EQU   23H       ;存放计数值
  0022                 3     SBF     EQU   22H       ;存放秒值
  0021                 4     MBF     EQU   21H       ;存放分值
----                   5     CSEG AT 0000H
0000 024100            6             LJMP START
----                   7     CSEG AT 401BH
401B 02416E            8             LJMP CLOCK
----                   9     CSEG AT 4100H
4100 7840             10     START:  MOV    R0,#40H  ;40H-45H是显示缓冲区,依次存放
4102 7400             11             MOV    A,#00H   ;分高位、分低位,0A,0A(横线)
4104 F6               12             MOV    @R0,A    ;以及秒高位、秒底位
4105 08               13             INC    R0
4106 F6               14             MOV    @R0,A
4107 08               15             INC    R0
4108 740A             16             MOV    A,#0AH
410A F6               17             MOV    @R0,A
410B 08               18             INC    R0
410C F6               19             MOV    @R0,A
410D 08               20             INC    R0
410E 7400             21             MOV    A,#00H
4110 F6               22             MOV    @R0,A
4111 08               23             INC    R0
4112 F6               24             MOV    @R0,A
                      25     
4113 758910           26             MOV    TMOD,#10H  ;定时器1初始化为方式1
4116 758D38           27             MOV    TH1,#38H   ;置时间常数,延时0.1秒
4119 758B00           28             MOV    TL1,#00H
                      29     
411C 752300           30             MOV    BUF,#00H   ;置0
411F 752200           31             MOV    SBF,#00H
4122 752100           32             MOV    MBF,#00H
                      33     
4125 D2AB             34             SETB   ET1
4127 D2AF             35             SETB   EA
4129 D28E             36             SETB   TR1
                      37     
412B 7840             38     DS1:    MOV    R0,#40H    ;置显示缓冲区首址
412D 7A20             39             MOV    R2,#20H    ;置扫描初值,点亮最左边的LED6
412F 90CFA0           40     DS2:    MOV    DPTR,#PORT    
4132 E6               41             MOV    A,@R0      ;得到的段显码输出到段数据口
4133 3154             42             ACALL  TABLE
4135 F0               43             MOVX   @DPTR,A
                      44     
4136 EA               45             MOV    A,R2       ;向位数据口P1输出位显码
4137 F4               46             CPL    A
4138 F590             47             MOV    P1,A   
                      48     
413A 7BFF             49             MOV    R3,#0FFH   ;延时一小段时间
413C 00               50     DEL:    NOP
413D DBFD             51             DJNZ   R3,DEL
                      52     
413F 08               53             INC    R0         ;显示缓冲字节加一
4140 C3               54             CLR    C
4141 EA               55             MOV    A,R2
4142 13               56             RRC    A          ;显码右移一位
4143 FA               57             MOV    R2,A       ;最末一位是否显示完毕?,如无则
4144 70E9             58             JNZ    DS2        ;继续往下显示
A51 MACRO ASSEMBLER  LESSON9                                                              05/03/2008 03:02:58 PAGE     2

                      59     
4146 7845             60             MOV    R0,#45H
4148 E522             61             MOV    A,SBF      ;把秒值分别放于44H,45H中
414A 3162             62             ACALL  GET
                      63     
414C 18               64             DEC    R0         ;跳过负责显示"-"的两个字节
414D 18               65             DEC    R0
414E E521             66             MOV    A,MBF      ;把分值分别放入40H,41H中
                      67     
4150 3162             68             ACALL  GET
4152 80D7             69             SJMP   DS1        ;转DS1从头显示起
4154 04               70     TABLE:  INC    A          ;取与数字对应的段码
4155 83               71             MOVC   A,@A+PC
4156 22               72             RET
4157 3F065B4F         73             DB     3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH, 40H
415B 666D7D07                
415F 7F6F40                  
                      74              
4162 F9               75     GET:    MOV    R1,A      ;把从分或秒字节中取来的值的高
4163 540F             76             ANL    A,#0FH    ;位屏蔽掉,并送入缓冲区
4165 F6               77             MOV    @R0,A
                      78     
4166 18               79             DEC    R0
4167 E9               80             MOV    A,R1      ;把从分或秒字节中取来的值的低
4168 C4               81             SWAP   A         ;位屏蔽掉,并送入缓冲区
4169 540F             82             ANL    A,#0FH
416B F6               83             MOV    @R0,A
416C 18               84             DEC    R0        ;R0指针下移一位
416D 22               85             RET
416E 758BAF           86     CLOCK:  MOV    TL1,#0AFH  ;置时间常数
4171 758D3C           87             MOV    TH1,#3CH
4174 C0D0             88             PUSH   PSW
4176 C0E0             89             PUSH   ACC
4178 0523             90             INC    BUF       ;计数加一
417A E523             91             MOV    A,BUF     ;计到10否?没有则转到QUIT退出中断
417C B40A1B           92             CJNE   A,#0AH,QUIT
417F 752300           93             MOV    BUF,#00H  ;置初值
4182 E522             94             MOV    A,SBF
4184 04               95             INC    A         ;秒值加一,经十进制调整后放入
4185 D4               96             DA     A         ;秒字节
4186 F522             97             MOV    SBF,A
4188 B4600F           98             CJNE   A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断
418B 752200           99             MOV    SBF,#00H    ;是,秒字节清零
418E E521            100             MOV    A,MBF
4190 04              101             INC    A           ;分值加一,经十进制调整后放入
4191 D4              102             DA     A           ;分字节
4192 F521            103             MOV    MBF,A
4194 B46003          104             CJNE   A,#60H,QUIT ;分值为60否?不是则退出中断
4197 752100          105             MOV    MBF,#00H    ;是,清零
419A D0E0            106     QUIT:   POP    ACC
419C D0D0            107             POP    PSW
419E 32              108             RETI               ;中断返回
                     109     END       
A51 MACRO ASSEMBLER  LESSON9                                                              05/03/2008 03:02:58 PAGE     3

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
BUF. . . . . . . .  N NUMB   0023H   A   
CLOCK. . . . . . .  C ADDR   416EH   A   
DEL. . . . . . . .  C ADDR   413CH   A   
DS1. . . . . . . .  C ADDR   412BH   A   
DS2. . . . . . . .  C ADDR   412FH   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
ET1. . . . . . . .  B ADDR   00A8H.3 A   
GET. . . . . . . .  C ADDR   4162H   A   
MBF. . . . . . . .  N NUMB   0021H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
PORT . . . . . . .  N NUMB   CFA0H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
QUIT . . . . . . .  C ADDR   419AH   A   
SBF. . . . . . . .  N NUMB   0022H   A   
START. . . . . . .  C ADDR   4100H   A   
TABLE. . . . . . .  C ADDR   4154H   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TL1. . . . . . . .  D ADDR   008BH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR1. . . . . . . .  B ADDR   0088H.6 A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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