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

如题所述

没懂你的意思,你就拿这么一个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;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机pcf8591编程发送一个字节程序中,if((temp&0x80)==0x80的含义...
if((temp&0x80) == 0x80)sda = 1;else sda = 0;\/\/下面一个SCL上升沿,把数据线SDA上的数据发送出去 scl = 1;\/\/因为前面始终判断的temp最高位,\/\/第(2,3,4...8)次循环,要依次把数据的第(7,6,5..1)位移到temp的最高位。\/\/满足这个要求,每次循环移动一位就可以了 temp = Dat...

pcf8591的程序如何写,用51单片机
bit ack; \/\/应答标志位 define DataPort P0 \/\/定义数据端口 程序中遇到DataPort 则用P0 替换 define CtrlPort P1 sbit SDA=P2^5;sbit SCL=P2^4;unsigned char code DuanMa[10]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};\/\/ 显示段码值0~9 unsigned char code WeiM...

谁知道pcf8591是怎么采集的,程序怎么写啊
PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双...

利用STC89C52单片机以及PCF8591的AD转换设计一个数字电压表,求大神给个...
输入参数 Chl 表示需要转换的通道,范围从0-3 返回值范围0-255 操作分四步:(1)、发送地址字节,选择该器件。(2)、发送控制字节,选择相应通道。(3)、重新发送地址字节,选择该器件的读写。(4)、接收目标通道的数据。---*\/ unsigned char ReadADC(unsigned char Chl){ unsigned char Val;...

写了一个AD转换程序,模拟输入是脉搏波,用串口调试的时候出现Connect por...
感觉 你的 问题应该 是 硬件连接 先 确保 单片机 与 电脑 硬件串口连接无误,才调试 软件、程序

...利用串口显示电压电流? 求大神告解,急用! 最好给出做法和程序...
首先需要通信协议,然后通过串口发送命令,或者接收数据。流行的串口软件,如格西烽火、串口调试助手等,都不错。

...发送一个字节程序中,if((temp&0x80)==0x80的含义??
if((temp&0x80) == 0x80)sda = 1;else sda = 0;\/\/下面一个SCL上升沿,把数据线SDA上的数据发送出去 scl = 1;\/\/因为前面始终判断的temp最高位,\/\/第(2,3,4...8)次循环,要依次把数据的第(7,6,5..1)位移到temp的最高位。\/\/满足这个要求,每次循环移动一位就可以了 temp = ...

51单片机可以对mcp4725操作吗
LCD_Write_String(8,1,temp);\/\/主循环中添加其他需要一直工作的程序 DelayMs(200);} } \/*--- 读AD转值程序 输入参数 Chl 表示需要转换的通道,范围从0-3 返回值范围0-255 操作分四步:(1)、发送地址字节,选择该器件。(2)、发送控制字节,选择相应通道。(3)、重新发送地址字节,选择该...

相似回答