繁体   English   中英

这段简单的C代码如何工作?

[英]How does this simple line of C code work?

我需要在Arduino Uno上使用9位UART数据,所以我必须手动设置Arduino UART。 基本上,我不理解这一行示例代码(来自数据表),它意味着在Arduino上启用UART Tx和Rx引脚,它以简单易懂的机器语言完成,只意味着加载一个立即值UCSR0B (USART控制和状态寄存器B)的方式是RXE(接收使能)位和TXE(传输使能)位均为高电平。 换句话说,负载00011000USCR0B

以下是数据表中的示例C代码:

USCR0B = (1 << RXE) | (1 << TXE);

RXETXE是位索引 ,因此(1<<RXE) | (1<<TXE) (1<<RXE) | (1<<TXE)是一个掩码 ,其中TXERXE位都等于1(所有其他位都是0)。

例如,我不知道RXETXE的实际值,但假设TXE为第3位且RXE为第4位,则相关的头文件定义可能如下所示:

#define TXE 3  // TX Enable = bit 3
#define RXE 4  // RX Enable = bit 4

并且掩码计算将如下工作:

            1<<TXE  = 00001000 = 0x08
            1<<RXE  = 00010000 = 0x10
(1<<RXE) | (1<<TXE) = 00011000 - 0x18

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM