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 + -
显示快捷键?