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

单片机程序用模拟软件与串口调试助手V2.2没有问题#include<iom16v.h>#include<macros.h>#defineF_CPU8000000#defi... 单片机程序 用模拟软件与串口调试助手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进制接收
展开
 我来答
qinyixia1023
2013-08-19
知道答主
回答量:13
采纳率:0%
帮助的人:8.7万
展开全部
现在你的这个问题解决了没有啊,我也遇到了类似的情况。。求帮助啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-31
展开全部
有没有 仿真 过?
建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码
追问
我用的就是proteus 的仿真软件,在proteus上没有问题,做到板子上面后每次发送后接收和结果都是80.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式