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

51单片机IIC总线问题,PCF8591编程if((temp&0x80)==0x80)//如果表达式为真,说明temp高位为1,则是双字节字符?这是网友给的解释,怎么就是... 51单片机IIC总线问题,PCF8591编程
if((temp&0x80)==0x80)//如果表达式为真,说明 temp 高位为 1, 则是双字节字符?这是网友给的解释,怎么就是双字节了,即使 temp 高位为 1,不还是8位二进制数吗,不还是一个字节吗?
if((temp&0x80)==0x80)的作用到底是什么??、?望大神指教,
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
MAIN: MOV SP,#50H MOV DPTR,#TAB;读入字模指针 MOV 30H,DPL; 存起来 ;堆栈低8位 MOV 31H,DPH ;堆栈高8位 MOV 32H,30H;再记录指针,留作移动了多少位的判断 用。 MOV 3H,31H ;3H记录字模数据的高位地址 INC 3H;3H高位地址+5,表示数据有5X256列之多。 ROL: MOV R2,#01H;设扫描次数 INI1: MOV DPL,30H;这段是扫描一次32列 MOV DPH,31H MOV R4,#32 MOV R3,#0 LOP1 P1,R3 CLR A MOVC A,@A+DPTR MOV P0,A INC DPTR CLR A MOVC A,@A+DPTR MOV P2,A INC DPTR CAL DELAY INC R3 DJNZ R4,LOP1 DJNZ R2,INI1;这条预留扫描次数用可以调整速度 MOV DPL,3…
jack218338
推荐于2018-03-31 · TA获得超过213个赞
知道小有建树答主
回答量:86
采纳率:100%
帮助的人:45.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;
}
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机是一种集成电路芯片。又称单片微控制器,是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。特点是体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 单... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
ATF144X
推荐于2017-11-26 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4678万
展开全部
就是检查temp变量的最高位是不是为1,没多大的意思。
如果为1,就让SDA=1,否则SDA=0,完成1bit的输出。
接着是temp=temp<<1,是吧?
更多追问追答
追问

追答
如果高位是1,就让SDA引脚输出1,否则就输出0,这有什么问题?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友186dfeac08
2013-12-20 · TA获得超过754个赞
知道小有建树答主
回答量:1074
采纳率:50%
帮助的人:532万
展开全部
作用就是判断SDA为高或者为低。
哪来的双字节还是什么字节。

你把完整的代码弄上来看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
开千凝jr
2018-04-04
知道答主
回答量:1
采纳率:0%
帮助的人:890
展开全部
变量temp左移位,每次移动一位然后判断最高位是否为1,实际上是通过这样的操作把变量temp每一位的高低情况用SDA的高低反应出来,同时一位一位的在SH_CP上升沿是传入595的移位寄存器。为什么不能把变量temp直接传入595的14脚?因为temp是个变量,某个时刻是个具体的数,比如0x01,0x05,需要变成时序才能有效的受控的按位传递到14脚。这样才能和7段码对应起来,加以控制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式