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

📄 zd02.lst

📁 51单片机开发入门与典型实例
💻 LST
字号:
A51 MACRO ASSEMBLER  ZD02                                                                 01/08/2007 11:46:44 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN ZD02.OBJ
ASSEMBLER INVOKED BY: C:\Keil7.06\C51\BIN\A51.EXE ZD02.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;文件名:ZD02.ASM
                       2     ;程序功能:多级外部中断控制灯移动
0000                   3                 ORG    00H            ; 主程序起始地址
0000 8013              4                 JMP     START         ;跳到主程序START
0003                   5                 ORG    03H            ;INT0中断子程序起始地址             
0003 8026              6                 JMP     EXT0          ; 中断子程序 
                       7     
0013                   8                 ORG     13H           ;  INT1中断子程序起始地址
0013 803C              9                 JMP     EXT1    
                      10           
0015 75A885           11        START:   MOV  IE, #10000101B   ; INT0中断使能
0018 75B804           12                 MOV  IP, #00000100B   ; INT0中断优先
001B 758800           13                 MOV  TCON, #00000000B ; INT0为电平触发
001E 758170           14                 MOV   SP, #70H        ;设定堆栈指针             
                      15     
0021 7400             16                 MOV    A, #00H        ; A存有P1口欲显值
0023 F590             17        LOOP:    MOV    P1,A           ; P1端口灯亮
0025 120077           18                 LCALL  DELAY          ; 调延时1秒子程序
0028 F4               19                 CPL     A             ;将A的值反相
0029 80F8             20                 JMP     LOOP               
                      21     
002B C0E0             22         EXT0:   PUSH   ACC     ;将累加器的值压入堆栈保存 
002D C0D0             23                 PUSH   PSW     ;将 PSW的值压入堆栈保存     
002F D2D3             24                 SETB   RS0     ;设定工作寄存器组1
0031 C2D4             25                 CLR    RS1     ;
                      26     
0033 7B03             27                 MOV   R3,#03
0035 7808             28         LOOP1:  MOV    R0, #08 
                      29                                       ;设置左移位数
0037 74FE             30                 MOV    A ,#0FEH       ;设置左移初值
0039 F590             31         LOOP2:  MOV    P1, A          ;输出至P1
003B 1177             32                 ACALL  DELAY          ;调延时1秒子程序
003D 23               33                 RL      A             ;左移一位
003E D8F9             34                 DJNZ   R0, LOOP2      ;判断移动位数       
                      35                   
0040 7807             36                 MOV    R0,#07         ;设置右移位数
0042 03               37         LOOP3:  RR     A              ;右移一位
0043 F590             38                 MOV    P1, A          ;输出至P1
0045 120077           39                 LCALL  DELAY          ;调延时1秒子程序 
0048 D8F8             40                 DJNZ   R0, LOOP3 
004A DBE9             41                 DJNZ   R3,LOOP1
004C D0D0             42                 POP   PSW           ;从堆栈取回PSW的值
004E D0E0             43                 POP   ACC           ;从堆栈取回值 A的值         
0050 32               44                 RETI                ;返回主程序
                      45     
0051 C0E0             46          EXT1:  PUSH   ACC     ;将累加器的值压入堆栈保存 
0053 C0D0             47                 PUSH   PSW     ;将 PSW的值压入堆栈保存     
0055 D2D4             48                 SETB   RS1     ;设定工作寄存器组1
0057 C2D3             49                 CLR    RS0     ;
0059 7B03             50                 MOV   R3,#03
005B 7806             51         LOOP4:  MOV    R0, #06        ;设置左移位数
005D 74FC             52                 MOV    A ,#0FCH       ;设置左移初值
005F F590             53         LOOP5:  MOV    P1, A          ;输出至P1
0061 1177             54                 ACALL  DELAY          ;调延时1秒子程序
0063 23               55                 RL      A             ;左移一位
0064 D8F9             56                 DJNZ   R0, LOOP5      ;判断移动位数       
                      57                   
0066 7806             58                 MOV    R0,#06          ;设置右移位数
A51 MACRO ASSEMBLER  ZD02                                                                 01/08/2007 11:46:44 PAGE     2

0068 03               59         LOOP6:  RR     A              ;右移一位
0069 F590             60                 MOV    P1, A          ;输出至P1
006B 120077           61                 LCALL  DELAY          ;调延时1秒子程序 
006E D8F8             62                 DJNZ   R0, LOOP6 
0070 DBE9             63                 DJNZ   R3,LOOP4
0072 D0D0             64                 POP   PSW           ;从堆栈取回PSW的值
0074 D0E0             65                 POP   ACC           ;从堆栈取回值 A的值          
0076 32               66                 RETI                ;返回主程序
                      67                  
0077 7D14             68        DELAY:   MOV  R5, #20       ; 延时1秒子程序
0079 7E14             69         DLY1:   MOV   R6, #20      ;
007B 7FF8             70         DLY2:   MOV   R7, #248     ;
007D DFFE             71                 DJNZ  R7, $        ;
007F DEFA             72                 DJNZ  R6, DLY2     ;
0081 DDF6             73                 DJNZ  R5, DLY1     ;
0083 22               74                 RET                ;                              
                      75                 END                ; 程序结束
                              
                             
                             
                             
                                          
                                
                             
                             
A51 MACRO ASSEMBLER  ZD02                                                                 01/08/2007 11:46:44 PAGE     3

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
DELAY. . . . . . .  C ADDR   0077H   A   
DLY1 . . . . . . .  C ADDR   0079H   A   
DLY2 . . . . . . .  C ADDR   007BH   A   
EXT0 . . . . . . .  C ADDR   002BH   A   
EXT1 . . . . . . .  C ADDR   0051H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
IP . . . . . . . .  D ADDR   00B8H   A   
LOOP . . . . . . .  C ADDR   0023H   A   
LOOP1. . . . . . .  C ADDR   0035H   A   
LOOP2. . . . . . .  C ADDR   0039H   A   
LOOP3. . . . . . .  C ADDR   0042H   A   
LOOP4. . . . . . .  C ADDR   005BH   A   
LOOP5. . . . . . .  C ADDR   005FH   A   
LOOP6. . . . . . .  C ADDR   0068H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RS0. . . . . . . .  B ADDR   00D0H.3 A   
RS1. . . . . . . .  B ADDR   00D0H.4 A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0015H   A   
TCON . . . . . . .  D ADDR   0088H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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