51单片机pcf8591编程发送一个字节程序中,if((temp&0x80)==0x80的含义?

 我来答
jack218338
2018-02-05 · TA获得超过213个赞
知道小有建树答主
回答量:86
采纳率:100%
帮助的人:47.4万
展开全部
没懂你的意思,你就拿这么一个if判断语句出来,实在没法给你解释,或许是理解有误。
不得不说两句,你问的问题,提供的内容要全面,要明确你想知道的是什么?疑问在什么地方?
像你前面说得双字节字符,貌似就一点关系都没有。

上面的那位仁兄说得很不错了(还不懂的话,建议你去看I2C协议,和硬件配置吧)
void Send(unsigned char Data)
{
unsigned char BitCounter = 8;
unsigned char temp;

do
{
temp = Data;
//I2C的时钟线SCL先清零,这是I2C协议决定的,数据传输SDA只能在SCL=0时才能改变。
scl = 0;
nop();
//下面就要判断在I2C数据线上要发送的数据,
//从最高位开始,判断结果是1,SDA就要置1,判断结果为0,SDA就要清零。
//没有什么像你说的输不输出数据,输出0是数据,输出1也是数据。
if((temp&0x80) == 0x80)
sda = 1;
else
sda = 0;
//下面一个SCL上升沿,把数据线SDA上的数据发送出去
scl = 1;
//因为前面始终判断的temp最高位,
//第(2,3,4...8)次循环,要依次把数据的第(7,6,5..1)位移到temp的最高位。
//满足这个要求,每次循环移动一位就可以了
temp = Data << 1;
Data = temp;
//BitCounter是用来统计循环次数的,
BitCounter --;
}while(BitCounter);
scl = 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式