找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2575|回复: 3
打印 上一主题 下一主题
收起左侧

关于单片机AT24c02 IIc程序,读一个字节问题

[复制链接]
跳转到指定楼层
楼主
ID:243971 发表于 2021-1-16 23:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/******************************************************/
//函数名称:IIc_Read_byte
//函数介绍:iic 读一个字节数据
//
/******************************************************/
uint8 IIc_Read_byte(void){
        uint8 dataRead,i;
        for(i=0;i<8;i++){
        dataRead <<=1;
        SCL=0;
        SDA=1;
        _nop_();
        _nop_();
        SCL=1;
        _nop_();
        if(SDA)dataRead |=0x01;
        _nop_();
        SCL=0;
        _nop_();
//        dataRead <<=1;                        //经过验证左移放着里不行
        }
        return dataRead;
}
这个dataRead放第一行和放在末尾有什么区别,放末尾的话就读不到完整字节了,芯片是AT24c02

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

使用道具 举报

沙发
ID:213173 发表于 2021-1-17 07:23 | 只看该作者
dataRead初始默认=0x00,开始左移1位,低位补0还是0x00。由高到低循环8次读取1个字节,dataRead只能有效移位7次。如果dataRead <<=1;放末尾的话最高位就溢出了。

评分

参与人数 1黑币 +5 收起 理由
zzz84411285 + 5 很给力!

查看全部评分

回复

使用道具 举报

板凳
ID:243971 发表于 2021-1-17 08:13 来自手机 | 只看该作者
本帖最后由 zzz84411285 于 2021-1-17 08:21 编辑
wulin 发表于 2021-1-17 07:23
dataRead初始默认=0x00,开始左移1位,低位补0还是0x00。由高到低循环8次读取1个字节,dataRead只能有效移 ...

我明白了,谢谢你,我回去试几遍
回复

使用道具 举报

地板
ID:390416 发表于 2021-1-17 08:31 | 只看该作者

我的这两个贴子 都是DS3231的  用的是IIC协议 希望对你有帮助 http://www.51hei.com/bbs/dpj-200965-1.html
http://www.51hei.com/bbs/dpj-200966-1.html
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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