USART的初始化,进行通信之前首先要对USART进行初始化。初始化过程通常包括波特率的设定、帧结构的设定以及根据需要使能接收器或发送器。对于中断驱动的USART操作,在初始化时首先要清零全局中断标志位(全局中断被屏蔽)。
重新改变USART的设置应该在没有数据传输的情况下进行。TXC标志位可以用来检验一个数据帧的发送是否已经完成,RXC标志位可以用来检验接收缓冲器中是否还有数据未读出。在每次发送数据之前(在写发送数据寄存器UDR前)TXC标志位必须清零。以下是USART初始化程序实例。例程采用了轮询(中断被禁用)的异步操作,而且帧结构是固定的。波特率作为函数参数给出。在汇编程序里波特率参数保存于寄存器rl 7:rl 6。
汇编代码例程:
USART Init :
;设置波特率
out UBRRH,rl7
out UBRRL,rl6
;接收器与发送器使能
idi rl6,(I<
out UCSRB,rl6
;设置帧格式:8个数据位,2个停止位
Idi rl6,(1<
out UCSRC,rl6
ret
C代码例程:
void USART_Init(unsigned int baud)
{
/*设置波特率*/
UBRRH=(unsigned char)(baud>>8):
UBRRL=(unsigned char)baud:
/*接收器与发送器使能*/
UCSRB=(1<
/*设置帧格式:8个数据位,2个停止位*/
UCSRCC=(1<
}
更高级的初始化程序格式作为参数、禁止中断等,然而许多应用程序使用固定的波特率与控制寄存器。此时初始化代码可以直接放在主程序中,或与其他I/O模块的初始化代码组合到一起。
更多信息推荐