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

📄 clock.lst

📁 基于51单片机的
💻 LST
字号:
A51 MACRO ASSEMBLER  CLOCK                                                                05/10/2008 19:49:21 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;#include <def.inc>
                +1     2     ;-----  常数定义  -------
  0018          +1     3     DATA_TL0    EQU    18H      ; 1 ms初值
  00FD          +1     4     DATA_TH0    EQU    0FDH
  00F8          +1     5     DATA_TL1    EQU    0F8H     ;10 ms初值
  00D8          +1     6     DATA_TH1    EQU    0D8H
                +1     7     
  0003          +1     8     N_DISP      EQU    3        ;要显示的总位数
                +1     9     
                +1    10     
                +1    11     ;-----  IO 定义  -------
  0090          +1    12     SEG_OUT     EQU    P1
                +1    13     
  00B3          +1    14     POS_CONTL1     BIT   P3.3
  00B4          +1    15     POS_CONTL2     BIT   P3.4
                +1    16     
                +1    17     
                +1    18     ;------ 位寻址区 -------
  0020          +1    19     CUR_DISP    EQU    20H      ;变量,当前要显示的位(0~7)
                +1    20     
                +1    21     ;------ 通用RAM -------
  0030          +1    22     TIME_10mS   EQU    30H      ;计时变量
  0031          +1    23     TIME_1S   EQU    31H
  0032          +1    24     TIME_10S  EQU    32H
                +1    25     
  0033          +1    26     LIGHT      EQU    33H      ;间隔符号值
                +1    27     
                +1    28     ;-----  定义3个显示内容  ---------
  0032          +1    29     DIS0        EQU    TIME_10S
  0031          +1    30     DIS1        EQU    TIME_1S
  0033          +1    31     DIS2        EQU    LIGHT
                +1    32     
                +1    33     MOV_BIT  MACRO  BIT1, BIT2 
                +1    34                MOV    C,  BIT2
                +1    35                MOV    BIT1,  C
                +1    36              ENDM
                      37     
0000                  38           ORG  0000H
0000 020030           39                LJMP   START
                      40     
0003                  41               ORG  0003H                             ;恢复红灯开启时的初始状态
0003 01D6             42                    JMP    RESTART
                      43            
000B                  44           ORG  000BH                 ;1mS中断,动态扫描       
000B 019D             45                JMP    INT_T0
                      46     
001B                  47           ORG  001BH                                 ;10mS  中断,完成时钟计时
001B 8046             48                JMP    INT_T1         
                      49     
0030                  50           ORG  0030H
0030                  51     START:   
                      52     ;---------  重置堆栈  -------------  
0030 758160           53                MOV   SP,         #60H    
                      54     
                      55     ;----------  端口初始化  -----------
0033 7590FF           56                    MOV   P1,      #0FFH
0036 75B0FF           57                    MOV   P3,      #0FFH 
                      58       
A51 MACRO ASSEMBLER  CLOCK                                                                05/10/2008 19:49:21 PAGE     2

                      59     ;---------  定时器设置  ------------
0039 758919           60                MOV   TMOD,    #19h            ;设置C/T0 和 C/T1 工作在方式 1(16bit 定时)
003C 758A18           61                MOV   TL0,     #DATA_TL0       ;初值
003F 758CFD           62                MOV   TH0,     #DATA_TH0   
0042 758BF8           63                MOV   TL1,     #DATA_TL1      
0045 758DD8           64                MOV   TH1,     #DATA_TH1
0048 D28C             65                SETB  TR0                      ;启动
004A D28E             66                SETB  TR1
                      67     
                      68     ;---------  中断设置  -------------
004C 75B801           69                MOV   IP,    #00000001B     ; 外部中断0为高优先级
004F 75A88B           70                MOV   IE,    #10001011B     ; 开放C/T0、C/T1、外部中断0中断 
                      71     
                      72     
                      73     ;---------  变量初始化  ------------
