📄 iic.lst
字号:
108 2 SCL=LOW;
109 2 Nop();/*>4.7us*/
110 2 Nop();
111 2 Nop();
112 2 Nop();
113 2 Nop();
114 2 Nop();
115 2 }
116 1 Nop();
117 1 Nop();
118 1 SDA=HIGH;
119 1 Nop();
120 1 Nop();
121 1 SCL=HIGH;
122 1 Nop();/*>4us*/
123 1 Nop();
124 1 Nop();
125 1 Nop();
126 1 Nop();
127 1 if(SDA==HIGH)
128 1 Ack=FALSE;
129 1 else
130 1 Ack=TRUE;
131 1 SCL=LOW;
132 1 Nop();/*>4.7us*/
133 1 Nop();
134 1 Nop();
135 1 Nop();
136 1 Nop();
137 1 Nop();
138 1 }
139
140 VOID IIC_Ack(BOOL ack)
141 {
142 1 if(ack==FALSE)
143 1 SDA=LOW;
144 1 else
145 1 SDA=HIGH;
146 1 Nop();
147 1 SCL=HIGH;
148 1 Nop();/*>4us*/
149 1 Nop();
150 1 Nop();
151 1 Nop();
152 1 Nop();
153 1 SCL=LOW;
154 1 Nop();/*>4.7us*/
155 1 Nop();
156 1 Nop();
157 1 Nop();
158 1 Nop();
159 1 Nop();
160 1 }
161
C51 COMPILER V7.50 IIC 05/27/2006 14:01:00 PAGE 11
162 /*
163 BOOL IRcvByte(BYTE sla,BYTE *c)
164 {
165 IIC_Start();
166 IIC_Write(sla+1);
167 if(ack==FALSE)return FALSE;
168 *c=IIC_Read();
169 IIC_Ack(TRUE);
170 IIC_Stop();
171 return TRUE;
172 }
173
174 BOOL IRcvStr(BYTE sla,BYTE suba,BYTE *s,BYTE no)
175 {
176 BYTE i;
177 IIC_Start();
178 IIC_Write(sla);
179 if(ack==FALSE)return FALSE;
180 IIC_Write(suba);
181 if(ack==FALSE)return FALSE;
182 IIC_Start();
183 IIC_Write(sla+1);
184 if(ack==FALSE)return FALSE;
185 for(i=0;i<no-1;i++)
186 {
187 *s=IIC_Read();
188 IIC_Ack(FALSE);
189 s++;
190 }
191 *s=IIC_Read();
192 IIC_Ack(TRUE);
193 IIC_Stop();
194 return TRUE;
195 }
196 */
197
198 BOOL ISendByte(BYTE sla,BYTE c)
199 {
200 1 IIC_Start();
201 1 IIC_Write(sla);
202 1 if(Ack==FALSE)return FALSE;
203 1 IIC_Write(c);
204 1 if(Ack==FALSE)return FALSE;
205 1 IIC_Stop();
206 1 return TRUE;
207 1 }
208
209 BOOL ISendStr(BYTE sla,BYTE suba,BYTE *s,BYTE no)
210 {
211 1 BYTE data i;
212 1 IIC_Start();
213 1 IIC_Write(sla);
214 1 if(Ack==FALSE)return FALSE;
215 1 IIC_Write(suba);
216 1 if(Ack==FALSE)return FALSE;
217 1 for(i=0;i<no;i++)
218 1 {
219 2 IIC_Write(*s);
220 2 if(Ack==FALSE)return FALSE;
221 2 s++;
222 2 }
223 1 IIC_Stop();
C51 COMPILER V7.50 IIC 05/27/2006 14:01:00 PAGE 12
224 1 return TRUE;
225 1 }
226
227 BOOL Read_eeprom(BYTE sla,WORD adr,BYTE *s,BYTE no)
228 {
229 1 BYTE i;
230 1 IIC_Start();
231 1 IIC_Write(sla);
232 1 if(Ack==FALSE)return FALSE;
233 1 IIC_Write((adr&0xff00)>>8);
234 1 if(Ack==FALSE)return FALSE;
235 1 IIC_Write(adr&0x00ff);
236 1 if(Ack==FALSE)return FALSE;
237 1 IIC_Start();
238 1 IIC_Write(sla+1);
239 1 if(Ack==FALSE)return FALSE;
240 1 for(i=0;i<no-1;i++)
241 1 {
242 2 *s=IIC_Read();
243 2 IIC_Ack(FALSE);
244 2 s++;
245 2 }
246 1 *s=IIC_Read();
247 1 IIC_Ack(TRUE);
248 1 IIC_Stop();
249 1 return TRUE;
250 1 }
251
252 BOOL Write_eeprom(BYTE sla,WORD adr,BYTE *s,BYTE no)
253 {
254 1 BYTE i;
255 1 IIC_Start();
256 1 IIC_Write(sla);
257 1 if(Ack==FALSE)return FALSE;
258 1 IIC_Write((adr&0xff00)>>8);
259 1 if(Ack==FALSE)return FALSE;
260 1 IIC_Write(adr&0x00ff);
261 1 if(Ack==FALSE)return FALSE;
262 1 for(i=0;i<no;i++)
263 1 {
264 2 IIC_Write(*s);
265 2 if(Ack==FALSE)return FALSE;
266 2 s++;
267 2 }
268 1 IIC_Stop();
269 1 return TRUE;
270 1 }
C51 COMPILER V7.50 IIC 05/27/2006 14:01:00 PAGE 13
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION Com002F (BEGIN)
0000 L?0048:
0000 L?0049:
0000 7401 MOV A,#01H
0002 29 ADD A,R1
0003 F9 MOV R1,A
0004 E4 CLR A
0005 3A ADDC A,R2
0006 FA MOV R2,A
0007 22 RET
; FUNCTION Com002F (END)
; FUNCTION IIC_Start (BEGIN)
; SOURCE LINE # 18
; SOURCE LINE # 19
; SOURCE LINE # 20
0000 D291 SETB P1_1
; SOURCE LINE # 21
0002 00 NOP
; SOURCE LINE # 22
0003 D290 SETB P1_0
; SOURCE LINE # 23
0005 00 NOP
; SOURCE LINE # 24
0006 00 NOP
; SOURCE LINE # 25
0007 00 NOP
; SOURCE LINE # 26
0008 00 NOP
; SOURCE LINE # 27
0009 00 NOP
; SOURCE LINE # 28
000A 00 NOP
; SOURCE LINE # 29
000B C291 CLR P1_1
; SOURCE LINE # 30
000D 00 NOP
; SOURCE LINE # 31
000E 00 NOP
; SOURCE LINE # 32
000F 00 NOP
; SOURCE LINE # 33
0010 00 NOP
; SOURCE LINE # 34
0011 00 NOP
; SOURCE LINE # 35
0012 C290 CLR P1_0
; SOURCE LINE # 36
0014 00 NOP
; SOURCE LINE # 37
0015 00 NOP
; SOURCE LINE # 38
0016 00 NOP
; SOURCE LINE # 39
0017 00 NOP
; SOURCE LINE # 40
0018 00 NOP
; SOURCE LINE # 41
0019 00 NOP
C51 COMPILER V7.50 IIC 05/27/2006 14:01:00 PAGE 14
; SOURCE LINE # 42
001A 22 RET
; FUNCTION IIC_Start (END)
; FUNCTION IIC_Stop (BEGIN)
; SOURCE LINE # 44
; SOURCE LINE # 45
; SOURCE LINE # 46
0000 C291 CLR P1_1
; SOURCE LINE # 47
0002 00 NOP
; SOURCE LINE # 48
0003 D290 SETB P1_0
; SOURCE LINE # 49
0005 00 NOP
; SOURCE LINE # 50
0006 00 NOP
; SOURCE LINE # 51
0007 00 NOP
; SOURCE LINE # 52
0008 00 NOP
; SOURCE LINE # 53
0009 00 NOP
; SOURCE LINE # 54
000A D291 SETB P1_1
; SOURCE LINE # 55
000C 00 NOP
; SOURCE LINE # 56
000D 00 NOP
; SOURCE LINE # 57
000E 00 NOP
; SOURCE LINE # 58
000F 00 NOP
; SOURCE LINE # 59
0010 22 RET
; FUNCTION IIC_Stop (END)
; FUNCTION IIC_Read (BEGIN)
; SOURCE LINE # 61
; SOURCE LINE # 62
; SOURCE LINE # 63
;---- Variable 'IIC_data' assigned to Register 'R7' ----
0000 E4 CLR A
0001 FF MOV R7,A
; SOURCE LINE # 65
0002 D291 SETB P1_1
; SOURCE LINE # 66
;---- Variable 'i' assigned to Register 'R6' ----
0004 FE MOV R6,A
0005 ?C0003:
; SOURCE LINE # 67
; SOURCE LINE # 68
0005 00 NOP
; SOURCE LINE # 69
0006 C290 CLR P1_0
; SOURCE LINE # 70
0008 00 NOP
; SOURCE LINE # 71
0009 00 NOP
; SOURCE LINE # 72
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -