完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用51单片机接AT24C02模拟I2C总线,编写程序的时候其中向AT24C02写入一个字节这个函数,如下:
void WriteByte(uchar dat) { uchar i,temp; temp = dat; for (i = 0;i < 8;i++) { temp <<= 1; SCL = 0; delay(); SDA = CY; delay(); SCL = 1; delay(); } SCL = 0; delay(); SDA = 1; delay(); } 其中,这个函数最后的SCL = 0;delay();SDA = 1;delay();去掉任何一个程序都不能正常工作,SDA=1我知道是为了以后应答的时候检测是否被拉成低电平,但是我【实在不知道为什么一定要写SCL=0】?为什么去掉这个函数里最后的SCL = 0;程序就不能正常工作? (PS:应答程序如下 void I2CResponse() { uchar i; SCL = 1; delay(); while ((SDA == 1) && (i < 250)) { i++; } SCL = 0; delay(); }) 如需要其他部分程序可回复我。谢谢! |
|
相关推荐
4个回答
|
|
IIC协议你压根就没看吧,这都是协议规定的东西
|
|
|
|
嗯IIC协议我仔细看过,但我没找到这两句话必须加的 详细依据,您能告诉我吗 |
|
|
|
这个跟各个人所编写的程序结构有关,你可以多找一些24c02的例程,对比一下,至少我的24c02程序时没有你所疑惑的那两个操作的。
有时候有些操作并不一定时协议里要求的,只是可能因为程序结构的问题,有时为了后续操作的电平信号衔接而做一些电平的操作。 |
|
|
|
这个是我写的,从机主动返回应答子函数,看下,感觉这个东西没那么难理解
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
787 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1476 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1216 浏览 0 评论
900 浏览 0 评论
963 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11866 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:35 , Processed in 0.645559 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号