[英]How does this simple line of C code work?
我需要在Arduino Uno上使用9位UART数据,所以我必须手动设置Arduino UART。 基本上,我不理解这一行示例代码(来自数据表),它意味着在Arduino上启用UART Tx和Rx引脚,它以简单易懂的机器语言完成,只意味着加载一个立即值UCSR0B
(USART控制和状态寄存器B)的方式是RXE(接收使能)位和TXE(传输使能)位均为高电平。 换句话说,负载00011000
成USCR0B
。
以下是数据表中的示例C代码:
USCR0B = (1 << RXE) | (1 << TXE);
RXE
和TXE
是位索引 ,因此(1<<RXE) | (1<<TXE)
(1<<RXE) | (1<<TXE)
是一个掩码 ,其中TXE
和RXE
位都等于1(所有其他位都是0)。
例如,我不知道RXE
和TXE
的实际值,但假设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.