标题: if(addr&Page_bye==0)这一步,写够8个字节,addr=0x07时应该不会成立 但运行正确 [打印本页]

作者: coderyang    时间: 2023-3-14 18:48
标题: if(addr&Page_bye==0)这一步,写够8个字节,addr=0x07时应该不会成立 但运行正确
/*********************************************************************
                函数名: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时应该不会成立   但是程序运行正确
                                




作者: Hephaestus    时间: 2023-3-14 19:37
搞不清优先级就打括号,反正打括号又不会增加代码量,为什么不做?
作者: Y_G_G    时间: 2023-3-14 20:47
(addr&Page_bye==0)
为什么要这样写呢?加个括号不好吗?
C语言优先级那么多,总有一两个记不住的,加个括号不就好了




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