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

📄 clock.lst

📁 在u vision下对51单片机编程
💻 LST
字号:
A51 MACRO ASSEMBLER  CLOCK                                                                04/14/2008 00:24:43 PAGE     1


MACRO ASSEMBLER A51 V7.10
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     
  0008          +1     8     N_DISP      EQU    8        ;要显示的总位数
                +1     9     ;-----  IO 定义  -------
  0090          +1    10     SEG_OUT     EQU    P1
                +1    11     
  00B2          +1    12     POS_CONTL1     BIT   P3.2
  00B3          +1    13     POS_CONTL2     BIT   P3.3
  00B4          +1    14     POS_CONTL3     BIT   P3.4
                +1    15     
                +1    16     ;------ 位寻址区 -------
  0020          +1    17     CUR_DISP    EQU    20H      ;变量,当前要显示的位(0~7)
                +1    18     
                +1    19     ;------ 通用RAM -------
  0030          +1    20     TIME_10mS   EQU    30H      ;计时变量
  0031          +1    21     TIME_1S     EQU    31H
  0032          +1    22     TIME_10S    EQU    32H
  0033          +1    23     TIME_1Min   EQU    33H
  0034          +1    24     TIME_10Min  EQU    34H
  0035          +1    25     TIME_1H     EQU    35H
  0036          +1    26     TIME_10H    EQU    36H
                +1    27     
  0037          +1    28     SPACE       EQU    37H      ;间隔符号值
                +1    29     
                +1    30     ;-----  定义8个显示内容  ---------
  0036          +1    31     DIS0        EQU    TIME_10H
  0035          +1    32     DIS1        EQU    TIME_1H
  0037          +1    33     DIS2        EQU    SPACE
  0034          +1    34     DIS3        EQU    TIME_10Min
  0033          +1    35     DIS4        EQU    TIME_1Min
  0037          +1    36     DIS5        EQU    SPACE
  0032          +1    37     DIS6        EQU    TIME_10S
  0031          +1    38     DIS7        EQU    TIME_1S
                +1    39     
                +1    40     MOV_BIT  MACRO  BIT1, BIT2 
                +1    41                MOV    C,  BIT2
                +1    42                MOV    BIT1,  C
                +1    43              ENDM
                      44     
0000                  45           ORG  0000H
0000 020030           46                LJMP   START
                      47            
000B                  48           ORG  000BH                 ;1mS中断,动态扫描       
000B 01B8             49                JMP    INT_T0
                      50     
001B                  51           ORG  001BH
001B 8052             52                JMP    INT_T1         ;10mS  中断,完成时钟计时
                      53     
0030                  54           ORG  0030H
0030                  55     START:   
                      56     ;---------  重置堆栈  -------------  
0030 758160           57                MOV   SP,         #60H    
                      58     
A51 MACRO ASSEMBLER  CLOCK                                                                04/14/2008 00:24:43 PAGE     2

                      59     ;----------  端口初始化  -----------
0033 7590FF           60                MOV   P1,      #0FFH
0036 75B0FF           61                MOV   P3,      #0FFH 
                      62       
                      63     ;---------  定时器设置  ------------
0039 758911           64                MOV   TMOD,    #11h            ;设置C/T0 和 C/T1 工作在方式 1(16bit 定时)
003C 758A18           65                MOV   TL0,     #DATA_TL0       ;初值
003F 758CFD           66                MOV   TH0,     #DATA_TH0   
0042 758BF8           67                MOV   TL1,     #DATA_TL1      
0045 758DD8           68                MOV   TH1,     #DATA_TH1
0048 D28C             69                SETB  TR0                      ;启动
004A D28E             70                SETB  TR1
                      71     
                      72     ;---------  中断设置  -------------
004C 75B808           73                MOV   IP,    #00001000B     ; 计时的C/T1 优先级为“高”
004F 75A88A           74                MOV   IE,    #10001010B     ; 开放C/T0、C/T1中断 
                      75     
                      76     
                      77     ;---------  变量初始化  ------------
