shaw 发表于 2024-4-2 12:16:03

求大神讲解一个手写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. 在别的单片机上不存在这个问题!求大神解答原因 !谢谢!



lezjin 发表于 2024-4-2 13:22:12

这个应该是释放总线

xxxevery 发表于 2024-4-2 16:22:29

楼上说的应该是对的,sda总线一直拉低的话,iic控制器会认为总线忙,不会进行下一步工作

小飞侠 发表于 2024-4-3 07:49:15

xxxevery 发表于 2024-4-2 16:22
楼上说的应该是对的,sda总线一直拉低的话,iic控制器会认为总线忙,不会进行下一步工作 ...

就是释放总线的

神农鼎 发表于 2024-4-3 08:19:38



视频教学:《STC32位8051单片机原理及应用》,200万大奖, 送实验箱; 冲哥版 - 视频教学,《单片机原理及应用》教学改革及实践研讨会,实战技术交流会,会务通知 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

页: [1]
查看完整版本: 求大神讲解一个手写IIC的问题