基于AVR的串口与PC机通信代码怎么写
基于AVR的串口与PC机通信代码怎么写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
为托里等地区用户提供了全套网页设计制作服务,及托里网站建设行业解决方案。主营业务为成都网站建设、成都做网站、托里网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
为了以后根据此代码继续改进功能,特意把代码放在此处,也和大家一起学习。
/************************************
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<
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机发送的是非小写字母,开发板可能会发回乱码。
看完上述内容,你们掌握基于AVR的串口与PC机通信代码怎么写的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享文章:基于AVR的串口与PC机通信代码怎么写
文章源于:http://abwzjs.com/article/ihhodo.html