0052 753064           78                MOV   TIME_10mS,   #100       ;计时变量
0055 753100           79                MOV   TIME_1S,     #0
0058 753200           80                MOV   TIME_10S,    #0 
005B 753300           81                MOV   TIME_1Min,   #0
005E 753400           82                MOV   TIME_10Min,  #0 
0061 753500           83                MOV   TIME_1H,     #0
0064 753600           84                MOV   TIME_10H,    #0
                      85     
0067 752000           86                MOV   CUR_DISP,    #0         ;显示位
006A 75370A           87                MOV   SPACE,       #10        ;显示空格“-”的值
                      88     
006D 80FE             89     MAINLOOP:  JMP   MAINLOOP                ;主循环
                      90     
                      91     
                      92     ;--------  10mS中断,计时  ----------
006F C0D0             93     INT_T1:    PUSH  PSW                      ;保护现场
0071 C0E0             94                PUSH  ACC
                      95     
0073 758BF8           96                MOV   TL1,    #DATA_TL1        ;重置初值
0076 758DD8           97                MOV   TH1,    #DATA_TH1  
                      98           
0079 D53037           99                DJNZ  TIME_10mS,  EXIT_T1  
                     100     
007C 753064          101                MOV   TIME_10mS,   #100        ;每1S
007F 0531            102                INC   TIME_1S
0081 E531            103                MOV   A,   TIME_1S
0083 B40A2D          104                CJNE  A,   #10,   EXIT_T1
                     105     
0086 753100          106                MOV   TIME_1S,   #0            ;每10S
0089 0532            107                INC   TIME_10S
008B E532            108                MOV   A,     TIME_10S
008D B40623          109                CJNE  A,    #6,   EXIT_T1
                     110               
0090 753200          111                MOV   TIME_10S, #0              ;每1Min
0093 0533            112                INC   TIME_1Min
0095 E533            113                MOV   A,   TIME_1Min
0097 B40A19          114                CJNE  A,   #10,   EXIT_T1
                     115                 
009A 753300          116                MOV   TIME_1Min,  #0            ;每10Min
009D 0534            117                INC   TIME_10Min
009F E534            118                MOV   A,   TIME_10Min
00A1 B4060F          119                CJNE  A,   #6,    EXIT_T1
                     120               
00A4 753400          121                MOV   TIME_10Min, #0            ;每1H
00A7 0535            122                INC   TIME_1H
00A9 E535            123                MOV   A,   TIME_1H
00AB B40A05          124                CJNE  A,   #10,   EXIT_T1
A51 MACRO ASSEMBLER  CLOCK                                                                04/14/2008 00:24:43 PAGE     3

                     125     
00AE 753500          126                MOV   TIME_1H,    #0            ;每10H
00B1 0536            127                INC   TIME_10H
                     128     
00B3 D0E0            129     EXIT_T1:   POP   ACC                       ;恢复现场
00B5 D0D0            130                POP   PSW
00B7 32              131                RETI
                     132     
                     133     ;--------  1mS中断,动态扫描  ----------                     
00B8 C0D0            134     INT_T0:    PUSH  PSW                    ; 保护现场
00BA C0E0            135                PUSH  ACC  
00BC C083            136                PUSH  DPH
00BE C082            137                PUSH  DPL
00C0 D2D3            138                SETB  RS0                    ; 选择工作寄存器1 
                     139     
00C2 758A18          140                MOV   TL0,   #DATA_TL0       ; 重置 T0 初值
00C5 758CFD          141                MOV   TH0,   #DATA_TH0
                     142      
                     143                MOV_BIT  POS_CONTL1,   CUR_DISP.0        ;输出位选     
                     146                MOV_BIT  POS_CONTL2,   CUR_DISP.1
                     149                MOV_BIT  POS_CONTL3,   CUR_DISP.2
                     152     
00D4 E520            153                MOV    A,     CUR_DISP         ;输出段选
00D6 900100          154                MOV    DPTR,  #TAB_DIS         ;计算段显示内容的地址 
00D9 93              155                MOVC   A,     @A+DPTR          ; A= 在该位上要显示内容的地址
                     156     
00DA F8              157                MOV    R0,    A
00DB E6              158                MOV    A,     @R0              ; A= 在该位要显示内容的值
                     159     
