微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR学习心得(四)

AVR学习心得(四)

时间:11-10 来源:互联网 点击:

USARTn 控制和状态寄存器C -UCSRnC:

&8226; Bit 7 – 保留位
该位保留。为与未来器件兼容,对UCSRnC 写入时该位必须写0 。
&8226; Bit 6 – UMSELn: USART 模式选择
通过这一位来选择同步或异步工作模式。

&8226; Bit 5:4 – UPMn1:0: 奇偶校验模式
这两位设置奇偶校验的模式并使能奇偶校验。如果使能了奇偶校验,那么在发送数据,发送器都会自动产生并发送奇偶校验位。对每一个接收到的数据,接收器都会产生一奇偶值,并与UPMn0所设置的值进行比较。如果不匹配,那么就将UCSRnA中的UPEn置位。

&8226; Bit 3 – USBSn: 停止位选择
通过这一位可以设置停止位的位数。接收器忽略这一位的设置。

&8226; Bit 2:1 – UCSZn1:0: 字符长度
UCSZn1:0与UCSRnB寄存器的 UCSZn2结合在一起可以设置数据帧包含的数据位数(字符长度)。

Bit 0 – UCPOLn: 时钟极性
这一位仅用于同步工作模式。使用异步模式时,将这一位清零。UCPOLn 设置了输出数据的改变和输入数据采样,以及同步时钟XCKn 之间的关系。

USART 波特率寄存器-UBRRnL 和UBRRnH:

&8226; Bit 15:12 – 保留
这些位是为以后的使用而保留的。为了与以后的器件兼容,写UBRRnH 时将这些位清零。
&8226; Bit 11:0 – UBRRn11:0: USARTn 波特率寄存器
这个12 位的寄存器包含了USARTn 的波特率信息。其中UBRRnH 包含了USARTn 波特率高4 位,UBRRnL 包含了低8 位。波特率的改变将造成正在进行的数据传输受到破坏。写UBRRnL 将立即更新波特率分频器

附:实验程序

/*****************************************************
函 数 名:void uart_init(void)
功 能:初始化串口
说 明:根据要求设置好波特率和数据位
入口参数:无
返 回 值:无
*****************************************************/
void uart_init(void)
{
UBRR0H=0; /* 设置波特率9600,时钟8MHz,查表UBRR=51 */
UBRR0L=51; /* UBR=51 */
UCSR0B=(1

UCSR0C=0x06; /* 设置数据格式,8位数据位,1位停止位 */
}

/*****************************************************
函 数 名:void Uart_Transmit(unsigned char c)
功 能:向串口发送一字符(查询方式)
说 明:只有当寄存器UCSRA的UDRE标志置位后,才可以对发送缓冲进行写操作
入口参数:无
返 回 值:无
*****************************************************/
void Uart_Transmit(unsigned char c)
{
while( !( UCSR0A & (1
UDR0=c; /* 发送数据 */
}

/*****************************************************
函 数 名:void Uart_Transmits(unsigned char *arr)
功 能:向串口写入字符串(查询方式)
说 明:
入口参数:无
返 回 值:无
*****************************************************/
void Uart_Transmits(unsigned char *arr)
{
do
{
Uart_Transmit(*arr);
arr++;
}while(*arr!=/0);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top