找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6707|回复: 17
收起左侧

串口发送问题,怎么只发送一串字符串后就不发送了,我写的总是连续发送。

  [复制链接]
ID:188935 发表于 2017-9-18 16:20 | 显示全部楼层 |阅读模式
程序如下:
uchar code zifuchuan[] = {"稳住我们能赢\n"};

void Usat_Init(void)
{
        S0CON = 0x50;  //mode1:01[BIT 7 6]  REN=1[BIT 4]
        P0OC = 0x00;
        P0M = 0x00;
        P00 = 1;
        BD = 1;
        S0RELH = 0x03;
        S0RELL = 0xcc;
        PCON = 0x80;
}
void send(uchar d)                 
{
        S0BUF = d;
        while(!TI0);
        TI0 = 0;
}
void sendc(uchar * pd)
{
        while((*pd) != '\0')
        {
                send(*pd++);
        }
}

void main(void)
{
        Init_System();
        Time_int();
        Usat_Init();
        while(1)
        {     
                WDTR = 0x5A;
                sendc(zifuchuan);       
        }
}

1.png
回复

使用道具 举报

ID:97438 发表于 2017-9-18 16:59 | 显示全部楼层
   while(1)
        {     
                WDTR = 0x5A;
                sendc(zifuchuan);        
                while(1);
        }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:123289 发表于 2017-9-18 19:53 | 显示全部楼层
单步运行一下,自己找问题,才会有长进。
回复

使用道具 举报

ID:60379 发表于 2017-9-18 22:20 | 显示全部楼层
代码没看出问题,估计是显示窗口满了
回复

使用道具 举报

ID:28925 发表于 2017-9-18 22:56 | 显示全部楼层
加个延时试试,每次发送完之后延时一下。
回复

使用道具 举报

ID:188935 发表于 2017-9-19 08:33 | 显示全部楼层
luoluoluo136 发表于 2017-9-18 16:59
while(1)
        {     
                WDTR = 0x5A;

试过了,什么都不发送
回复

使用道具 举报

ID:188935 发表于 2017-9-19 08:33 | 显示全部楼层
yzwzfyz 发表于 2017-9-18 19:53
单步运行一下,自己找问题,才会有长进。

运行正常的
回复

使用道具 举报

ID:188935 发表于 2017-9-19 08:34 | 显示全部楼层
无量寿经 发表于 2017-9-18 22:20
代码没看出问题,估计是显示窗口满了

就是一直在发送啊
回复

使用道具 举报

ID:188935 发表于 2017-9-19 08:35 | 显示全部楼层
ycysky 发表于 2017-9-18 22:56
加个延时试试,每次发送完之后延时一下。

那样只不过是控制了发送一次的时间,我是只想发送一次
回复

使用道具 举报

ID:231508 发表于 2017-9-19 10:26 | 显示全部楼层
估计是显示窗口满了,接收窗口。
回复

使用道具 举报

ID:188935 发表于 2017-9-19 10:47 | 显示全部楼层
kaidxp66 发表于 2017-9-19 10:26
估计是显示窗口满了,接收窗口。

我的意思是指发送一次就不发了,没看到发了这么多啊
回复

使用道具 举报

ID:97438 发表于 2017-9-19 16:04 | 显示全部楼层
渴望壮大 发表于 2017-9-19 10:47
我的意思是指发送一次就不发了,没看到发了这么多啊

按我写的那个,你先打开串口监视,再上电。
回复

使用道具 举报

ID:219796 发表于 2017-9-20 02:03 来自手机 | 显示全部楼层
你把发送函数放到while(1)前面

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:234445 发表于 2017-9-20 18:11 | 显示全部楼层
意思是只要发送一次?但你写在死循环里当然会循环发送
回复

使用道具 举报

ID:608358 发表于 2020-5-22 10:49 | 显示全部楼层
指针要复位吧
回复

使用道具 举报

ID:94031 发表于 2020-5-22 13:19 | 显示全部楼层
你的图片显示,是在连续发送,串口助手一直在收。
回复

使用道具 举报

ID:286327 发表于 2020-5-24 09:40 | 显示全部楼层
你自己程序就是一直发送啊,要只发送一次,自己写while(1)前面吧
回复

使用道具 举报

ID:718123 发表于 2020-5-24 10:57 | 显示全部楼层
我感觉这个就是一直在发送,只不过发送窗口满了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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