📄 fasong.lst
字号:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 1
MCS-51 Family Cross Assembler A S E M - 5 1 V 1.2
=====================================================
Source File: FASONG.ASM
Object File: FASONG.HEX
List File: FASONG.LST
Line I Addr Code Source
1: ;一个以89C51为核心构成的数据采集系统,要求每分钟向上位机发送32字节的采集数据
2: ;通讯波特率9600波特,系统晶振11.0592MHz,数据采用校验和方式进行校验。
3: ;当接收方接收的数据出错时,向发送方发送ASCII码"E",否则发送"R"。
4: ;若发现接收错误,发送方应该重发数据。
5: N 00 S_END BIT 00H
6: N 01 ACK BIT 01H
7: N 02 OK BIT 02H
8: N 03 MIN BIT 03H
9: N 000A CR2 EQU 0AH
10: N 000B CR3 EQU 0BH ;1区R2,R3
11: N 0010 BR0 EQU 10H
12: N 0012 BR2 EQU 12H ;2区R0,R2
13: N 0020 LEN EQU 32 ;数据块长度
14: N 0030 ADDR1 EQU 30H ;数据块首地址
15: N 0000 ORG 0
16: 0000 02 00 30 LJMP START
17: N 000B ORG 0BH
18: 000B 02 00 A3 LJMP TS
19: N 0023 ORG 23H
20: 0023 02 00 C0 LJMP TR
21: N 0030 ORG 30H
22: 0030 75 81 60 START: MOV SP,#60H
23: ;===============================
24: ;向发送数据缓冲区赋值
25: ;===============================
26: 0033 78 30 MOV R0,#ADDR1
27: 0035 7A 1A MOV R2,#26
28: 0037 74 41 MOV A,#'A'
29: 0039 F6 LL1: MOV @R0,A
30: 003A 04 INC A
31: 003B 08 INC R0
32: 003C DA FB DJNZ R2,LL1
33: 003E 7A 04 MOV R2,#4
34: 0040 74 30 MOV A,#'0'
35: 0042 F6 LL2: MOV @R0,A
36: 0043 04 INC A
37: 0044 08 INC R0
38: 0045 DA FB DJNZ R2,LL2
39: 0047 76 0A MOV @R0,#0AH ;存换行符
40: 0049 08 INC R0
41: 004A 76 0D MOV @R0,#0DH ;存回车符
42: ;=================================
43: 004C 75 89 21 MOV TMOD,#21H
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 004F 75 8C 4C MOV TH0,#4CH
45: 0052 75 8A 00 MOV TL0,#0
46: 0055 75 8D FD MOV TH1,#0FDH
47: 0058 75 8B FD MOV TL1,#0FDH
48: 005B D2 B9 SETB PT0
49: 005D D2 A9 SETB ET0
50: 005F 53 87 7F ANL PCON,#7FH ;SMOD=0
51: 0062 75 98 50 MOV SCON,#50H
52: 0065 D2 AC SETB ES
53: 0067 D2 AF SETB EA
54: 0069 D2 8C SETB TR0
55: 006B D2 8E SETB TR1
56: 006D 75 0A 14 MOV CR2,#20
57: 0070 75 0B 3C MOV CR3,#60
58: 0073 C2 00 CLR S_END
59: 0075 C2 01 CLR ACK
60: 0077 C2 02 CLR OK
61: 0079 C2 03 CLR MIN
62: 007B 30 03 FD LOOP: JNB MIN,$
63: 007E C2 03 CLR MIN
64: 0080 7A 20 MOV R2,#LEN
65: 0082 78 30 MOV R0,#ADDR1
66: 0084 E4 CLR A
67: 0085 26 L1: ADD A,@R0
68: 0086 08 INC R0
69: 0087 DA FC DJNZ R2,L1
70: 0089 F6 MOV @R0,A ;存检查和
71: 008A 75 12 21 L2: MOV BR2,#LEN+1
72: 008D 75 10 30 MOV BR0,#ADDR1
73: 0090 E5 30 MOV A,ADDR1
74: 0092 F5 99 MOV SBUF,A ;发送第一个字节
75: 0094 30 00 FD JNB S_END,$ ;没有发送完毕就等待
76: 0097 C2 00 CLR S_END
77: 0099 30 01 FD JNB ACK,$ ;没有应答则等待
78: 009C C2 01 CLR ACK
79: 009E 30 02 E9 JNB OK,L2 ;接收方返回错误代码则重发
80: 00A1 80 D8 SJMP LOOP
81: 00A3 C0 D0 TS: PUSH PSW
82: 00A5 D2 D3 SETB RS0
83: 00A7 C2 D4 CLR RS1 ;选择1区R寄存器
84: 00A9 C2 8C CLR TR0
85: 00AB 75 8C 4C MOV TH0,#4CH
86: 00AE 75 8A 00 MOV TL0,#0
87: 00B1 D2 8C SETB TR0
88: 00B3 DA 08 DJNZ R2,TS1
89: 00B5 7A 14 MOV R2,#20
90: 00B7 DB 04 DJNZ R3,TS1
91: 00B9 7B 3C MOV R3,#60
92: 00BB D2 03 SETB MIN ;一分钟到,置MIN标志
93: 00BD D0 D0 TS1: POP PSW
94: 00BF 32 RETI
95: 00C0 C0 D0 TR: PUSH PSW
96: 00C2 C0 E0 PUSH ACC
97: 00C4 C2 D3 CLR RS0
98: 00C6 D2 D4 SETB RS1 ;选2区R寄存器
99: 00C8 30 99 0E JNB TI,SR2
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 00CB C2 99 CLR TI
101: 00CD DA 04 DJNZ R2,SR1
102: 00CF D2 00 SETB S_END
103: 00D1 80 06 SJMP SR2
104: 00D3 08 SR1: INC R0
105: 00D4 E6 MOV A,@R0
106: 00D5 F5 99 MOV SBUF,A
107: 00D7 80 12 SJMP SR4
108: 00D9 30 98 0F SR2: JNB RI,SR4
109: 00DC C2 98 CLR RI
110: 00DE D2 01 SETB ACK
111: 00E0 E5 99 MOV A,SBUF
112: 00E2 B4 52 04 CJNE A,#'R',SR3
113: 00E5 D2 02 SETB OK
114: 00E7 80 02 SJMP SR4
115: 00E9 C2 02 SR3: CLR OK
116: 00EB D0 E0 SR4: POP ACC
117: 00ED D0 D0 POP PSW
118: 00EF 32 RETI
119: END
120:
121:
122:
123:
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
AC BIT D6
ACC DATA E0
ACK BIT 01 6
ADDR1 NUMBER 0030 14
B DATA F0
BR0 NUMBER 0010 11
BR2 NUMBER 0012 12
CR2 NUMBER 000A 9
CR3 NUMBER 000B 10
CY BIT D7
DPH DATA 83
DPL DATA 82
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
L1 CODE 0085 67
L2 CODE 008A 71
LEN NUMBER 0020 13
LL1 CODE 0039 29
LL2 CODE 0042 35
LOOP CODE 007B 62
MIN BIT 03 8
OK BIT 02 7
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
SR1 CODE 00D3 104
SR2 CODE 00D9 108
SR3 CODE 00E9 115
SR4 CODE 00EB 116
START CODE 0030 22
S_END BIT 00 5
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR CODE 00C0 95
TR0 BIT 8C
TR1 BIT 8E
TS CODE 00A3 81
TS1 CODE 00BD 93
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -