找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 355|回复: 2
收起左侧

if(addr&Page_bye==0)这一步,写够8个字节,addr=0x07时应该不会成立 但运行正确

[复制链接]
ID:1062292 发表于 2023-3-14 18:48 | 显示全部楼层 |阅读模式
/*********************************************************************
                函数名:E2WritePage();
                参数列表:第一个为I2C_Add器件地址,第二个addr器件子地址,第三个参数为数据数组,第四个参数为写入的字节数
                返回参数:0:写入失败,内存不够,1:正常写入
                功能:实现多字节写入器件
************************************************************************/
uchar E2WritePage(uchar I2C_Addr,uchar addr,uchar *buf,uint len)
{
        uint i;
        if(MAX_E2-addr<len)//判断现存内存是否足够,这里的MAX_E2是我定义的一个宏变量,值是255
                return 0;
               
                while(len>0){
                        I2C_Start();//启动总线
                        I2C_WriteByte((I2C_Addr<<1));
                        I2C_WriteByte((addr));//子器件寻址
                        
                        while(len>0){
                                I2C_WriteByte(*buf++);//写入数据
                                addr++;
                                len--;
                                //这个Page_bye也是我定义的一个宏变量,值是0x07,
                                //用来是否写入够8字节了,够了就直接退出内循环,开始写下一页的数据,也就是翻页
                                if(addr&Page_bye==0)
                                        break;
                        }
                        I2C_Stop();
                        Delay10ms();
                }
        return 1;


if(addr&Page_bye==0)这一步,写够8个字节,addr=0x07时应该不会成立   但是程序运行正确
                                



回复

使用道具 举报

ID:883242 发表于 2023-3-14 19:37 | 显示全部楼层
搞不清优先级就打括号,反正打括号又不会增加代码量,为什么不做?
回复

使用道具 举报

ID:401564 发表于 2023-3-14 20:47 | 显示全部楼层
(addr&Page_bye==0)
为什么要这样写呢?加个括号不好吗?
C语言优先级那么多,总有一两个记不住的,加个括号不就好了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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