3

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

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

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

1 回答 1

12

RXETXE是位索引掩码(1<<RXE) | (1<<TXE)也是,其中和位都等于 1(所有其他位都为 0)。TXERXE

例如,我不知道 and 的实际值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
于 2015-09-10T06:07:21.880 回答