0052 753064           74                MOV   TIME_10mS,   #100       ;计时变量
0055 753109           75                MOV   TIME_1S,     #9
0058 753201           76                MOV   TIME_10S,    #1 
                      77                
005B 752000           78                MOV   CUR_DISP,    #0         ;显示位
005E 75330B           79                    MOV   LIGHT,       #11        ;显示空格“-”的值
                      80     
0061 80FE             81     MAINLOOP:  JMP   MAINLOOP                ;主循环
                      82     
                      83     
                      84     ;--------  10mS中断,计时  ----------
0063 C0D0             85     INT_T1:    PUSH  PSW                      ;保护现场
0065 C0E0             86                PUSH  ACC
                      87     
0067 758BF8           88                MOV   TL1,    #DATA_TL1        ;重置初值
006A 758DD8           89                MOV   TH1,    #DATA_TH1  
                      90           
006D D53028           91                DJNZ  TIME_10mS,  EXIT_T1  
                      92     
0070 753064           93                MOV   TIME_10mS,   #100        ;每1S
0073 1531             94                DEC   TIME_1S
0075 E531             95                MOV   A,   TIME_1S
0077 B4FF1E           96                CJNE  A,   #-1,   EXIT_T1
                      97     
007A 753109           98                MOV   TIME_1S,   #9            ;每10S
007D 1532             99                DEC   TIME_10S
007F E532            100                MOV   A,     TIME_10S
0081 B4FF14          101                CJNE  A,    #-1,  EXIT_T1
                     102     
                     103                        
0084 E533            104                        MOV   A,    LIGHT
0086 B40B03          105                        CJNE  A,    #11, AAA
0089 B40A07          106                        CJNE  A,    #10, BBB
008C 0533            107     AAA:       INC   LIGHT
008E 753201          108                MOV   TIME_10S, #1
0091 8005            109                JMP   EXIT_T1 
0093 1533            110     BBB:       DEC   LIGHT 
0095 753202          111                MOV   TIME_10S, #2  
                     112     
0098 D0E0            113     EXIT_T1:   POP   ACC                       ;恢复现场
009A D0D0            114                POP   PSW
009C 32              115                RETI
                     116     
                     117     ;--------  1mS中断,动态扫描  ----------                     
009D C0D0            118     INT_T0:    PUSH  PSW                    ; 保护现场
009F C0E0            119                PUSH  ACC  
00A1 C083            120                PUSH  DPH
00A3 C082            121                    PUSH  DPL
00A5 D2D3            122                SETB  RS0                    ; 选择工作寄存器1 
                     123     
00A7 758A18          124                MOV   TL0,   #DATA_TL0       ; 重置 T0 初值
A51 MACRO ASSEMBLER  CLOCK                                                                05/10/2008 19:49:21 PAGE     3

00AA 758CFD          125                MOV   TH0,   #DATA_TH0
                     126      
                     127                    MOV_BIT  POS_CONTL1,   CUR_DISP.0        ;输出位选     
                     130                MOV_BIT  POS_CONTL2,   CUR_DISP.1
                     133                
00B5 E520            134                MOV    A,     CUR_DISP         ;输出段选
00B7 9000F6          135                MOV    DPTR,  #TAB_DIS         ;计算段显示内容的地址 
00BA 93              136                MOVC   A,     @A+DPTR          ; A= 在该位上要显示内容的地址
                     137     
00BB F8              138                MOV    R0,    A
00BC E6              139                MOV    A,     @R0              ; A= 在该位要显示内容的值
                     140     
00BD 9000EA          141                    MOV    DPTR,  #TAB_CODE  
00C0 93              142                MOVC   A,     @A+DPTR          ; A= 要显示内容的段码
00C1 F590            143                MOV    SEG_OUT,    A           ;段显输出
                     144     
00C3 0520            145                INC    CUR_DISP                ;计算下次(1mS后)要显示的位 
00C5 E520            146                MOV    A,     CUR_DISP
00C7 B40303          147                    CJNE   A,    #N_DISP,  EXIT_T0
00CA 752000          148                    MOV    CUR_DISP,  #0
                     149     
