全异盲切叶蚁 2021-09-26 10:22 采纳率: 0%
浏览 22
已结题

51单片机I/O口模拟串口接受与发送,接受数据有错误,请问是哪里出问题了呢?


//接收一个字节并发送

#include <reg52.h>
#define uchar unsigned char
sbit RXD0=P1^1;
sbit TXD0=P1^0;

char flag;

uchar T;

void WaitTF0( void )
{
  while(!TF0);
  TF0=0;
}

void S2INI(void)
{
  TMOD |=0x02; 
  TH0=0xA0;   //波特率9600
  TL0=TH0;
  TR0=1; 
  TF0=0;
}
 
void WByte(unsigned int input)
{
  uchar i=8;
    uchar temp;
    
  TR0=1;
    TH0=0xA0;   //9600
  TL0=TH0;
    TXD0=0;                //起始位0
  WaitTF0();   
  while(i--)
  {
    TXD0=(bit)(input & 0x01);
    WaitTF0();
    input>>=1;            //8位数据
  }   
  TXD0=(bit)1;  
  WaitTF0();
  TR0=0;
    flag=0;
}

uchar RByte()            //接收
{
    uchar i=8;
    uchar temp=0;
  if(RXD0==0)
    {
    TR0=1;    
    TH0=0xA0;   //波特率9600
  TL0=TH0;
    WaitTF0(); 
    }
    while(i--)
  {
        temp>>=1;
        temp=temp&0x7f;
        if(RXD==1)
            temp |=0x80;

    }
if(RXD0==1)
{
    WaitTF0();
    flag=1;
}
TR0=0;
return temp;
}

main()
{
    S2INI();
    T=0;
    flag=0;
    RXD0=1;             //初始化,不许接收
    while(1)
    {
        while(RXD0); 
        T=RByte();
        if(flag==1)
          WByte(T);           
    }
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月4日
    • 创建了问题 9月26日

    悬赏问题

    • ¥15 csmar数据进行spss描述性统计分析
    • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
    • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
    • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
    • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
    • ¥15 运动想象脑电信号数据集.vhdr
    • ¥15 三因素重复测量数据R语句编写,不存在交互作用
    • ¥15 微信会员卡等级和折扣规则
    • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
    • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?