/************************************
AVR时钟:8.00MHz
*波特率9600(51)8位数据,1位停止,当波特率设置为19200时,UBRR=25,4800=103
*注:波特率设置9600最佳,别的数据不稳定,不同波特率对应的UBRR值参考手册
*PC机向开发板发送一个字符,开发板将其大写字母回写给PC机
***********************************/
#include
#include
void USART_Init( unsigned int baud )
{
/* 设置波特率,baud的值查数据手册*/
UBRRH = (unsigned char )(baud>>8);
UBRRL = (unsigned char )baud;
/* 接收器与发送器使能*/
UCSRB = (1< /* 设置帧格式: 8 个数据位, 2个停止位*/ UCSRC = (1< } void USART_Transmit( unsigned char data ) { /* 等待发送缓冲器为空 */ while ( !( UCSRA & (1< ; /* 将数据放入缓冲器,发送数据 */ UDR = data; } unsigned char USART_Receive( void ) { /*等待接收数据*/ while ( !(UCSRA & (1< ; /* 从缓冲器中获取并返回数据*/ return UDR; } void main() { unsigned char cr; DDRD=0X02; //端口PD2(TXD)输出,端口PD1(RXD)输入上拉 PORTD=0XFF; //CLR_PORTD(BUZZER); USART_Init(51); //波特率对应的UBRR值做形参初始化 while(1) { cr = USART_Receive(); cr-=32; USART_Transmit(cr); } } //大写字母和小写字母的ASCII码相差32,如果PC机发送的是非小写字母,开发板可能会发回乱码。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』