00CD D082            150     EXIT_T0:   POP    DPL
00CF D083            151                POP    DPH
00D1 D0E0            152                POP    ACC
00D3 D0D0            153                POP    PSW            ;恢复现场
00D5 32              154                RETI
                     155     
                     156     ;----------- 复位  ------------ 
00D6 C0D0            157     RESTART:   PUSH  PSW             ;保护现场
00D8 C0E0            158                PUSH  ACC
                     159     
00DA 753109          160                MOV   TIME_1S,     #9
00DD 753201          161                MOV   TIME_10S,    #1 
00E0 75330B          162                        MOV   LIGHT,       #11      
                     163     
00E3 D0E0            164                        POP    ACC                    ;恢复现场
00E5 D0D0            165                POP    PSW            
00E7 D28C            166                        SETB   TR0
00E9 32              167                        RETI
                     168     
00EA                 169     TAB_CODE:
00EA C0              170     DB      0C0H    ;0   0   0
00EB F9              171     DB      0F9H    ;1   1   1
00EC A4              172     DB      0A4H    ;2   2   2
00ED B0              173     DB      0B0H    ;3   3   3
00EE 99              174     DB      099H    ;4   4   4
00EF 92              175     DB      092H    ;5   5   5
00F0 82              176     DB      082H    ;6   6   6
00F1 F8              177     DB      0F8H    ;7   7   7
00F2 80              178     DB      080H    ;8   8   8
00F3 98              179     DB      098H    ;9   9   9
00F4 FF              180     DB      0FFH    ;绿灯   10 
00F5 80              181     DB      080H    ;红灯   11   
                     182     
00F6                 183     TAB_DIS:
00F6 32              184     DB      DIS0   
00F7 31              185     DB      DIS1 
00F8 33              186     DB      DIS2   
                     187       
                     188                 END
A51 MACRO ASSEMBLER  CLOCK                                                                05/10/2008 19:49:21 PAGE     4

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


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

AAA. . . . . . . .  C ADDR   008CH   A   
ACC. . . . . . . .  D ADDR   00E0H   A   
BBB. . . . . . . .  C ADDR   0093H   A   
CUR_DISP . . . . .  N NUMB   0020H   A   
DATA_TH0 . . . . .  N NUMB   00FDH   A   
DATA_TH1 . . . . .  N NUMB   00D8H   A   
DATA_TL0 . . . . .  N NUMB   0018H   A   
DATA_TL1 . . . . .  N NUMB   00F8H   A   
DIS0 . . . . . . .  N NUMB   0032H   A   
DIS1 . . . . . . .  N NUMB   0031H   A   
DIS2 . . . . . . .  N NUMB   0033H   A   
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
EXIT_T0. . . . . .  C ADDR   00CDH   A   
EXIT_T1. . . . . .  C ADDR   0098H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
INT_T0 . . . . . .  C ADDR   009DH   A   
INT_T1 . . . . . .  C ADDR   0063H   A   
IP . . . . . . . .  D ADDR   00B8H   A   
LIGHT. . . . . . .  N NUMB   0033H   A   
MAINLOOP . . . . .  C ADDR   0061H   A   
N_DISP . . . . . .  N NUMB   0003H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
POS_CONTL1 . . . .  B ADDR   00B0H.3 A   
POS_CONTL2 . . . .  B ADDR   00B0H.4 A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RESTART. . . . . .  C ADDR   00D6H   A   
RS0. . . . . . . .  B ADDR   00D0H.3 A   
SEG_OUT. . . . . .  D ADDR   0090H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0030H   A   
TAB_CODE . . . . .  C ADDR   00EAH   A   
TAB_DIS. . . . . .  C ADDR   00F6H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TIME_10MS. . . . .  N NUMB   0030H   A   
TIME_10S . . . . .  N NUMB   0032H   A   
TIME_1S. . . . . .  N NUMB   0031H   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TL1. . . . . . . .  D ADDR   008BH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 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 + -