最近用51开发板做AVR串口通信实验(AVR通过转接板与51开发板相连),用AVR自己给自己发数,然后自己接收通过8个led灯看结果,一切正常,但与上位机(串口调试助手)没法通信(51与上位机通信一切正常),用的是PL2303 USB转串口芯片 。请教高手,是不是AVR和51的串口通信电路不一样??
下面是AVR程序:
#include<mytouwenjian.h>
#pragma interrupt_handler read:12//声明接收中断函数
uchar nn,mm=0;
void inst()//初始化
{
UCSRA=0;
UCSRB=(bit(RXCIE)|bit(RXEN)|bit(TXEN));//接收结束中断允许 发送接收使能 不倍速 不校验
UCSRC=bit(URSEL)|0X06;//8位数据 1停止位
UBRRH=0;
UBRRL=71;//晶振11.0592兆 波特率9600
SREG|=bit(7);//开全局中断
DDRD&=~bit(0);//设置RXD为输入
DDRD|=bit(1);//设置TXD为输出
}
void write(uchar date)//发送
{
while(!(UCSRA&bit(UDRE)));//等待发送缓冲器空
UDR=date;
while(!(UCSRA&bit(TXC)));
UCSRA|=bit(TXC);//清发送结束标志
}
void read()
{
UCSRB&=~bit(RXCIE);//关中断
nn=UDR;
//nn=0xF0;
mm=1;
UCSRB|=bit(RXCIE);//开中断
//return date;
}
void main()
{
uchar kkk=0x55;
inst();
DDRA=0XFF;
write(kkk);
while(1)
{
if(mm)
{write(nn);PORTA=nn;mm=0;}//用PORTA=nn 8个led看接收效果
}
// while(1);
}
|