📄 iic.lst
字号:
176 2 break;
177 2 case IIC_AT24CXX_D6:
178 2 Pin_IIC_Scl_AT24CXX_D6=L_LEVEL;
179 2 break;
C51 COMPILER V7.50 IIC 08/12/2006 10:29:13 PAGE 4
180 2 case IIC_AT24CXX_D7:
181 2 Pin_IIC_Scl_AT24CXX_D7=L_LEVEL;
182 2 break;
183 2 case IIC_AT24CXX_D8:
184 2 Pin_IIC_Scl_AT24CXX_D8=L_LEVEL;
185 2 break;
186 2 }
187 1 }
188 void IIC_Start(void)
189 {
190 1 SDA_HIGH();
191 1 SCL_HIGH();
192 1 IIC_DELAY();
193 1 SDA_LOW();
194 1 SCL_LOW();
195 1 }
196
197 void IIC_Stop(void)
198 {
199 1 SCL_HIGH();
200 1 IIC_DELAY();
201 1 SDA_HIGH();
202 1 }
203
204 void IIC_Ack(BIT Ack)
205 {
206 1 if (Ack)
207 1 SDA_HIGH();
208 1 else
209 1 SDA_LOW();
210 1 SCL_HIGH();
211 1 IIC_DELAY();
212 1 SCL_LOW();
213 1 SDA_LOW();
214 1 }
215
216 BIT IIC_SendByte(BYTE IIC_Data)
217 {
218 1 BYTE DATA loop;
219 1 BIT DATA Error=0;
220 1 for (loop=0;loop<=7;loop++)
221 1 {
222 2 if (IIC_Data&(0x80>>loop))
223 2 SDA_HIGH();
224 2 else
225 2 SDA_LOW();
226 2 SCL_HIGH();
227 2 IIC_DELAY();
228 2 SCL_LOW();
229 2 IIC_DELAY();
230 2 }
231 1 SDA_HIGH();
232 1 SCL_HIGH();
233 1 IIC_DELAY();
234 1 if (SDA_IN()||(SCL_IN()==0))
235 1 Error=btIIC_ERROR;
236 1 SCL_LOW();
237 1 SDA_LOW();
238 1 return Error;
239 1 }
240
241 void IIC_ReceiveByte(BYTE *ptIIC_Data)
C51 COMPILER V7.50 IIC 08/12/2006 10:29:13 PAGE 5
242 {
243 1 BYTE loop;
244 1
245 1 *ptIIC_Data=0;
246 1 SDA_HIGH();
247 1 for (loop=0;(loop<=7);loop++)
248 1 {
249 2 SCL_LOW();
250 2 IIC_DELAY();
251 2 SCL_HIGH();
252 2 IIC_DELAY();
253 2 if (SDA_IN())
254 2 *ptIIC_Data|=(0x80>>loop);
255 2 }
256 1 SCL_LOW();
257 1 SDA_LOW();
258 1 }
259
260 BIT IIC_Write(BYTE Addr,BYTE SubAddr,BYTE Number)
261 {
262 1 BYTE DATA loop;
263 1 BIT DATA Error=btIIC_RIGHT;
264 1 IIC_Start();
265 1 if (IIC_SendByte(Addr))
266 1 Error=btIIC_ERROR;
267 1 if (IIC_SendByte(SubAddr))
268 1 Error=btIIC_ERROR;
269 1 for (loop=0;loop<Number;loop++)
270 1 {
271 2 if (IIC_SendByte(*ptGpBuffer++))
272 2 Error=btIIC_ERROR;
273 2 }
274 1 IIC_Stop();
275 1 return Error;
276 1 }
277
278 BIT IIC_WriteW(BYTE Addr,WORD SubAddr,BYTE Number)
279 {
280 1 BYTE DATA loop;
281 1 BIT DATA Error=btIIC_RIGHT;
282 1 IIC_Start();
283 1 if (IIC_SendByte(Addr))
284 1 Error=btIIC_ERROR;
285 1 if (IIC_SendByte(Hi_Byte(SubAddr)))
286 1 Error=btIIC_ERROR;
287 1 if (IIC_SendByte(Lo_Byte(SubAddr)))
288 1 Error=btIIC_ERROR;
289 1 for (loop=0;loop<Number;loop++)
290 1 {
291 2 if (IIC_SendByte(*ptGpBuffer++))
292 2 Error=btIIC_ERROR;
293 2 }
294 1 IIC_Stop();
295 1 return Error;
296 1 }
297
298 BIT IIC_Read(BYTE Addr,BYTE SubAddr,BYTE Number)
299 {
300 1 BIT DATA Error=0;
301 1 BYTE DATA loop;
302 1 IIC_Start();
303 1 if (IIC_SendByte(Addr))
C51 COMPILER V7.50 IIC 08/12/2006 10:29:13 PAGE 6
304 1 Error=btIIC_ERROR;
305 1 if (IIC_SendByte(SubAddr))
306 1 Error=btIIC_ERROR;
307 1 IIC_Start();
308 1 if (IIC_SendByte(Addr+1))
309 1 Error=btIIC_ERROR;
310 1 for (loop=0;loop<Number;loop++)
311 1 {
312 2 IIC_ReceiveByte(ptGpBuffer++);
313 2 IIC_Ack(loop/(Number-1));
314 2 }
315 1 IIC_Stop();
316 1 return Error;
317 1 }
318
319 BIT IIC_ReadW(BYTE Addr,WORD SubAddr,BYTE Number)
320 {
321 1 BIT DATA Error=0;
322 1 BYTE DATA loop;
323 1 IIC_Start();
324 1 if (IIC_SendByte(Addr))
325 1 Error=btIIC_ERROR;
326 1 if (IIC_SendByte(Hi_Byte(SubAddr)))
327 1 Error=btIIC_ERROR;
328 1 if (IIC_SendByte(Lo_Byte(SubAddr)))
329 1 Error=btIIC_ERROR;
330 1 IIC_Start();
331 1 if (IIC_SendByte(Addr+1))
332 1 Error=btIIC_ERROR;
333 1 for (loop=0;loop<Number;loop++)
334 1 {
335 2 IIC_ReceiveByte(ptGpBuffer++);
336 2 IIC_Ack(loop/(Number-1));
337 2 }
338 1 IIC_Stop();
339 1 return Error;
340 1 }
341
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1040 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 9
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -