智能车制作

标题: 菜鸟请问一个简单的问题。 [打印本页]

作者: 請放心遠行!    时间: 2014-9-9 13:53
标题: 菜鸟请问一个简单的问题。
void SCI_Write(unsigned char SendChar)
{

      while (!(SCI0SR1&0x80));
      SCI0DRH=0;

      SCI0DRL=SendChar;
}
程序中的语句中 while (!(SCI0SR1&0x80),SCI0SR1&0x80后面为什么还要加一个&0x80,其中&在这里又有什么用呢?这个一直想不明白,虽然一有在用这个。


作者: 机遇    时间: 2014-9-9 14:03
判断寄存器第八位状态
作者: Quixote    时间: 2014-9-9 14:04
楼上正解
作者: 請放心遠行!    时间: 2014-9-9 14:08
本帖最后由 請放心遠行! 于 2014-9-9 14:10 编辑
机遇 发表于 2014-9-9 14:03
判断寄存器第八位状态

我知道是判断寄存器状态,我想问的是后面的&0x80是什么意思,还有,如果我想判断八位寄存器a的是否为11111111.是不是我我可以写 a&0xff ?

作者: 何俊    时间: 2014-9-9 14:18
SCI0SR1&0x80是取出SCI0SR1第八位,这样while在判断的时候就不受其他位的影响。所以&oxff是不能判断是不是0xff,只能判断8位中是否有1.

作者: 請放心遠行!    时间: 2014-9-9 14:48
何俊 发表于 2014-9-9 14:18
SCI0SR1&0x80是取出SCI0SR1第八位,这样while在判断的时候就不受其他位的影响。所以&oxff是不能判断是不是0 ...

谢谢你啊,不过我还是有点疑惑,要是我想判断八位a寄存器6位或者7为是否为1,应该对&0x80做哪些改动?要是寄存器为16位的呢?
作者: 何俊    时间: 2014-9-9 14:51
請放心遠行! 发表于 2014-9-9 14:48
谢谢你啊,不过我还是有点疑惑,要是我想判断八位a寄存器6位或者7为是否为1,应该对&0x80做哪些改动?要是 ...

判断第六位就是&00100000,也就是&0x20.  16进制也是这样,二进制转换成16进制就行了.

作者: 机遇    时间: 2014-9-9 15:05
請放心遠行! 发表于 2014-9-9 14:08
我知道是判断寄存器状态,我想问的是后面的&0x80是什么意思,还有,如果我想判断八位寄存器a的是否为1111 ...

按位于如果 第八位为0则按位于的结果为0 逻辑非 为真 死循环 反之 第八位为1 逻辑非为假 跳出循环
用&&

作者: 請放心遠行!    时间: 2014-9-9 16:26
谢谢楼上两位,明白了
作者: 六步上篮    时间: 2014-9-9 22:45
去找那个寄存器看




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2