求大神讲解一个手写IIC的问题
unsigned char ee_read_byte( ){
u8 i,dat;
i = 8;
ee_sda = 1; //这一句最关键 ***********
while(i > 0)
{
ee_scl = 1;
ee_delay();
dat = dat << 1;
if(ee_sda==1) dat= dat + 1 ;
ee_scl= 0;
ee_delay();
i = i -1 ;
}
return(dat);
}
以上程序注释为最关键一句,没有任何实质意义。但是如果不存在,在STC单片机上读EEPROM就只能连续读一个BYTE正确,其余都是0. 在别的单片机上不存在这个问题!求大神解答原因 !谢谢!
这个应该是释放总线 楼上说的应该是对的,sda总线一直拉低的话,iic控制器会认为总线忙,不会进行下一步工作 xxxevery 发表于 2024-4-2 16:22
楼上说的应该是对的,sda总线一直拉低的话,iic控制器会认为总线忙,不会进行下一步工作 ...
就是释放总线的
视频教学:《STC32位8051单片机原理及应用》,200万大奖, 送实验箱; 冲哥版 - 视频教学,《单片机原理及应用》教学改革及实践研讨会,实战技术交流会,会务通知 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
页:
[1]