00DC 9000F5          160                MOV    DPTR,  #TAB_CODE  
00DF 93              161                MOVC   A,     @A+DPTR          ; A= 要显示内容的段码
00E0 F590            162                MOV    SEG_OUT,    A           ;段显输出
                     163     
00E2 0520            164                INC    CUR_DISP                ;计算下次(1mS后)要显示的位 
00E4 E520            165                MOV    A,     CUR_DISP
00E6 B40803          166                CJNE   A,    #N_DISP,  EXIT_T0
00E9 752000          167                MOV    CUR_DISP,  #0
                     168     
00EC D082            169     EXIT_T0:   POP    DPL
00EE D083            170                POP    DPH
00F0 D0E0            171                POP    ACC
00F2 D0D0            172                POP    PSW            ;恢复现场
00F4 32              173                RETI
                     174     
00F5                 175     TAB_CODE:
00F5 C0              176     DB      0C0H    ;0   0   0
00F6 F9              177     DB      0F9H    ;1   1   1
00F7 A4              178     DB      0A4H    ;2   2   2
00F8 B0              179     DB      0B0H    ;3   3   3
00F9 99              180     DB      099H    ;4   4   4
00FA 92              181     DB      092H    ;5   5   5
00FB 82              182     DB      082H    ;6   6   6
00FC F8              183     DB      0F8H    ;7   7   7
00FD 80              184     DB      080H    ;8   8   8
00FE 98              185     DB      098H    ;9   9   9
00FF BF              186     DB      0BFH    ;-   10       
                     187     
0100                 188     TAB_DIS:
0100 36              189     DB      DIS0   
0101 35              190     DB      DIS1 
0102 37              191     DB      DIS2   
0103 34              192     DB      DIS3    
0104 33              193     DB      DIS4   
0105 37              194     DB      DIS5   
0106 32              195     DB      DIS6     
0107 31              196     DB      DIS7   
A51 MACRO ASSEMBLER  CLOCK                                                                04/14/2008 00:24:43 PAGE     4

                     197       
                     198                 END
A51 MACRO ASSEMBLER  CLOCK                                                                04/14/2008 00:24:43 PAGE     5

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


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

ACC. . . . . . . .  D ADDR   00E0H   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   0036H   A   
DIS1 . . . . . . .  N NUMB   0035H   A   
DIS2 . . . . . . .  N NUMB   0037H   A   
DIS3 . . . . . . .  N NUMB   0034H   A   
DIS4 . . . . . . .  N NUMB   0033H   A   
DIS5 . . . . . . .  N NUMB   0037H   A   
DIS6 . . . . . . .  N NUMB   0032H   A   
DIS7 . . . . . . .  N NUMB   0031H   A   
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
EXIT_T0. . . . . .  C ADDR   00ECH   A   
EXIT_T1. . . . . .  C ADDR   00B3H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
INT_T0 . . . . . .  C ADDR   00B8H   A   
INT_T1 . . . . . .  C ADDR   006FH   A   
IP . . . . . . . .  D ADDR   00B8H   A   
MAINLOOP . . . . .  C ADDR   006DH   A   
N_DISP . . . . . .  N NUMB   0008H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
POS_CONTL1 . . . .  B ADDR   00B0H.2 A   
POS_CONTL2 . . . .  B ADDR   00B0H.3 A   
POS_CONTL3 . . . .  B ADDR   00B0H.4 A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RS0. . . . . . . .  B ADDR   00D0H.3 A   
SEG_OUT. . . . . .  D ADDR   0090H   A   
SP . . . . . . . .  D ADDR   0081H   A   
SPACE. . . . . . .  N NUMB   0037H   A   
START. . . . . . .  C ADDR   0030H   A   
TAB_CODE . . . . .  C ADDR   00F5H   A   
TAB_DIS. . . . . .  C ADDR   0100H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TIME_10H . . . . .  N NUMB   0036H   A   
TIME_10MIN . . . .  N NUMB   0034H   A   
TIME_10MS. . . . .  N NUMB   0030H   A   
TIME_10S . . . . .  N NUMB   0032H   A   
TIME_1H. . . . . .  N NUMB   0035H   A   
TIME_1MIN. . . . .  N NUMB   0033H   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 + -