找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1742|回复: 1
收起左侧

I2C的读写问题

[复制链接]
ID:188375 发表于 2017-4-11 10:27 | 显示全部楼层 |阅读模式
下面两个程序。为什么第一个程序可以,第二个程序就不行呢?

第一个程序:
void Write_A_Byte(uchar b) //向 24C16 中写一字节数据
{
uchar i;
for(i=0;i<8;i++)
{
b<<=1;
SDA=CY;
_nop_();
SCL=1;
NOP4();
SCL=0;
}
Read_ACK();
}


第二个程序:
void  Write_A_Byte(uchar dat) //写一个字节
{
  uchar i;
  uchar temp;
  temp=dat;
  SCL=0;   //释放时钟信号  让数据总线变化
  for(i=0;i<8;i++)
  {
    if(temp&0x80)
      SDA=1;
    else
      SDA=0;  
    SCL=1;
    temp<<=1;
        NOP4();
    SCL=0;
        NOP4();
  }  
}


回复

使用道具 举报

ID:148552 发表于 2017-4-11 17:54 | 显示全部楼层
I2C对时序要求特别高,而且你又是IO口模拟的时序,最好用逻辑分析仪看下时序对不对,硬看很难看出问题的(如果是时序问题的话)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表