qscode.lst

来自「十五个关于AT89S51的源代码」· LST 代码 · 共 93 行

LST
93
字号
A51 MACRO ASSEMBLER  QSCODE                                                               07/28/2007 16:40:09 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                       2     ;
                       3     ;实例:快速启动quick start(STK 0707学习板)
                       4     ;
                       5     ;现象:8发光二极管向两个方向流动后数字8在6位七段数码管之间流动一次后循环
                       6     ;
                       7     ;作者:杨欣,刘长焕,张延强  电路飞翔网    eedesign@163.com
                       8     ;
                       9     ;                               http://www.circuitfly.com
                      10     ;
                      11     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      12     
                      13     
0000                  14                     ORG        00H          ;起始地址
0000                  15     START:                                  ;程序一开始,初始一些所需要变量,如进位CY的清0等
0000 74FF             16                     MOV     A, #0FFH        ;累加器ACC中8位全置1(FFH),发光二极管全熄灭
0002 C3               17                     CLR     C               ;进位CY被清0,CY=0
0003 7908             18                     MOV     R1, #8          ;R1=8,循环8次(左移8次),用R1作计数器
                      19     
0005                  20     LEFT:                                   ;这是发光二极管向左"流动"的循环体
0005 33               21                     RLC     A               ;把进位CY在累加器ACC中从右向左轮换一位
0006 F590             22                     MOV     P1, A           ;输出至P1口
0008 1129             23                     CALL    DELAY           ;调延时子程序,延时200ms
000A D9F9             24                     DJNZ    R1, LEFT        ;R1减1,如果不为0跳回LEFT继续执行,否则执行下一行
000C 7A07             25                     MOV     R2, #7          ;R2=7,为向右"流动"设置次数,考虑一下为什么不是8?
                      26     
000E                  27     RIGHT:                                  ;这是发光二极管向右"流动"的循环体
000E 13               28                     RRC     A               ;把进位CY在累加器ACC中从左向右轮换一位
000F F590             29                     MOV     P1, A           ;输出至P1口
0011 1129             30                     CALL    DELAY           ;调延时子程序,延时200ms
0013 DAF9             31                     DJNZ    R2, RIGHT       ;是否右移了7次,如果不是则跳回RIGHT继续执行
                      32                     
0015                  33     LEDDIS:
0015 758000           34                     MOV     P0, #00H        ;P0清0 
0018 75A008           35                     MOV     P2, #8          ;P2口输出显示数据8
001B 7A06             36                     MOV     R2, #6          ;R2=6,为6位七段数码管计数器
001D 7400             37                     MOV     A, #00H         ;A=00H,七段数码管选通起始地址
001F D3               38                     SETB    C               ;CY=1
                      39     
0020                  40     NEXT:
0020 33               41                     RLC     A               ;把进位CY在累加器ACC中从右向左轮换一位 
0021 F580             42                     MOV     P0, A           ;输出至P0口
0023 1129             43                     CALL    DELAY           ;调延时子程序,延时200ms
0025 DAF9             44                     DJNZ    R2,NEXT         ;是否右移了6次,如果不是则跳回NEXT继续执行
0027 80D7             45                     JMP     START           ;跳回一开始,重复执行该程序
                      46                     
                      47                     
0029                  48     DELAY:                                  ;延时200ms的子程序
0029 7B14             49                     MOV     R3, #20         
002B                  50     D1:
002B 7C14             51                     MOV     R4, #20
002D                  52     D2: 
002D 7DF8             53                     MOV     R5, #248
002F DDFE             54                     DJNZ    R5, $           ;R5减1,如果不为0,就执行本行
0031 DCFA             55                     DJNZ    R4, D2
0033 DBF6             56                     DJNZ    R3, D1
0035 22               57                     RET                     ;子程序结束标志,返回主程序
                      58                     END                     ;程序结束点
A51 MACRO ASSEMBLER  QSCODE                                                               07/28/2007 16:40:09 PAGE     2

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


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

D1 . . . . . . . .  C ADDR   002BH   A   
D2 . . . . . . . .  C ADDR   002DH   A   
DELAY. . . . . . .  C ADDR   0029H   A   
LEDDIS . . . . . .  C ADDR   0015H   A   
LEFT . . . . . . .  C ADDR   0005H   A   
NEXT . . . . . . .  C ADDR   0020H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
RIGHT. . . . . . .  C ADDR   000EH   A   
START. . . . . . .  C ADDR   0000H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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