找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3807|回復(fù): 22
打印 上一主題 下一主題
收起左側(cè)

求一個精準(zhǔn)延時的函數(shù)(51單片機(jī)用)

  [復(fù)制鏈接]
回帖獎勵 10 黑幣 回復(fù)本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:584041 發(fā)表于 2021-1-14 13:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
void delay(unsigned int t)                                
{
    unsigned int i,j;
        for(i=t;i>0;i--)                     
    for(j=112;j>0;j--);
}

類似于這種,輸入變量t, 就延時t毫秒,delay(1000)就是延時1秒。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:824490 發(fā)表于 2021-1-14 15:18 | 只看該作者
用定時器中斷來做比較“精準(zhǔn)“的延時,除此之外別無它法,這個”精準(zhǔn)“取決于你晶體的的溫飄、誤差、電壓等等指標(biāo)。
回復(fù)

使用道具 舉報

板凳
ID:388013 發(fā)表于 2021-1-14 15:47 | 只看該作者
怎么個精準(zhǔn)法,你要的延時最小單位是多少,你用的晶振是多少兆的
回復(fù)

使用道具 舉報

地板
ID:752974 發(fā)表于 2021-1-14 16:20 | 只看該作者
要延時精準(zhǔn),只是相對的精準(zhǔn)。定時部分用匯編寫,再后期調(diào)試修正。
回復(fù)

使用道具 舉報

5#
ID:866313 發(fā)表于 2021-1-14 17:11 | 只看該作者
  1. // 全局變量,ms時標(biāo)
  2. unsigned char xms = 0;

  3. // 定時函數(shù)
  4. void delay(unsigned int t) {
  5.     TR0 = 1; // 定時器 T0 開始計時
  6.     while (xms != t); // 直至計時至 t ms 退出
  7. }

  8. // 定時器 T0 初始化
  9. void t0_init() {
  10.     TMOD = 0x02; // 定時器 T0,方式 2
  11.     TH0 = (256-200)%256; // 定時200us 初值
  12.     TL0 = (256-200)%256;
  13.     EA = 1;
  14.     ET0 = 1;
  15.     TR0 = 0;
  16. }

  17. void t0_srv() interrupt 1 {
  18.     static unsigned char 200us = 0;
  19.     200us++;
  20.     if (200us == 5) {
  21.         xms++;
  22.         200us = 0;
  23.     }
  24. }
復(fù)制代碼


不知道這樣可不可以呢?
回復(fù)

使用道具 舉報

6#
ID:390416 發(fā)表于 2021-1-14 18:25 | 只看該作者
第一、不同的單片機(jī),比如STC12和STC8 速度就不同。你算那么精準(zhǔn)有啥用?
回復(fù)

使用道具 舉報

7#
ID:390416 發(fā)表于 2021-1-14 18:31 | 只看該作者
第一、不同的單片機(jī),比如STC12跟STC8就不一樣。你算這么精準(zhǔn)有啥用?
第二、同一片單片機(jī)芯片,不同的晶振頻率速度也不一樣。你算這么精準(zhǔn)有啥用?
第三、相同的時鐘,不同的指令,速度也不相同。你算這么精準(zhǔn)有啥用?
第四、不同的變量長度,執(zhí)行速度也不同。你算這么精準(zhǔn)有啥用?
第五、不同的變量存放位置,執(zhí)行速度也不同。你算這么精準(zhǔn)有啥用?
第六、中斷一打開,這種延遲函數(shù) 誤差可能會增加250%,你算這么精準(zhǔn)有啥用?
所以,看《人人學(xué)會單片機(jī)》課程,來學(xué)習(xí)我們的框架式編程方式。沒要求的用計數(shù)延遲,有要求的必須定時器。程序里面不能這樣死等、提高代碼執(zhí)行效率才是最需要考慮的事情。
回復(fù)

使用道具 舉報

8#
ID:398477 發(fā)表于 2021-1-14 20:14 來自手機(jī) | 只看該作者
可以用一些輔助軟件計算的呢,論壇里也都有!
回復(fù)

使用道具 舉報

