找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2563|回复: 7
收起左侧

单片机串口字符串重复发送问题

[复制链接]
ID:1013010 发表于 2022-3-27 21:33 | 显示全部楼层 |阅读模式
本意是想串口发送一次字符串,但是却一直重复发送了。

程序代码如下:
#include<stc12c5a60s2.h>
#include<stdio.h>

#define uchar unsigned char
#define uint  unsigned int


void delay_ms(uint x)
{        uint j;
        for(;x>0;x--)
                for(j=125;j>0;j--);
}


void uart_init() //串口初始化
{        
        SCON=0x50; //串口方式1
        TMOD=0x20; //T1采用定时方式2  
        TH1=TL1=0xfd;//9600b/s
        PCON=0;    //波特率不加倍
        TR1=1;
}


void uart1_send_byte(uchar byte)
{
        SBUF = byte;
        while(!TI); //等待发送完成
        TI=0; //清TI标志位
}


//串口1 发送 字符串
void uart1_send_string(uchar *str)
{
        while(*str!='\0')
        {
                uart1_send_byte(*str++);
        }
}


void main()
{
        uart_init();
        delay_ms(100);
        uart1_send_string("yes,you can!\r\n");
        delay_ms(500);
}
51hei图片20220327213152.png





回复

使用道具 举报

ID:121859 发表于 2022-3-28 05:09 | 显示全部楼层
程序的尾部加一行语句while(1);就可以了,你的程序跑飞了,每执行一次就复位了,相当于重来,如此反复。
回复

使用道具 举报

ID:123289 发表于 2022-3-28 10:57 | 显示全部楼层
main程序结束后,程序运行到什么地方呢?
这一点,由编译平台决定,它的决定是,再回到MAIN!
沙发的方法是,让程序陷在while(1)里,出不去,所以就不会再回到MAIN了。
回复

使用道具 举报

ID:1006852 发表于 2022-3-28 10:58 | 显示全部楼层
你的主程序是,分4个部分,初始化,延时,发送,延时,完成了以后重新开始了。你要想好程序何时执行,执行完成以后如何处理。再来写对应功能代码。
回复

使用道具 举报

ID:1013010 发表于 2022-3-28 11:19 | 显示全部楼层
zhxiufan 发表于 2022-3-28 05:09
程序的尾部加一行语句while(1);就可以了,你的程序跑飞了,每执行一次就复位了,相当于重来,如此反复。

感谢您的热心解答!
回复

使用道具 举报

ID:1013010 发表于 2022-3-28 11:19 | 显示全部楼层
yzwzfyz 发表于 2022-3-28 10:57
main程序结束后,程序运行到什么地方呢?
这一点,由编译平台决定,它的决定是,再回到MAIN!
沙发的方法 ...

感谢您的热心解答!
回复

使用道具 举报

ID:1013010 发表于 2022-3-28 11:20 | 显示全部楼层
percy 发表于 2022-3-28 10:58
你的主程序是,分4个部分,初始化,延时,发送,延时,完成了以后重新开始了。你要想好程序何时执行,执行 ...

感谢您的热心解答!
回复

使用道具 举报

ID:1091909 发表于 2023-8-24 20:57 | 显示全部楼层
zhxiufan 发表于 2022-3-28 05:09
程序的尾部加一行语句while(1);就可以了,你的程序跑飞了,每执行一次就复位了,相当于重来,如此反复。

大佬,为啥我加while(1)之前,和楼主一样的问题,加了之后,计算机直接收不到单片机发送的内容了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表