请教一下这段代码
请教一下下面标红的这句代码是什么意思:
unsigned char I2C_Slv_Putch(unsigned char ch)
{
while(((AD_I2C->SSPI & 0x02) == 0x02)==0);
AD_I2C->SSPIC = 0x02;
AD_I2C->SSPTX = ch;
if((AD_I2C->SSPCON1 & 0x40) == 0x40) //return last byte ack signal
return 1;
else
return 0;
}
判断AD_I2C->SSPI 的Bit 2是1还是0,是0就while循环 while(((AD_I2C->SSPI & 0x02) == 0x02)==0);
直接看(AD_I2C->SSPI & 0x02) 这个就是取这个寄存器的0x02bit位
((AD_I2C->SSPI & 0x02) == 0x02)这里判断这个bit位是否为1
(((AD_I2C->SSPI & 0x02) == 0x02)==0)这里不为1就循环等待
综上,就是判断某个状态寄存器是否变成1了,不是就等状态寄存器变成1 wono01 发表于 2020-5-22 09:51
while(((AD_I2C->SSPI & 0x02) == 0x02)==0);
直接看(AD_I2C->SSPI & 0x02) 这个就是取这个寄存器的0x02bit ...
那写成 while(!(AD_I2C->SSPI & 0x02))不就行了吗,干嘛要做2次比较? 本帖最后由 wono01 于 2020-5-25 10:12 编辑
luoengineer 发表于 2020-5-25 09:59
那写成 while(!(AD_I2C->SSPI & 0x02))不就行了吗,干嘛要做2次比较?
谁知道写代码当时咋想的,只不过上面==0更清晰可以看出目的。实际工程中代码以清晰为标准。
页:
[1]