📄 i2c.lst
字号:
C51 COMPILER V7.02b I2C 11/12/2004 14:52:13 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE I2C.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <INTRINS.H>
3 #include "i2c.h"
4
5 void I2CSomeNOP(void)
6 {
7 1 _nop_();_nop_();_nop_();
8 1 _nop_();_nop_();_nop_();
9 1 }
10
11 void I2CStart(void)
12 {
13 1 EA=0;
14 1 I2CSDA=1; I2CSCL=1; I2CSomeNOP();//INI
15 1 I2CSDA=0; I2CSomeNOP(); //START
16 1 I2CSCL=0;
17 1 }
18
19 void I2CStop(void)
20 {
21 1 I2CSCL=0; I2CSDA=0; I2CSomeNOP(); //INI
22 1 I2CSCL=1; I2CSomeNOP(); I2CSDA=1; //STOP
23 1 EA=1;
24 1 }
25
26 bit I2CWaitAck(void)
27 {
28 1 unsigned char errtime=255;//因故障接收方无ACK,超时值为255。
29 1 I2CSDA=1;I2CSomeNOP();
30 1 I2CSCL=1;I2CSomeNOP();
31 1 while(I2CSDA) {errtime--; if (!errtime) {I2CStop();return false;}}
32 1 I2CSCL=0;
33 1 return true;
34 1 }
35
36 void I2CSendAck(void)
37 {
38 1 I2CSDA=0; I2CSomeNOP();
39 1 I2CSCL=1; I2CSomeNOP();
40 1 I2CSCL=0;
41 1 }
42
43 void I2CSendNotAck(void)
44 {
45 1 I2CSDA=1; I2CSomeNOP();
46 1 I2CSCL=1; I2CSomeNOP();
47 1 I2CSCL=0;
48 1 }
49
50 void I2CSendByte(unsigned char ch)
51 {
52 1 unsigned char i=8;
53 1 while (i--)
54 1 {
55 2 I2CSCL=0;_nop_();
C51 COMPILER V7.02b I2C 11/12/2004 14:52:13 PAGE 2
56 2 I2CSDA=(bit)(ch&0x80); ch<<=1; I2CSomeNOP();
57 2 I2CSCL=1; I2CSomeNOP();
58 2 }
59 1 I2CSCL=0;
60 1 }
61
62 unsigned char I2CReceiveByte(void)
63 {
64 1 unsigned char i=8;
65 1 unsigned char ddata=0;
66 1 I2CSDA=1;
67 1 while (i--)
68 1 {
69 2 ddata<<=1;
70 2 I2CSCL=0;I2CSomeNOP();
71 2 I2CSCL=1;I2CSomeNOP();
72 2 ddata|=I2CSDA;
73 2 }
74 1 I2CSCL=0;
75 1 return ddata;
76 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 137 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -