📄 i2c.lst
字号:
C51 COMPILER V7.06 I2C 09/06/2007 17:33:49 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN i2c.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE i2c.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <i2c.h>
2 void Delay(unsigned char i)
3 {
4 1 while(i>0)
5 1 i--;
6 1 }
7 void Start()
8 {
9 1 SDA=1;
10 1 SCL=1;
11 1 Delay(TIME);
12 1 SDA=0;
13 1 Delay(TIME);
14 1 SCL=0;
15 1 Delay(TIME);
16 1 }
17 void Stop()
18 {
19 1 SDA=0;
20 1 SCL=1;
21 1 Delay(TIME);
22 1 SDA=1;
23 1 Delay(TIME);
24 1 SCL=0;
25 1 Delay(TIME);
26 1 }
27 void Sent1()
28 {
29 1 SDA=1;
30 1 SCL=1;
31 1 Delay(TIME);
32 1 SCL=0;
33 1 Delay(TIME);
34 1 }
35 void Sent0()
36 {
37 1 SDA=0;
38 1 SCL=1;
39 1 Delay(TIME);
40 1 SCL=0;
41 1 Delay(TIME);
42 1 }
43 bit ACK_chack()
44 {
45 1 bit F0;
46 1 SDA=1;
47 1 SCL=1;
48 1 Delay(TIME/2);
49 1 F0=SDA;
50 1 Delay(TIME/2);
51 1 SCL=0;
52 1 Delay(TIME);
53 1 if(F0==0) return 1;
54 1 else return 0;
55 1 }
C51 COMPILER V7.06 I2C 09/06/2007 17:33:49 PAGE 2
56 void Write_c(unsigned char sent)
57 {
58 1 unsigned char i;
59 1 for(i=0;i<8;i++)
60 1 if((sent<<i)&0x80)
61 1 Sent1();
62 1 else
63 1 Sent0();
64 1 }
65 bit Write_nc(unsigned char *buffer,unsigned char n)
66 {
67 1 unsigned char i;
68 1 Start();
69 1 for(i=0;i<n;i++)
70 1 {
71 2 Write_c(*buffer);
72 2 if(!ACK_chack())
73 2 {
74 3 Stop();
75 3 return 0;
76 3 }
77 2 buffer=buffer+1;
78 2 }
79 1 Stop();
80 1 return 1;
81 1 }
82 unsigned char Read_c()
83 {
84 1 unsigned char b=0,i;
85 1 bit F0;
86 1 for(i=0;i<8;i++)
87 1 {
88 2 SDA=1;
89 2 SCL=1;
90 2 Delay(TIME/2);
91 2 F0=SDA;
92 2 Delay(TIME/2);
93 2 SCL=0;
94 2 if(F0==1)
95 2 {
96 3 b=b<<1;
97 3 b=b|0x01;
98 3 }
99 2 else b=b<<1;
100 2 }
101 1 return b;
102 1 }
103 bit Read_nc(unsigned char SlaveAdr,unsigned char n,unsigned char *buffer)
104 {
105 1 unsigned char i;
106 1 Start();
107 1 Write_c(SlaveAdr);
108 1 if(!ACK_chack())
109 1 return 0;
110 1 for(i=0;i<n;i++)
111 1 {
112 2 *buffer=Read_c();
113 2 if(i!=n)
114 2 Sent0(); //发送应答
115 2 else
116 2 Sent1(); //发送非应答
117 2 buffer=buffer+1;
C51 COMPILER V7.06 I2C 09/06/2007 17:33:49 PAGE 3
118 2 }
119 1 Stop();
120 1 return 1;
121 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 284 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -