📄 ex8-5.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: EX8-5.ASM
Object File: EX8-5.HEX
List File: EX8-5.LST
Line I Addr Code Source
1: N 10 ACK BIT 10H ;应答标志位
2: N 50 SLA DATA 50H ;器件地址字
3: N 51 SUBA DATA 51H ;器件子地址
4: N 52 NUMBYTE DATA 52H ;读/写字节数
5: B B1 SDA BIT P3.1
6: B B0 SCL BIT P3.0 ;I2C总线定义
7: N 0030 MTD EQU 30H ;发送数据缓存区首地址(30H-3FH)
8: N 0040 MRD EQU 40H ;接收数据缓存区首地址(40H-4FH)
9: N 0000 ORG 0000H
10: 0000 01 D2 AJMP MAIN
11: N 0030 ORG 0030H
12:
13: ;*********************************************************************
14: ;名称:STRRT
15: ;描述:启动I2C总线子程序—发送I2C总线起始条件
16: ;*********************************************************************
17: 0030 D2 B1 START: SETB SDA ;发送起始条件数据信号
18: 0032 00 NOP ;起始条件建立时间大于4.7us
19: 0033 D2 B0 SETB SCL ;发送起始条件的时钟信号
20: 0035 00 NOP
21: 0036 00 NOP
22: 0037 00 NOP
23: 0038 00 NOP
24: 0039 00 NOP ;起始条件锁定时间大于4.7us
25: 003A C2 B1 CLR SDA ;发送起始信号
26: 003C 00 NOP
27: 003D 00 NOP
28: 003E 00 NOP
29: 003F 00 NOP ;起始条件锁定时间大于4.7us
30: 0040 C2 B0 CLR SCL ;钳住I2C总线,准备发送或接收数据
31: 0042 00 NOP
32: 0043 22 RET
33:
34: ;*********************************************************************
35: ;名称:STOP
36: ;描述:停止I2C总线子程序—发送I2C总线停止条件
37: ;*********************************************************************
38: 0044 C2 B1 STOP: CLR SDA ;发送停止条件的数据信号
39: 0046 00 NOP
40: 0047 00 NOP
41: 0048 D2 B0 SETB SCL ;发送停止条件的时钟信号
42: 004A 00 NOP
43: 004B 00 NOP
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 004C 00 NOP
45: 004D 00 NOP
46: 004E 00 NOP ;起始条件建立时间大于4.7us
47: 004F D2 B1 SETB SDA ;发送I2C总线停止信号
48: 0051 00 NOP
49: 0052 00 NOP
50: 0053 00 NOP
51: 0054 00 NOP
52: 0055 00 NOP ;延迟时间大于4.7us
53: 0056 22 RET
54:
55: ;*********************************************************************
56: ;名称:MACK
57: ;描述:发送应答信号子程序
58: ;*********************************************************************
59: 0057 C2 B1 MACK: CLR SDA ;将SDA置0
60: 0059 00 NOP
61: 005A 00 NOP
62: 005B D2 B0 SETB SCL
63: 005D 00 NOP
64: 005E 00 NOP
65: 005F 00 NOP
66: 0060 00 NOP
67: 0061 00 NOP ;保持数据时间,大于4.7us
68: 0062 C2 B0 CLR SCL
69: 0064 00 NOP
70: 0065 00 NOP
71: 0066 22 RET
72:
73: ;*********************************************************************
74: ;名称:MNACK
75: ;描述:发送非应答信号子程序
76: ;*********************************************************************
77: 0067 D2 B1 MNACK: SETB SDA ;将SDA置1
78: 0069 00 NOP
79: 006A 00 NOP
80: 006B D2 B0 SETB SCL
81: 006D 00 NOP
82: 006E 00 NOP
83: 006F 00 NOP
84: 0070 00 NOP
85: 0071 00 NOP
86: 0072 C2 B0 CLR SCL ;保持数据时间,大于4.7us
87: 0074 00 NOP
88: 0075 00 NOP
89: 0076 22 RET
90:
91: ;*********************************************************************
92: ;名称:CACK
93: ;描述:检查应答位子程序,返回值:ACK=1时表示有应答
94: ;*********************************************************************
95: 0077 D2 B1 CACK: SETB SDA
96: 0079 00 NOP
97: 007A 00 NOP
98: 007B D2 B0 SETB SCL
99: 007D C2 10 CLR ACK
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 007F 00 NOP
101: 0080 00 NOP
102: 0081 A2 B1 MOV C,SDA
103: 0083 40 02 JC CEND
104: 0085 D2 10 SETB ACK ;判断应答位
105: 0087 00 CEND: NOP
106: 0088 C2 B0 CLR SCL
107: 008A 00 NOP
108: 008B 22 RET
109:
110: ;*********************************************************************
111: ;名称:WRBYTE
112: ;描述:发送字节子程序,字节数据放入ACC
113: ;*********************************************************************
114: 008C 78 08 WRBYTE: MOV R0,#08H
115: 008E 33 WLP: RLC A ;取数据位
116: 008F 40 06 JC WRI
117: 0091 80 12 SJMP WRO ;判断数据位
118: 0093 D8 F9 WLP1: DJNZ R0,WLP
119: 0095 00 NOP
120: 0096 22 RET
121: 0097 D2 B1 WRI: SETB SDA ;发送1
122: 0099 00 NOP
123: 009A D2 B0 SETB SCL
124: 009C 00 NOP
125: 009D 00 NOP
126: 009E 00 NOP
127: 009F 00 NOP
128: 00A0 00 NOP
129: 00A1 C2 B0 CLR SCL
130: 00A3 80 EE SJMP WLP1
131: 00A5 C2 B1 WRO: CLR SDA ;发送0
132: 00A7 00 NOP
133: 00A8 D2 B0 SETB SCL
134: 00AA 00 NOP
135: 00AB 00 NOP
136: 00AC 00 NOP
137: 00AD 00 NOP
138: 00AE 00 NOP
139: 00AF C2 B0 CLR SCL
140: 00B1 80 E0 SJMP WLP1
141:
142:
143: ;*********************************************************************
144: ;名称:ADC517
145: ;描述:启动MAX517进行D/A转换子程序,转换数据位于40H
146: ;*********************************************************************
147: 00B3 12 00 30 DAC517: LCALL START
148: 00B6 74 58 MOV A,#58H
149: 00B8 12 00 8C LCALL WRBYTE
150: 00BB 12 00 67 LCALL MNACK
151: 00BE 74 00 MOV A,#0
152: 00C0 12 00 8C LCALL WRBYTE
153: 00C3 12 00 67 LCALL MNACK
154: 00C6 E5 40 MOV A,40H
155: 00C8 12 00 8C LCALL WRBYTE
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 00CB 12 00 67 LCALL MNACK
157: 00CE 12 00 44 LCALL STOP
158: 00D1 22 RET
159:
160: ;*********************************************************************
161: ;名称:MAIN
162: ;描述:主程序
163: ;*********************************************************************
164: 00D2 75 81 60 MAIN: MOV SP,#60H
165: 00D5 75 40 00 MOV 40H,#00H
166: 00D8 12 00 B3 LOOP: LCALL DAC517
167: 00DB 05 40 INC 40H
168: 00DD 80 F9 SJMP LOOP
169:
170: END
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
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 10 1
B DATA F0
CACK CODE 0077 95
CEND CODE 0087 105
CY BIT D7
DAC517 CODE 00B3 147
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
LOOP CODE 00D8 166
MACK CODE 0057 59
MAIN CODE 00D2 164
MNACK CODE 0067 77
MRD NUMBER 0040 8
MTD NUMBER 0030 7
NUMBYTE DATA 52 4
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
RB8 BIT 9A
RD BIT B7
REN BIT 9C
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 6
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCL BIT B0 6
SCON DATA 98
SDA BIT B1 5
SINT CODE 0023
SLA DATA 50 2
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0030 17
STOP CODE 0044 38
SUBA DATA 51 3
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
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WLP CODE 008E 115
WLP1 CODE 0093 118
WR BIT B6
WRBYTE CODE 008C 114
WRI CODE 0097 121
WRO CODE 00A5 131
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -