找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 6088|回復(fù): 9
收起左側(cè)

串口通信加了延時(shí),但是發(fā)射速度還是非常快

[復(fù)制鏈接]
ID:110744 發(fā)表于 2016-4-15 14:44 | 顯示全部樓層 |閱讀模式
用51單片機(jī)串口發(fā)送數(shù)據(jù),每發(fā)一個(gè)數(shù)據(jù)設(shè)了0.5s的延長(zhǎng),但實(shí)際情況是延時(shí)好像沒起作用,單片機(jī)一直在快速的發(fā)送數(shù)據(jù)。
程序如下:
#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)   //延時(shí)10ms*c程序
{
    unsigned char a, b;
    for (;c>0;c--)
                        for (b=38;b>0;b--)
                                for (a=130;a>0;a--);      
}

回復(fù)

使用道具 舉報(bào)

ID:97438 發(fā)表于 2016-4-15 17:11 | 顯示全部樓層
延時(shí)函數(shù)的問題。你可以軟件仿真一下,這個(gè)延時(shí)函數(shù)不對(duì)。

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:99938 發(fā)表于 2016-4-15 17:32 | 顯示全部樓層
最好加個(gè)定時(shí)中斷,接收數(shù)據(jù)后,開啟中斷就好了,延時(shí)感覺效果不佳

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:110744 發(fā)表于 2016-4-16 14:15 | 顯示全部樓層
luoluoluo136 發(fā)表于 2016-4-15 17:11
延時(shí)函數(shù)的問題。你可以軟件仿真一下,這個(gè)延時(shí)函數(shù)不對(duì)。

這個(gè)延時(shí)仿真看了下是0.25s,實(shí)際情況1s大概能發(fā)10個(gè)數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:110744 發(fā)表于 2016-4-16 14:16 | 顯示全部樓層
shenjinliang 發(fā)表于 2016-4-15 17:32
最好加個(gè)定時(shí)中斷,接收數(shù)據(jù)后,開啟中斷就好了,延時(shí)感覺效果不佳

這個(gè)延時(shí)仿真是0.25s,我就想知道他為什么會(huì)1s發(fā)10個(gè)
回復(fù)

使用道具 舉報(bào)

ID:110744 發(fā)表于 2016-4-16 14:58 | 顯示全部樓層
luoluoluo136 發(fā)表于 2016-4-15 17:11
延時(shí)函數(shù)的問題。你可以軟件仿真一下,這個(gè)延時(shí)函數(shù)不對(duì)。

重新看了一下,這個(gè)延時(shí)函數(shù)在有的程序里延時(shí)是0.5s,在這個(gè)程序里是0.08s.仿真晶振選的一樣。不知道為什么會(huì)差這么多
回復(fù)

使用道具 舉報(bào)

ID:110744 發(fā)表于 2016-4-16 14:58 | 顯示全部樓層
shenjinliang 發(fā)表于 2016-4-15 17:32
最好加個(gè)定時(shí)中斷,接收數(shù)據(jù)后,開啟中斷就好了,延時(shí)感覺效果不佳

重新看了一下,這個(gè)延時(shí)函數(shù)在有的程序里延時(shí)是0.5s,在這個(gè)程序里是0.08s.仿真晶振選的一樣。不知道為什么會(huì)差這么多
回復(fù)

使用道具 舉報(bào)

ID:114560 發(fā)表于 2016-4-16 15:12 | 顯示全部樓層
延時(shí)太短了
void delay_ms(unsigned char ms)
{
     unsigned int i;
         do{
              i = MAIN_Fosc / 13000;
                  while(--i)        ;
     }while(--ms);
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:110744 發(fā)表于 2016-4-17 10:07 | 顯示全部樓層
知道了,之前頭文件用的reg51.h,是延時(shí)0.5s�,F(xiàn)在換了芯片用的stc12c5a60s2.h,不同芯片延時(shí)不一樣

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:97438 發(fā)表于 2016-4-27 09:38 | 顯示全部樓層
風(fēng)逸雨青 發(fā)表于 2016-4-17 10:07
知道了,之前頭文件用的reg51.h,是延時(shí)0.5s�,F(xiàn)在換了芯片用的stc12c5a60s2.h,不同芯片延時(shí)不一樣

那些頭文件是包含以下特殊功能寄存器的定義什么的呢,不同單片機(jī)這一部分是有不同的,必須要用到相應(yīng)單片機(jī)的頭文件才可以以喲

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表