找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5053|回复: 9
打印 上一主题 下一主题
收起左侧

串口通信加了延时,但是发射速度还是非常快

[复制链接]
跳转到指定楼层
楼主
ID:110744 发表于 2016-4-15 14:44 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
用51单片机串口发送数据,每发一个数据设了0.5s的延长,但实际情况是延时好像没起作用,单片机一直在快速的发送数据。
程序如下:
#include<stc12c5a60s2.h>
void uartconfig();
void delay10ms(unsigned int c) ;
unsigned char dat[]="a";
void main()
{
        unsigned char i;
        uartconfig();
        while(1)
        {
                for(i=0;i<1;i++)
                {
                        SBUF=dat[i];
                        while(TI==0);
                        TI=0;
                }
                delay10ms(50);
        }
}
void uartconfig()      //4800波特率
{
        SCON=0x40;
        TMOD=0x20;
        PCON=0x80;
        TL1=0xf3;
        TH1=0xf3;
        TR1=1;
}
void delay10ms(unsigned int c)   //延时10ms*c程序
{
    unsigned char a, b;
    for (;c>0;c--)
                        for (b=38;b>0;b--)
                                for (a=130;a>0;a--);      
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:110744 发表于 2016-4-16 14:15 | 显示全部楼层
luoluoluo136 发表于 2016-4-15 17:11
延时函数的问题。你可以软件仿真一下,这个延时函数不对。

这个延时仿真看了下是0.25s,实际情况1s大概能发10个数据
回复

使用道具 举报

板凳
ID:110744 发表于 2016-4-16 14:16 | 显示全部楼层
shenjinliang 发表于 2016-4-15 17:32
最好加个定时中断,接收数据后,开启中断就好了,延时感觉效果不佳

这个延时仿真是0.25s,我就想知道他为什么会1s发10个
回复

使用道具 举报

地板
ID:110744 发表于 2016-4-16 14:58 | 显示全部楼层
luoluoluo136 发表于 2016-4-15 17:11
延时函数的问题。你可以软件仿真一下,这个延时函数不对。

重新看了一下,这个延时函数在有的程序里延时是0.5s,在这个程序里是0.08s.仿真晶振选的一样。不知道为什么会差这么多
回复

使用道具 举报

5#
ID:110744 发表于 2016-4-16 14:58 | 显示全部楼层
shenjinliang 发表于 2016-4-15 17:32
最好加个定时中断,接收数据后,开启中断就好了,延时感觉效果不佳

重新看了一下,这个延时函数在有的程序里延时是0.5s,在这个程序里是0.08s.仿真晶振选的一样。不知道为什么会差这么多
回复

使用道具 举报

6#
ID:110744 发表于 2016-4-17 10:07 | 显示全部楼层
知道了,之前头文件用的reg51.h,是延时0.5s。现在换了芯片用的stc12c5a60s2.h,不同芯片延时不一样

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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