标题: 关于单片机AT24c02 IIc程序,读一个字节问题 [打印本页]

作者: zzz84411285    时间: 2021-1-16 23:49
标题: 关于单片机AT24c02 IIc程序,读一个字节问题
/******************************************************/
//函数名称: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


作者: wulin    时间: 2021-1-17 07:23
dataRead初始默认=0x00,开始左移1位,低位补0还是0x00。由高到低循环8次读取1个字节,dataRead只能有效移位7次。如果dataRead <<=1;放末尾的话最高位就溢出了。
作者: zzz84411285    时间: 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只能有效移 ...

我明白了,谢谢你,我回去试几遍
作者: 人人学会单片机    时间: 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





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1