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

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

为什么串口通信中不用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 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