BZLDBCSH 2022-08-28 10:27 采纳率: 33.3%
浏览 39
已结题

单片机串口通信中的字符串输出问题

为什么串口通信中不用while(TI)输出的字符串就会出现输出字符串乱码

# include "reg52.h"
# include "intrins.h"

sfr AUXR = 0x8e;

void UartInit()
{
    SCON |= 0x50;
    PCON &= 0x00;
    AUXR |= 0x01;
    
    TMOD |= 0x20;
    
    TL1 = 0xFD;
    TH1 = 0xFD;
    
    TCON = 0x40;    
}

void Delay1000ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    _nop_();
    i = 43;
    j = 6;
    k = 203;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}




void startputzifuchuan(char *str)
{
    while(*str != '\0')
    {
        SBUF = *str;
        while(!TI);
        TI = 0;
        ++str;
}
}
void main()
{
    UartInit();
    while(1)
    {
        Delay1000ms();
        startputzifuchuan("hello word\r\n");
}
}

img

# include "reg52.h"
# include "intrins.h"

sfr AUXR = 0x8e;

void UartInit()
{
    SCON |= 0x50;
    PCON &= 0x00;
    AUXR |= 0x01;
    
    TMOD |= 0x20;
    
    TL1 = 0xFD;
    TH1 = 0xFD;
    
    TCON = 0x40;    
}

void Delay1000ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    _nop_();
    i = 43;
    j = 6;
    k = 203;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}




void startputzifuchuan(char *str)
{
    while(*str != '\0')
    {
        SBUF = *str;
        ++str;
}
}
void main()
{
    UartInit();
    while(1)
    {
        Delay1000ms();
        startputzifuchuan("hello word\r\n");
}
}

img

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-08-28 10:43
    关注

    TI是发送完成标志,你不等待前面发完就往串口里塞新的数据,当然就乱了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 创建了问题 8月28日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同