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

📄 up51s004.lst

📁 次代码为LED数码显示程序代码
💻 LST
字号:
A51 MACRO ASSEMBLER  UP51S004                                                             01/04/2005 16:18:30 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;/*******************************************************************************
                       2     ;*                                                                              *
                       3     ;*    File       : uP51s004.asm                                                 *
                       4     ;*    Date       : 2004-9-5                                                     *
                       5     ;*    Version    : 1.0                                                          *
                       6     ;*                                                                              *
                       7     ;*    Author     : kevin           kevin@dz51.com                               *
                       8     ;*    Company    : Http://www.dz51.com                                          *
                       9     ;*                                                                              *
                      10     ;********************************************************************************
                      11     ;*    Description:                                                              *
                      12     ;*                 LED数码管显示演示程序                                        *
                      13     ;*                 在8个LED数码管上依次显示1,2,3,4                              *
                      14     ;*                                                                              *
                      15     ;*                                                                              *
                      16     ;*                                                                              *
                      17     ;*******************************************************************************/
                      18     CODE_SEG        SEGMENT CODE 
                      19     
                      20     DATA_SEG        SEGMENT DATA 
                      21     
----                  22             RSEG  DATA_SEG
                      23             
0000                  24     dis_digit:      DS              1
0001                  25     dis_index:      DS              1
0002                  26     dis_buf:        DS              4
0006                  27     stack:          DS              20
                      28     
                      29     ;===========================================================
                      30     
----                  31     CSEG    AT      00000H                          ; Reset向量
0000 020000   F       32             LJMP    MAIN
                      33     
----                  34     CSEG    AT      0000BH                          ; 定时器0中断向量
                      35     
000B 020000   F       36             LJMP    TIMER0
                      37     
                      38     
                      39     ;===========================================================
----                  40             RSEG  CODE_SEG  
0000                  41     MAIN:
0000 758100   F       42             MOV     SP,#(stack-1)                   ; 初始化堆栈指针
0003 7580FF           43             MOV     P0,#0FFH                        ; 初始化I/O口
0006 75A0FF           44             MOV     P2,#0FFH
0009 758901           45             MOV     TMOD,#01H                       ; 初始化timer0
000C 758CFC           46             MOV     TH0,#0FCH
000F 758A17           47             MOV     TL0,#017H
0012 75A882           48             MOV     IE,#082H
                      49     
0015 900000   F       50             MOV     DPTR, #DIS_CODE         ; 设定显示初值
0018 7402             51             MOV     A,#2
001A 93               52             MOVC    A,@A+DPTR
001B F500     F       53             MOV     dis_buf,A
001D 7403             54             MOV     A,#3
001F 93               55             MOVC    A,@A+DPTR    
0020 F500     F       56             MOV     dis_buf+01H,A
0022 7404             57             MOV     A,#4
0024 93               58             MOVC    A,@A+DPTR   
A51 MACRO ASSEMBLER  UP51S004                                                             01/04/2005 16:18:30 PAGE     2

0025 F500     F       59             MOV     dis_buf+02H,A 
0027 7401             60             MOV     A,#1
0029 93               61             MOVC    A,@A+DPTR
002A F500     F       62             MOV     dis_buf+03H,A  
002C 740A             63             MOV     A,#10      
002E 93               64             MOVC    A,@A+DPTR
                      65     
002F 7500FE   F       66             MOV     dis_digit,#0FEH         ; 初始从第一个数码管开始扫描
0032 F500     F       67             MOV     dis_index,A
                      68     
0034 D28C             69             SETB    TR0                                     ; 启动定时器0,开始动态扫描显示
                      70     
0036                  71     MAIN_LP:                                        
                      72     
                      73             ; 主程序循环,增加其它代码                              
                      74     
0036 80FE             75             SJMP    MAIN_LP
                      76     
                      77     ; END OF main
                      78     
                      79     
                      80     ;===========================================================
                      81     
                      82             USING   0
