USART数据寄存器UDR: 当对此寄存器进行读的时候,实际就是接收数据缓冲寄存器(RXB)。 当对此寄存器进行写的时候,实际就是发送数据缓冲寄存器(TXB)。 USART控制和状态寄存器A:UCSRA(RXC,TXC,UDRE,FE,DOR,PE,U2X,MPCM) RXC:USART接受结束。接受缓冲器中仍然有未读出的数据时,RXC置位。如果没有任何需要读的数据时,RXC清零。当接收器禁止时,接收缓冲器刷新,导致RXC清零,RXC标志也可以用来产生接收结束中断。 TXC:USART发送结束。发送移位寄存器中的数据被送出,且当发送缓冲器(UDR/TXB)为空时,TXC置位。执行发送结束中断时TXC标志自动清零。 UDRE:USART数据寄存器空。当UDRE为“1”时,说明缓冲器为空,已准备好进行数据接受。 FE:帧错误。如果接收缓冲器接收到下一个字符有帧错误,即下一个字符的第一个停止位为“0”,那么FE置位。当对USART数据寄存器UDR进行写入时,这一位必须写“0”; DOR:数据溢出。当接收缓冲器满(包含了两个数据),接收移位寄存器又有数据时,若检测到一个新的起始位,数据溢出就产生了。DOR就置为“1”。当对USART进行写时,DOR要写为“0”。 PE:奇偶校验错误。当奇偶校验使能(UPM = 1),且接收缓冲中所接收的下一个字符有奇偶校验错误,PE置位。对USART进行写时,这一位写为“0”; U2X:倍速发送。仅仅对异步操作有影响。使用同步操作时把这一位写“0”; MPCM:设置此位将启动多处理器通信模式。即,USART不再接收那些不包含地址信息的输入帧,发送时USART不受MPCM的影响。 USART控制和状态寄存器B: UCSRB(RXCIE,TXCIE,UDRIE,RXEN,TXEN,UCSZ2,RXB8,TXB8) RXCIE:接收结束中断使能。TXCIE:发送结束中断使能; UDRIE:USART数据寄存器空中断使能; RXEN:接收使能。置位后将启动USART接收器RxD引脚的通用端口功能被USART功能所取代。 TXEN:发送使能。置位后将启动USART发送器TxD引脚的通用端口功能被USART功能所取代。当该位清零后,并所有数据发送完成后,发送器才能真正禁止。I/O恢复通用功能。 UCSZ2:与UCSZ1, UCSZ0,结合在一起确定字符长度。 UCSZ2
| UCSZ1
| UCSZ0
| 字符长度
| 0
| 0
| 0
| 5位
| 0
| 0
| 1
| 6位
| 0
| 1
| 0
| 7位
| 0
| 1
| 1
| 8位
| 1
| 0
| 0
| 保留
| 1
| 0
| 1
| 保留
| 1
| 1
| 0
| 保留
| 1
| 1
| 1
| 9位
|
RXB8:对9位串行帧进行操作时,RXB8就是第9个数据位。读取UDR包含的低位数据之前首先要读取RXB8。如果小于9位,则忽略RXB8 TXB8:对9位串行帧进行操作时,TXB8就是第9个数据位。写UDR包含的低位数据之前首先要写TXB8。如果小于9位,则忽略TXB8 USART控制和状态寄存器C: UCSRC(URSEL,UMSEL,UPM1,UPM0,USBS,UCSZ1,UCSZ0,UCPOL) URSEL:寄存器选择。通过该位选择访问UCSRC或者UBRRH,当读写UCSRC时,置位。当读写UBRRH时,弄为“0” UMSEL:USART模式选择,通过这一位来选择同步或者异步工作模式,异步模式时为“0”,同步模式时为“1”。 UPM1:0 奇偶校验模式。如果校验的结果不匹配(有错误)那么就将UCSRA中PE置位。 UPM1
| UPM0
| 奇偶模式
| 0
| 0
| 禁止
| 0
| 1
| 保留
| 1
| 0
| 偶校验
| 1
| 1
| 奇校验
|
USBS:停止位选择。当为“0”时,一位停止位,当为“1”时,两位停止位。通过这一位可以设置停止位的位数,接收器忽略此位设置。 UCSZ1:0 字符长度。 UCPOL:时钟极性这一位仅仅用于同步工作模式,异步工作模式时清零。 UCPOL
| TxD引脚的输出
| RxD引脚的输入
| 0
| XCK上升沿
| XCK下降沿
| 1
| XCK下降沿
| XCK上升沿
|
USART波特率寄存器 UBRRH(URSEL,-,-,-,UBRR[11:8])和UBRRL(UBRR[7:0]) URSEL:寄存器选择, UBRRH包含了USART波特率高4位,UBRRL包含了低8位。
传输线路RxD或TxD没有数据传输,线路空闲时必须保持高电平。
时钟工作模式
| 波特率计算公式
| 寄存器UBRR值计算公式
| 普通异步模式
| UBRR=
| UBRR=
| 倍速异步模式
| BAUD=
| UBRR=
| 主机同步模式
| BAUD=
| UBRR=
|
|