lsn2012 发表于 2012-9-23 19:14:52

为什么用串口调试助手接收到的数据与程序的不匹配

我用的AVR ATmega128做与PC机通信,结果运行后串口调试助手上显示的数和程序上写的不一样,哪里的问题呢?
程序如下:
#include<avr/io.h>
#include<avr/interrupt.h>

#define F_CPU8000000
#define BAUD   38400


int main(void)
{
UBRR0H = ((F_CPU/BAUD/16-1)>>8);
UBRR0L = (F_CPU/BAUD/16-1);
UCSR0B = (1<<RXEN)|(1<<TXEN);
UCSR0C = (1<<USBS)|(3<<UCSZ0);

sei();

while(!(UCSR0A & (1<<UDRE)));
UDR0=0x55;

while(1);

}
出口调试助手设置的都一样,16进制下,发送0x55,结果显示收到B5,发送0x10,结果收到30,这是怎么回事?

albert_w 发表于 2012-9-23 19:20:52

波特率对吗,128有没有分频一说,代码就不看了,头大

老婆爱吃虾 发表于 2012-9-23 20:22:45

看串口助手上的参数和单片机是否一致,波特率,数据位,校验位,停止位

lsn2012 发表于 2012-9-23 21:37:24

老婆爱吃虾 发表于 2012-9-23 20:22 static/image/common/back.gif
看串口助手上的参数和单片机是否一致,波特率,数据位,校验位,停止位

这些都一致,而且我特意换了一下数据,结果还那样,我换了一台电脑,结果还那样。。。很无奈

祥子 发表于 2012-9-23 21:49:28

加个延时再发送,而且可以搞个循环发送
页: [1]
查看完整版本: 为什么用串口调试助手接收到的数据与程序的不匹配