找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1290|回复: 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();
  }  
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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