新人提问,知道的帮一下兄弟

2019-07-21 04:00发布

哪位仁兄帮忙解决一下我标注的位置为什么是这样
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
黑小莓
1楼-- · 2019-07-21 23:30
回复【2楼】augustedward:
---------------------------------
回复【5楼】忧伤乐观人:
---------------------------------
能在详细一点吗
黑小莓
2楼-- · 2019-07-22 00:57
 精彩回答 2  元偷偷看……
xuande
3楼-- · 2019-07-22 06:41
这是个自己定义的标志位,

收到数A时,则设置为大概0x4000(记不清了);
再收到数B时,则设置为0x8000;
那么,if 这句意思是说,在前两步成功的基础上(A、B都正确收到),再如何如何。
augustedward
4楼-- · 2019-07-22 07:49
回复【8楼】黑小莓:
---------------------------------
//接收状态
//bit15, 接收完成标志
//bit14, 接收到0x0d
//bit13~0, 接收到的有效字节数目
u16 USART_RX_STA=0;       //接收状态标记

相当于一个状态寄存器。最高位bit15位为1表示接收完成,为0表示未接收完成。
USART_RX_STA&0x8000怎么能是1&0x8000呢。
if()语句,里面只要为真就执行,不一定必须是1才执行啊。
当接收完成时,USART_RX_STA的最高位为1,其他位可能为1也可能为0。
但比较的是最高位,所以就用USART_RX_STA&0x8000进行比较,屏弊掉其他位。

一周热门 更多>