微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > avr单片机USART串口通讯初始化配置及说明

avr单片机USART串口通讯初始化配置及说明

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

}
}

/*
USART数据寄存器空标志UDRE及传输结束标志TXC,两个标志位都可以产生中断。
*/
void UDR_empty()
//使能要求:全局中断使能,数据寄存器空中断使能位 UDRIE置位。 UDRE 被置位(自动)。
//对寄存器 UDR 执行写操作将清零 UDRE
{unsigned char data;
UDR = data;
//add your code here

}
void TXC_END()
{UDR =UASART_DATA;

//add your code here
}
void RXC_END()
{

UASART_DATA=UDR;

//add your code here
}

void USART_Transmit5_8( unsigned char data )//对 UDRE 标志采用轮询方式发送数据(发送5-8位数据)
{ /* 等待发送缓冲器为空 */
while ( !( UCSRA & (1/* 将数据放入缓冲器,发送数据 */
UDR = data;
}
void USART_Transmit_9( unsigned int data )//用查询法发送9位数据的数据帧
{ /* 等待发送缓冲器为空 */
while ( !( UCSRA & (1/* 将第 9 位复制到 TXB8 */
UCSRB &= ~(1if ( data & 0x0100 )
UCSRB |= (1/* 将数据放入缓冲器,发送数据 */
UDR = data;
}

unsigned char USART_Receive5_8( void )//用查询RXC接受5-8位的数据
{
/*等待接收数据*/
while ( !(UCSRA & (1/* 从缓冲器获得数据并返回数据*/
return UDR;
}
unsigned int USART_Receive_9( void )//接受9位的数据帧
{
unsigned char status, resh, resl;
/*等待接收数据 */
while ( !(UCSRA & (1/*从缓冲器获得状态及其第九位数据*/
/* from buffer */
status = UCSRA;
resh = UCSRB;
resl = UDR;
/* 如果出错返回*/
if ( status & (1return 255;
/* 过滤第九位数据然后返回*/
resh = (resh >> 1) & 0x01;
return ((resh < 8) | resl);
}

/*
禁止接收器时缓冲器 FIFO 被刷新,缓冲器被清空。导致未读出的数据丢失。如果由于出错而必须在正常操作下刷新缓冲器?
则需要一直读取 UDR 直到 RXC 标志清零。
*/
void USART_Flush( void )

{
unsigned char dummy;
while ( UCSRA & (1}

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

网站地图

Top