📄 iic.lst
字号:
202 1 delay(1);
203 1 clk=1;
204 1 delay(1);
205 1 clk=0;
206 1 delay(1);
207 1
208 1
209 1 if(_data2&0x01)
210 1 sda=1;
211 1 else sda=0;
212 1 delay(1);
213 1 clk=1;
214 1 delay(1);
215 1 clk=0;
216 1 delay(1);
217 1
218 1
219 1 clk=1; //ack
220 1 delay(1);
221 1 clk=0;
222 1 delay(1);
223 1
224 1
225 1
226 1 if(!(_data1&0x01))
227 1 {
228 2 if(_data3&0x80)
229 2 sda=1;
230 2 else sda=0;
231 2 delay(1);
232 2 clk=1;
233 2 delay(1);
234 2 clk=0;
235 2 delay(1);
236 2
237 2 if(_data3&0x40)
238 2 sda=1;
239 2 else sda=0;
240 2 delay(1);
C51 COMPILER V7.06 IIC 06/14/2007 11:15:50 PAGE 5
241 2 clk=1;
242 2 delay(1);
243 2 clk=0;
244 2 delay(1);
245 2
246 2 if(_data3&0x20)
247 2 sda=1;
248 2 else sda=0;
249 2 delay(1);
250 2 clk=1;
251 2 delay(1);
252 2 clk=0;
253 2 delay(1);
254 2
255 2 if(_data3&0x10)
256 2 sda=1;
257 2 else sda=0;
258 2 delay(1);
259 2 clk=1;
260 2 delay(1);
261 2 clk=0;
262 2 delay(1);
263 2
264 2 if(_data3&0x08)
265 2 sda=1;
266 2 else sda=0;
267 2 delay(1);
268 2 clk=1;
269 2 delay(1);
270 2 clk=0;
271 2 delay(1);
272 2
273 2 if(_data3&0x04)
274 2 sda=1;
275 2 else sda=0;
276 2 delay(1);
277 2 clk=1;
278 2 delay(1);
279 2 clk=0;
280 2 delay(1);
281 2
282 2 if(_data3&0x02)
283 2 sda=1;
284 2 else sda=0;
285 2 delay(1);
286 2 clk=1;
287 2 delay(1);
288 2 clk=0;
289 2 delay(1);
290 2
291 2 if(_data3&0x01)
292 2 sda=1;
293 2 else sda=0;
294 2 delay(1);
295 2 clk=1;
296 2 delay(1);
297 2 clk=0;
298 2 delay(1);
299 2
300 2
301 2 clk=1; //ack
302 2 delay(1);
C51 COMPILER V7.06 IIC 06/14/2007 11:15:50 PAGE 6
303 2 clk=0;
304 2
305 2 delay(1);
306 2 sda=0;//stop bit
307 2 delay(1);
308 2 clk=1;
309 2 delay(1);
310 2 sda=1;
311 2 }
312 1 else
313 1 {
314 2 clk=1;
315 2 delay(1);
316 2 if(sda)
317 2 i=i+128;
318 2 clk=0;
319 2 delay(1);
320 2 clk=1;
321 2 delay(1);
322 2 if(sda)
323 2 i=i+64;
324 2 clk=0;
325 2 delay(1);
326 2 clk=1;
327 2 delay(1);
328 2 if(sda)
329 2 i=i+32;
330 2 clk=0;
331 2 delay(1);
332 2 clk=1;
333 2 delay(1);
334 2 if(sda)
335 2 i=i+16;
336 2 clk=0;
337 2 delay(1);
338 2 clk=1;
339 2 delay(1);
340 2 if(sda)
341 2 i=i+8;
342 2 clk=0;
343 2 delay(1);
344 2 clk=1;
345 2 delay(1);
346 2 if(sda)
347 2 i=i+4;
348 2 clk=0;
349 2 delay(1);
350 2 clk=1;
351 2 delay(1);
352 2 if(sda)
353 2 i=i+2;
354 2 clk=0;
355 2 delay(1);
356 2 clk=1;
357 2 delay(1);
358 2 if(sda)
359 2 i=i+1;
360 2 clk=0;
361 2 delay(1);
362 2
363 2
364 2
C51 COMPILER V7.06 IIC 06/14/2007 11:15:50 PAGE 7
365 2 sda=0;
366 2 delay(1);
367 2 clk=1; //ack
368 2 delay(1);
369 2 clk=0;
370 2
371 2 delay(1);
372 2 sda=0;//stop bit
373 2 delay(1);
374 2 clk=1;
375 2 delay(1);
376 2 sda=1;
377 2 }
378 1 return i;
379 1 }
380 //模拟SPI时序,data1,data2是写入的两个数据,这里仅返回第二个数据
381 //*************************************************************************
382
383 //*************************************************************************
384 void write_reg(unsigned char port,unsigned char reg,unsigned char dat)
385 {
386 1 send(0x90,(((port-1)<<4)+reg),dat);
387 1 }
388 //写寄存器,port为子串口的路数,reg为寄存器的地址,dat为写入寄存器的数据
389 //*************************************************************************
390
391 //*************************************************************************
392 unsigned char read_reg(unsigned char port,unsigned char reg)
393 {
394 1 return send(0x91,(((port-1)<<4)+reg),0x00);
395 1 }
396 //读寄存器,琾ort为子串口的路数,reg为寄存器的地址,返回寄存器的值
397 //***************************************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1231 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -