📄 i2c_slaver.lst
字号:
C51 COMPILER V7.50 I2C_SLAVER 03/02/2009 14:25:10 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE I2C_SLAVER
OBJECT MODULE PLACED IN I2C_slaver.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE I2C_slaver.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "STC11L60XE.h"
2 #include "INTRINS.H"
3 #include "globe.h"
4
5 bit SDA_LEVEL;
6 bit CLK_LEVEL;
7 bit SDA_LEVEL_BAK;
8
9 bit Buffer_Return = 0;
10
11
12 extern unsigned char xdata SDA_DATA[];
13
14
15 void Recevie_Byte( unsigned char *Recevie_Pointer);
16
17 unsigned int Byte_var1 = 0;
18 unsigned int var = 0;
19
20 void Recevie_Byte1(void)
21 {
22 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
23 1 TL0 =0xef;
24 1 TF0 = 0;
25 1 while(CLK_PIN == 0)//等待CLK 的0完成
26 1 {
27 2 if(TF0 == 1)
28 2 {
29 3 return;
30 3 }
31 2
32 2 }
33 1 //读 BYTE1 的第1 位
34 1 SDA_LEVEL = SDA_PIN;//读SDA数据
35 1
36 1 if(SDA_LEVEL == 1)
37 1 {
38 2 SDA_DATA[var] |= 0x01;
39 2 SDA_DATA[var] = SDA_DATA[var] << 1;
40 2 }
41 1 else
42 1 {
43 2 SDA_DATA[var] &= 0xfe;
44 2 SDA_DATA[var] = SDA_DATA[var] << 1;
45 2 }
46 1
47 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
48 1 TL0 =0xef;
49 1 TF0 = 0;
50 1 while(CLK_PIN == 1)//等待CLK 的 1完成
51 1 {
52 2 if(TF0 == 1)
53 2 {
54 3 return;
55 3 }
C51 COMPILER V7.50 I2C_SLAVER 03/02/2009 14:25:10 PAGE 2
56 2
57 2 }
58 1
59 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
60 1 TL0 =0xef;
61 1 TF0 = 0;
62 1 while(CLK_PIN == 0)//等待CLK 的0完成
63 1 {
64 2 if(TF0 == 1)
65 2 {
66 3 return;
67 3 }
68 2
69 2 }
70 1
71 1 //读 BYTE1 的第2 位
72 1 SDA_LEVEL = SDA_PIN;//读SDA数据
73 1 if(SDA_LEVEL == 1)
74 1 {
75 2 SDA_DATA[var] |= 0x01;
76 2 SDA_DATA[var] = SDA_DATA[var] << 1;
77 2 }
78 1 else
79 1 {
80 2 SDA_DATA[var] &= 0xfe;
81 2 SDA_DATA[var] = SDA_DATA[var] << 1;
82 2 }
83 1
84 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
85 1 TL0 =0xef;
86 1 TF0 = 0;
87 1 while(CLK_PIN == 1)//等待CLK 的 1完成
88 1 {
89 2 if(TF0 == 1)
90 2 {
91 3 return;
92 3 }
93 2
94 2 }
95 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
96 1 TL0 =0xef;
97 1 TF0 = 0;
98 1 while(CLK_PIN == 0)//等待CLK 的0完成
99 1 {
100 2 if(TF0 == 1)
101 2 {
102 3 return;
103 3 }
104 2
105 2 }
106 1
107 1 //读 BYTE1 的第3 位
108 1 SDA_LEVEL = SDA_PIN;//读SDA数据
109 1 if(SDA_LEVEL == 1)
110 1 {
111 2 SDA_DATA[var] |= 0x01;
112 2 SDA_DATA[var] = SDA_DATA[var] << 1;
113 2 }
114 1 else
115 1 {
116 2 SDA_DATA[var] &= 0xfe;
117 2 SDA_DATA[var] = SDA_DATA[var] << 1;
C51 COMPILER V7.50 I2C_SLAVER 03/02/2009 14:25:10 PAGE 3
118 2 }
119 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
120 1 TL0 =0xef;
121 1 TF0 = 0;
122 1 while(CLK_PIN == 1)//等待CLK 的1完成
123 1 {
124 2 if(TF0 == 1)
125 2 {
126 3 return;
127 3 }
128 2
129 2 }
130 1
131 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
132 1 TL0 =0xef;
133 1 TF0 = 0;
134 1 while(CLK_PIN == 0)//等待CLK 的0完成
135 1 {
136 2 if(TF0 == 1)
137 2 {
138 3 return;
139 3 }
140 2
141 2 }
142 1
143 1 //读 BYTE1 的第4 位
144 1 SDA_LEVEL = SDA_PIN;//读SDA数据
145 1 if(SDA_LEVEL == 1)
146 1 {
147 2 SDA_DATA[var] |= 0x01;
148 2 SDA_DATA[var] = SDA_DATA[var] << 1;
149 2 }
150 1 else
151 1 {
152 2 SDA_DATA[var] &= 0xfe;
153 2 SDA_DATA[var] = SDA_DATA[var] << 1;
154 2 }
155 1
156 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
157 1 TL0 =0xef;
158 1 TF0 = 0;
159 1 while(CLK_PIN == 1)//等待CLK 的1完成
160 1 {
161 2 if(TF0 == 1)
162 2 {
163 3
164 3 return;
165 3 }
166 2
167 2 }
168 1
169 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
170 1 TL0 =0xef;
171 1 TF0 = 0;
172 1 while(CLK_PIN == 0)//等待CLK 的0完成
173 1 {
174 2 if(TF0 == 1)
175 2 {
176 3 return;
177 3 }
178 2
179 2 }
C51 COMPILER V7.50 I2C_SLAVER 03/02/2009 14:25:10 PAGE 4
180 1
181 1 //读 BYTE1 的第5 位
182 1 SDA_LEVEL = SDA_PIN;//读SDA数据
183 1 if(SDA_LEVEL == 1)
184 1 {
185 2 SDA_DATA[var] |= 0x01;
186 2 SDA_DATA[var] = SDA_DATA[var] << 1;
187 2 }
188 1 else
189 1 {
190 2 SDA_DATA[var] &= 0xfe;
191 2 SDA_DATA[var] = SDA_DATA[var] << 1;
192 2 }
193 1
194 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
195 1 TL0 =0xef;
196 1 TF0 = 0;
197 1 while(CLK_PIN == 1)//等待CLK 的 1完成
198 1 {
199 2 if(TF0 == 1)
200 2 {
201 3 return;
202 3 }
203 2
204 2 }
205 1
206 1
207 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
208 1 TL0 =0xef;
209 1 TF0 = 0;
210 1 while(CLK_PIN == 0)//等待CLK 的0完成
211 1 {
212 2 if(TF0 == 1)
213 2 {
214 3 return;
215 3 }
216 2
217 2 }
218 1
219 1 //读 BYTE1 的第6 位
220 1 SDA_LEVEL = SDA_PIN;//读SDA数据
221 1 if(SDA_LEVEL == 1)
222 1 {
223 2 SDA_DATA[var] |= 0x01;
224 2 SDA_DATA[var] = SDA_DATA[var] << 1;
225 2 }
226 1 else
227 1 {
228 2 SDA_DATA[var] &= 0xfe;
229 2 SDA_DATA[var] = SDA_DATA[var] << 1;
230 2 }
231 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
232 1 TL0 =0xef;
233 1 TF0 = 0;
234 1 while(CLK_PIN == 1)//等待CLK 的1完成
235 1 {
236 2 if(TF0 == 1)
237 2 {
238 3 return;
239 3 }
240 2
241 2 }
C51 COMPILER V7.50 I2C_SLAVER 03/02/2009 14:25:10 PAGE 5
242 1
243 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
244 1 TL0 =0xef;
245 1 TF0 = 0;
246 1 while(CLK_PIN == 0)//等待CLK 的0完成
247 1 {
248 2 if(TF0 == 1)
249 2 {
250 3 return;
251 3 }
252 2 }
253 1
254 1 //读 BYTE1 的第7 位
255 1 SDA_LEVEL = SDA_PIN;//读SDA数据
256 1 if(SDA_LEVEL == 1)
257 1 {
258 2 SDA_DATA[var] |= 0x01;
259 2 SDA_DATA[var] = SDA_DATA[var] << 1;
260 2 }
261 1 else
262 1 {
263 2 SDA_DATA[var] &= 0xfe;
264 2 SDA_DATA[var] = SDA_DATA[var] << 1;
265 2 }
266 1
267 1 TH0 =0xed;//18.432MHz晶体,16位方式3ms
268 1 TL0 =0xef;
269 1 TF0 = 0;
270 1 while(CLK_PIN == 1)//等待CLK 的 1完成
271 1 {
272 2 if(TF0 == 1)
273 2 {
274 3 return;
275 3 }
276 2
277 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -