AVR单片机串口程序遇到的问题,Atmega48PA-PU

在微雪买了个STK48+的开发板,在用它的串口示例程序时候,老是出现打印错误。有没有做过这个的朋友,在下虚心求教!附上代码:voiduart_init(void){UCS... 在微雪买了个STK48+的开发板,在用它的串口示例程序时候,老是出现打印错误。有没有做过这个的朋友,在下虚心求教!附上代码:

void uart_init(void)
{
UCSR0A=0x00;
UCSR0B=0x98;//接收发送使能
UCSR0C=0x06;
UBRR0H=0x00;//9600
UBRR0L=0x2F;
}
void uart_send(unsigned char c)
{
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = c;
}
int main(void)
{
uart_init();
// PORTD=0x01;
// DDRD=0xFF;
while(1)
{
uart_send('a');
// if(PORTD==0x80) PORTD=0x01;
// else PORTD<<=1;
_delay_ms(500);
}
}
展开
 我来答
百度网友6003d951
2014-07-18 · TA获得超过1026个赞
知道小有建树答主
回答量:231
采纳率:100%
帮助的人:186万
展开全部
1、看看芯片的熔丝位设置的是否正确,是否使用的是内部1m的振荡器
2、看看串口工具的波特率是否和代码里设置的一样
更多追问追答
追问
同样的设置,我用代码驱动LED就可以正常工作,所以说熔丝位和振荡器应该是没错的,软件和调试工具的波特率一样的,9600。我也很纳闷,不知道到底什么错了?
追答
LED可以工作 不代表熔丝位正确,如果使用内部1m的振荡器,芯片同样工作,led只需要高低电平就可以亮,但是串口需要计算每个数据bit的时间。而这个时间据取决于晶振的频率和寄存器的设置,如果你是按照12m的晶振设置寄存器,却用1m的晶振,那收发肯定是乱码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式