📄 iic.lst
字号:
170 {
171 Start_I2c(); //启动总线
172 SendByte(sla); //发送器件地址
173 if(ack==0)return(0);
174 SendByte(c); //发送数据
175 if(ack==0)return(0);
176 Stop_I2c(); //结束总线
177 return(1);
178 }
179 */
C51 COMPILER V8.17 IIC 03/09/2009 15:54:45 PAGE 4
180 /*******************************************************************
181 功能:向有子地址器件发送多字节数据函数
182 函数原型: bit ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);
183 功能: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
184 地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。
185 如果返回1表示操作成功,否则操作有误。
186 注意: 使用前必须已结束总线。
187 ********************************************************************/
188 /*
189 bit IISendByte(INT8U sla,INT8U suba,ININT8U c)
190 {
191 Start_I2c(); //启动总线
192 SendByte(sla); //发送器件地址
193 if(ack==0)return(0);
194 SendByte(suba); //发送器件子地址
195 if(ack==0)return(0);
196 SendByte(c); //发送数据
197 if(ack==0)return(0);
198 Stop_I2c(); //结束总线
199 return(1);
200 }
201 */
202
203 bit ISendStr(INT8U sla,INT8U suba,INT8U *s,INT8U no)
204 {
205 1 INT8U i;
206 1 Start_I2c(); /*启动总线*/
207 1 SendByte(sla); /*发送器件地址*/
208 1 if(ack==0)return(0);
209 1 printf("abcd\n");
210 1 SendByte(suba); /*发送器件子地址*/
211 1 if(ack==0)return(0);
212 1
213 1 for(i=0;i<no;i++)
214 1 {
215 2 SendByte(*s); /*发送数据*/
216 2 if(ack==0)return(0);
217 2 s++;
218 2 }
219 1 Stop_I2c(); /*结束总线*/
220 1 return(1);
221 1 }
222 /*******************************************************************
223 功能:向无子地址器件发送多字节数据函数
224 函数原型: bit ISendStr(uchar sla,ucahr *s,uchar no);
225 功能: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件
226 地址sla,发送内容是s指向的内容,发送no个字节。
227 如果返回1表示操作成功,否则操作有误。
228 注意: 使用前必须已结束总线。
229 ********************************************************************/
230 /*
231 bit ISendStrExt(INT8U sla,INT8U *s,INT8U no)
232 {
233 INT8U i;
234
235 Start_I2c(); //启动总线//
236 SendByte(sla); //发送器件地址//
237 if(ack==0)return(0);
238
239 for(i=0;i<no;i++)
240 {
241 SendByte(*s); //发送数据//
C51 COMPILER V8.17 IIC 03/09/2009 15:54:45 PAGE 5
242 if(ack==0)return(0);
243 s++;
244 }
245 Stop_I2c(); //结束总线//
246 return(1);
247 }
248 */
249 /*******************************************************************
250 功能:向无子地址器件读字节数据函数
251 函数原型: bit IRcvByte(INT8U sla,INT8U *c);
252 功能: 从启动总线到发送地址,读数据,结束总线的全过程,从器件地
253 址sla,返回值在c.
254 如果返回1表示操作成功,否则操作有误。
255 注意: 使用前必须已结束总线。
256 ********************************************************************/
257 /*
258 bit IRcvByte(INT8U sla,INT8U *c)
259 {
260 Start_I2c(); //启动总线//
261 SendByte(sla+1); //发送器件地址//
262 if(ack==0)return(0);
263 *c=RcvByte(); //读取数据//
264 Ack_I2c(1); //发送非就答位//
265 Stop_I2c(); //结束总线//
266 return(1);
267 }
268 */
269 /*******************************************************************
270 功能:向有子地址器件读取多字节数据函数
271 函数原型: bit ISendStr(INT8U sla,INT8U suba,INT8U *s,INT8U no);
272 功能: 从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件
273 地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。
274 如果返回1表示操作成功,否则操作有误。
275 注意: 使用前必须已结束总线。
276 ********************************************************************/
277 bit IRcvStr(INT8U sla,INT8U suba,INT8U *s,INT8U no)
278 {
279 1 INT8U xdata i;
280 1
281 1 Start_I2c(); /*启动总线*/
282 1 SendByte(sla); /*发送器件地址*/
283 1 if(ack==0)return(0);
284 1 printf("efgh\n");
285 1 SendByte(suba); /*发送器件子地址*/
286 1 if(ack==0)return(0);
287 1
288 1 Start_I2c(); /*重新启动总线*/
289 1 SendByte(sla+1);
290 1 if(ack==0)return(0);
291 1 for(i=0;i<no-1;i++)
292 1 {
293 2 *s=RcvByte(); /*发送数据*/
294 2 Ack_I2c(0); /*发送就答位*/
295 2 s++;
296 2 }
297 1 *s=RcvByte();
298 1 Ack_I2c(1); /*发送非应位*/
299 1 Stop_I2c(); /*结束总线*/
300 1 return(1);
301 1 }
302 /*******************************************************************
303 功能:向无子地址器件读取多字节数据函数
C51 COMPILER V8.17 IIC 03/09/2009 15:54:45 PAGE 6
304 函数原型: bit ISendStrExt(INT8U sla,INT8U *s,INT8U no);
305 功能: 从启动总线到发送地址,读数据,结束总线的全过程.
306 从器件地址sla,读出的内容放入s指向的存储区,
307 读no个字节。如果返回1表示操作成功,否则操作有误。
308 注意: 使用前必须已结束总线。
309 ********************************************************************/
310 /*
311 bit IRcvStrExt(INT8U sla,INT8U *s,INT8U no)
312 {
313 INT8U xdata i;
314
315 Start_I2c();
316 SendByte(sla+1);
317 if(ack==0)return(0);
318
319 for(i=0;i<no-1;i++)
320 {
321 *s=RcvByte(); //发送数据
322 Ack_I2c(0); //发送就答位
323 s++;
324 }
325 *s=RcvByte();
326 Ack_I2c(1); //发送非应位
327 Stop_I2c(); //结束总线
328 return(1);
329 }
330 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 377 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- 1
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -