qq_45379364 2023-03-18 20:41 采纳率: 82.9%
浏览 35
已结题

关于51单片机串口通讯的问题

**请教各位,为啥我复位后发送的都是00而不是我输入的66 ? 如图所示

#include <REGX52.H>
void URET_TX(unsigned int key)

{    
        
          SBUF=key;//写入数据进SBUF缓存器
        while(TI==0)//检测标志位,是否置1,如果置1,表示数据传输完成
            {TI=0;}//重置标志位位0
         P2=SBUF;//读取发送过来的SBUF数据
         
//完成上述步骤 重新进入总WHILE循环
                
}


void URET_Tu(void)
 
{     
  PCON |= 0x80;        //使能波特率倍速位SMOD
    SCON = 0x50;        //8位数据,可变波特率
    TMOD &= 0x0F;        //设置定时器模式
    TMOD |= 0x20;        //设置定时器模式
    TL1 = 0x15;        //设置定时初值
    TH1 = 0x15;        //设置定时重载值
    TF1 = 0;        //清除TF1标志
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;         //允许止定时器1中断
  ES=1;      //串口中断
     
}
void main(void)
{ 
    URET_Tu();

    while(1)
{ 
    URET_TX(0X66);
}
}


img

  • 写回答

2条回答 默认 最新

  • 五一编程 2023-03-18 20:52
    关注

    应该会在上电时随机发送一个数据,这是由于上电时状态不太稳定造成的,解决办法是程序开始加一个几十毫秒的延时。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分