单片机与PC通信,用串口调试助手V2.2发送数据后,总接收到80, 这是什么原因?请高人帮忙!!

单片机程序 用模拟软件与串口调试助手V2.2没有问题
#include<iom16v.h>
#include<macros.h>
#define F_CPU 8000000
#define BAUD 9600
#define uint unsigned int
#define uchar unsigned char

uchar rdata;
void uart_init(void)
{
UBRRH = (F_CPU /BAUD/16-1)/256;
UBRRL = (F_CPU /BAUD/16-1)%256;
UCSRB |= (1 << RXEN )|(1 << TXEN)|(1 << RXCIE);
SEI();
//DDRD|=0X02;
}
void delay(uint ms)
{
uint x,y;
for(x=0;x<ms;x++)
{
for(y=0;y<1141;y++);
}
}

void uart_sendb(uchar tdata)//发送字符
{
while(!(UCSRA&(BIT(UDRE))));
UDR=tdata;
while(!(UCSRA&(BIT(TXC))));
UCSRA|=BIT(TXC);
}

int puts(char *s)
{
while(*s)
{
uart_sendb(*s);
s++;
}
uart_sendb(0x0a);
uart_sendb(0x0d);
return 1;
}

void main(void)
{
uart_init();
DDRA=0XFF;
while(1)
{

}

}

#pragma interrupt_handler uart_rx:12
void uart_rx(void)
{
unsigned long i;
CLI();
while( !(UCSRA & (1<<UDRE)));
rdata=UDR;
SEI();

UDR=rdata;

i=rdata;

switch(i)
{

case 0x01 : PORTA=BIT(0);break;

case 0x02 : PORTA=BIT(1);break;

case 0x03 : PORTA=BIT(2);break;

case 0x04 : PORTA=BIT(3);break;

case 0x05 : PORTA=BIT(4);break;

case 0x06 : PORTA=BIT(5);break;

case 0x07 : PORTA=BIT(6);break;

case 0x08 : PORTA=BIT(7);break;

case 0x09 : PORTA=0Xff;break;

case 0x00 : PORTA=0X00;break;
}

}
16进制发送,16进制接收

第1个回答  2013-08-19
现在你的这个问题解决了没有啊,我也遇到了类似的情况。。求帮助啊。
第2个回答  2011-08-31
有没有 仿真 过?
建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码追问

我用的就是proteus 的仿真软件,在proteus上没有问题,做到板子上面后每次发送后接收和结果都是80.

相似回答
大家正在搜