打印
[AVR单片机]

AVR 51串口通信区别疑惑

[复制链接]
1241|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wdmhzh|  楼主 | 2014-1-5 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用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);
}

相关帖子

沙发
qin552011373| | 2014-1-6 08:56 | 只看该作者
你先试试你发的数据直接回到上位机是不是正常的

使用特权

评论回复
板凳
wdmhzh|  楼主 | 2014-1-6 18:18 | 只看该作者
多谢  今天发现RXD引脚空闲时为低电平,不符合串口协议,用程序上拉,正常了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

130

帖子

2

粉丝