打印

一个iic的问题

[复制链接]
1381|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1262910135|  楼主 | 2014-6-11 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机中定义:sbit SDA=P2^3;
有以下语句:
temp=0x00;
SDA=temp & 0x01;
我想问一下此时SDA的值是一个16进制数  还是  一个二进制数(0或1)?当temp改变的时候呢?
SDA=temp & 0x80呢?
求指点

相关帖子

沙发
电子缘科技| | 2014-6-11 17:44 | 只看该作者

程序

本帖最后由 电子缘科技 于 2014-6-11 21:43 编辑

本身程序

使用特权

评论回复
板凳
dirtwillfly| | 2014-6-11 20:50 | 只看该作者
SDA是二进制数,赋值时会强制数据类型转换

使用特权

评论回复
地板
1262910135|  楼主 | 2014-6-11 21:18 | 只看该作者
dirtwillfly 发表于 2014-6-11 20:50
SDA是二进制数,赋值时会强制数据类型转换

位定义sbit SDA=P2^3;之后SDA就是一个二进制数了吗?
SDA=temp & 0x01;后     temp最低位为0  SDA为0;  最低位为1时,SDA为0x01;强制转换为1吗?
那if((c<<1)&0x80)SDA=1;中,(c<<1)& 0x80后的值如果是0x80,也就是c左移一位后最高位为1时;if(0x80)这个判断是真还是假?是不是像c语言里面一样if后面括号里非0就是真   条件就成立?

使用特权

评论回复
5
1262910135|  楼主 | 2014-6-11 21:18 | 只看该作者



使用特权

评论回复
6
dirtwillfly| | 2014-6-11 22:26 | 只看该作者
本帖最后由 dirtwillfly 于 2014-6-11 22:29 编辑
1262910135 发表于 2014-6-11 21:18
位定义sbit SDA=P2^3;之后SDA就是一个二进制数了吗?
SDA=temp & 0x01;后     temp最低位为0  SDA为0;   ...

相信不用我回答,你也已经有答案了:lol
实践出真知,用keil调试一下,看看变量值的变化,最直观的了

使用特权

评论回复
7
miaoaoao| | 2014-6-18 23:15 | 只看该作者
写上0x不就代表是十六进制了么,要是二进制的话写0b吧?

使用特权

评论回复
8
roykin| | 2014-6-18 23:24 | 只看该作者
要注意,&是位与运算,SDA=temp & 0x01;是读取最后一位的值,如果temp最后一位的值为1,那么SDA的值为1,否则为0;
对于引脚来说,它的状态只有两个,高电平和低电平,对引脚赋值的时候,除了0,其他数值对于这个引脚都视为高电平。

使用特权

评论回复
9
bestray| | 2014-9-9 11:16 | 只看该作者
debug

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

31

帖子

0

粉丝