9#
ID:584041 發(fā)表于 2021-1-14 20:34 | 只看該作者
1984528951 發(fā)表于 2021-1-14 15:47
怎么個精準(zhǔn)法,你要的延時最小單位是多少,你用的晶振是多少兆的

當(dāng)然是12MHZ的喲
回復(fù)

使用道具 舉報

10#
ID:584041 發(fā)表于 2021-1-14 20:35 | 只看該作者
留住這一刻2014 發(fā)表于 2021-1-14 20:14
可以用一些輔助軟件計算的呢,論壇里也都有!

是單片機(jī)小精靈吧,我知道哇
回復(fù)

使用道具 舉報

11#
ID:584041 發(fā)表于 2021-1-14 20:36 | 只看該作者
cedtek 發(fā)表于 2021-1-14 17:11
不知道這樣可不可以呢?

就是用定時器嘛,這個可以。
回復(fù)

使用道具 舉報

12#
ID:339654 發(fā)表于 2021-1-14 21:37 | 只看該作者
STC單片機(jī)的下載程序里頭有軟件延時程序計算器很方便
回復(fù)

使用道具 舉報

13#
ID:584814 發(fā)表于 2021-1-14 22:57 | 只看該作者
精準(zhǔn)就呵呵了罷,除非你對精準(zhǔn)的要求和“最美”一樣隨便就能拉一車。
軟件寫得再精準(zhǔn),沒有精準(zhǔn)的硬件還是不可能,難不成你是航天科技派出的探子
硬件大多都有個寬容度,大多對延時要求都不高,甚至很多步驟省去也能正常工作的,你可以調(diào)試好硬件后對單片機(jī)的主頻(軟件寫或硬改晶振)動一下試試就知道了。
回復(fù)

使用道具 舉報

14#
ID:401564 發(fā)表于 2021-1-15 08:53 | 只看該作者
STC下載器有專用的軟件延時,直接生成C或者匯編就可以了
就算是一樣的時鐘,不同的STC系列延時都不一樣的
想要真正的精準(zhǔn),直接上匯編
回復(fù)

使用道具 舉報

15#
ID:854772 發(fā)表于 2021-1-15 15:02 | 只看該作者
用匯編吧,可以自己計算每條指令的時間
回復(fù)

使用道具 舉報

16#
ID:584041 發(fā)表于 2021-1-16 21:21 | 只看該作者
人人學(xué)會單片機(jī) 發(fā)表于 2021-1-14 18:31
第一、不同的單片機(jī),比如STC12跟STC8就不一樣。你算這么精準(zhǔn)有啥用?
第二、同一片單片機(jī)芯片,不同的晶 ...

嗯,有道理喲
回復(fù)

使用道具 舉報

17#
ID:235954 發(fā)表于 2021-1-18 15:41 | 只看該作者
定時器一開,誤差值偏大的
回復(fù)

使用道具 舉報

18#
ID:878649 發(fā)表于 2021-1-18 16:27 | 只看該作者
匯編可能會相對精準(zhǔn)一些
回復(fù)

使用道具 舉報

19#
ID:851922 發(fā)表于 2021-1-18 16:59 | 只看該作者
要延時精準(zhǔn),只是相對的精準(zhǔn)。不同的單片機(jī)是不同的。
回復(fù)

使用道具 舉報

20#
ID:847443 發(fā)表于 2021-1-25 17:05 | 只看該作者
和你的晶振有關(guān)系,晶振的頻率越高精度越高。
回復(fù)

使用道具 舉報

21#
ID:811405 發(fā)表于 2021-1-27 11:37 | 只看該作者
利用定時器進(jìn)行延時精確,其它的延時都有一定的誤差
回復(fù)

使用道具 舉報

22#
ID:879348 發(fā)表于 2021-1-27 13:45 | 只看該作者
打開STC官方軟件延時比較靠譜,前提是程序不能由中斷響應(yīng)
回復(fù)

使用道具 舉報

23#
ID:854242 發(fā)表于 2021-1-27 14:46 | 只看該作者
取決于晶振,采用外部晶振準(zhǔn)確度較高,但是一般ms級延時,內(nèi)部晶振可以了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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