打印

哪位大虾帮我解决一下这个问题好吗?

[复制链接]
1737|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kinggate|  楼主 | 2007-4-24 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我曾经用到这么一段语句:
sbit SER=P0^4;      //595串行数据输入
for(i=0;i<8;i++)    //循环移入8位数据,
  {  
     uchar temp;
     SCK=0;
     SER=temp&0x80;  // 取数码的最高位
     temp=temp<<1;
     SCK=1;    
  }
而且也看过这么一句话:"如果将一个整型数赋给位变量,只是将最低位赋给位变量",那参照这句话,SER=temp&0x80; 得到的SER值应该为temp的最低位吧?
但通过试验,得到的是temp的最高位啊,这不有点矛盾了吗?
哪位大虾帮我解析一下好吗??
谢谢!!

相关帖子

沙发
tdwmcu| | 2007-4-24 17:49 | 只看该作者

有点意思,如果真如你所说,应该是这样的

SER=temp&0x80;  // 取数码的最高位
这句话可以这样解释:当temp&0x80为真,也就是非0的时候,SER=1;
当temp&0x80为假,也就是0的时候,SER=0;
所以这句话可以做如下翻译:
if(temp&0x80)
{
   SER = 1;
}
else
{
   SER = 0;
}

使用特权

评论回复
板凳
kinggate|  楼主 | 2007-4-24 18:27 | 只看该作者

2楼请问~~~

你这这种解析有点牵强啊
因为我觉得运算式:temp&0x80 得出的是一个字符型的值啊,那再赋给一个位变量的话又怎么算的呢?
谢谢!

使用特权

评论回复
地板
xwj| | 2007-4-24 18:50 | 只看该作者

不要重复发贴,去看我另一贴的回复!

使用特权

评论回复
5
tx040316| | 2007-4-24 19:50 | 只看该作者

2楼

 SER=temp&0x80这句话不是像你说的那样啊,这是句赋值语句,你说的那种意思应该是样的语句SER=temp&&0x80;

使用特权

评论回复
6
lenglx| | 2007-4-25 10:37 | 只看该作者

KEIL C51中的bit(sbit)类型是当作bool值来看待的.

使用特权

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

本版积分规则

13

主题

37

帖子

0

粉丝