0038                  83     TIMER0:
                      84     ; 定时器0中断服程序, 用于数码管的动态扫描
                      85     ; DIS_INDEX --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
                      86     ; DIS_DIGIT --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
                      87     ;               选通P2.0口数码管
                      88     ; DIS_BUF   --- 显于缓冲区基地址                
                      89     
0038 C0E0             90             PUSH    ACC
003A C0D0             91             PUSH    PSW
003C C000             92             PUSH    AR0
                      93             
003E 758CFC           94             MOV     TH0,#0FCH
0041 758A17           95             MOV     TL0,#017H
                      96             
0044 75A0FF           97             MOV     P2,#0FFH                ; 先关闭所有数码管
                      98             
0047 7400     F       99             MOV     A,#DIS_BUF              ; 获得显示缓冲区基地址
0049 2500     F      100             ADD     A,DIS_INDEX             ; 获得偏移量
004B F8              101             MOV     R0,A                    ; R0 = 基地址 + 偏移量
004C E6              102             MOV     A,@R0                   ; 获得显示代码
004D F580            103             MOV     P0,A                    ; 显示代码传送到P0口
                     104             
004F 8500A0   F      105             MOV     P2,DIS_DIGIT            ; 
                     106     
0052 E500     F      107             MOV     A,DIS_DIGIT             ; 位选通值左移, 下次中断时选通下一位数码管
0054 23              108             RL      A
0055 F500     F      109             MOV     DIS_DIGIT,A
                     110             
0057 0500     F      111             INC     DIS_INDEX               ; DIS_INDEX加1, 下次中断时显示下一位
0059 530003   F      112             ANL     DIS_INDEX,#0x03         ; 当DIS_INDEX等于8(0000 1000)时, 清0
                     113     
005C D000            114             POP     AR0
005E D0D0            115             POP     PSW
0060 D0E0            116             POP     ACC
                     117             
0062 32              118             RETI 
                     119     ; END OF timer0
                     120     ;===========================================================
                     121     
----                 122             RSEG  CODE_SEG
0063                 123     DIS_CODE:
0063 C0              124             DB      0C0H    ;1
A51 MACRO ASSEMBLER  UP51S004                                                             01/04/2005 16:18:30 PAGE     3

0064 F9              125             DB      0F9H    ;2
0065 A4              126             DB      0A4H    ;3
0066 B0              127             DB      0B0H    ;4
0067 99              128             DB      099H    ;4
0068 92              129             DB      092H    ;5
0069 82              130             DB      082H    ;6
006A F8              131             DB      0F8H    ;7
006B 80              132             DB      080H    ;8
006C 90              133             DB      090H    ;9
006D FF              134             DB      0FFH    ;off
                     135     
                     136             END
A51 MACRO ASSEMBLER  UP51S004                                                             01/04/2005 16:18:30 PAGE     4

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
AR0. . . . . . . .  D ADDR   0000H   A   
CODE_SEG . . . . .  C SEG    006EH       REL=UNIT
DATA_SEG . . . . .  D SEG    001AH       REL=UNIT
DIS_BUF. . . . . .  D ADDR   0002H   R   SEG=DATA_SEG
DIS_CODE . . . . .  C ADDR   0063H   R   SEG=CODE_SEG
DIS_DIGIT. . . . .  D ADDR   0000H   R   SEG=DATA_SEG
DIS_INDEX. . . . .  D ADDR   0001H   R   SEG=DATA_SEG
IE . . . . . . . .  D ADDR   00A8H   A   
MAIN . . . . . . .  C ADDR   0000H   R   SEG=CODE_SEG
MAIN_LP. . . . . .  C ADDR   0036H   R   SEG=CODE_SEG
P0 . . . . . . . .  D ADDR   0080H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
SP . . . . . . . .  D ADDR   0081H   A   
STACK. . . . . . .  D ADDR   0006H   R   SEG=DATA_SEG
TH0. . . . . . . .  D ADDR   008CH   A   
TIMER0 . . . . . .  C ADDR   0038H   R   SEG=CODE_SEG
TL0. . . . . . . .  D ADDR   008AH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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