久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3800|回復: 22
打印 上一主題 下一主題
收起左側

求一個精準延時的函數(51單片機用)

  [復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

  3. // 定時函數
  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. }
復制代碼


不知道這樣可不可以呢?
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

當然是12MHZ的喲
回復

使用道具 舉報

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

是單片機小精靈吧,我知道哇
回復

使用道具 舉報

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

就是用定時器嘛,這個可以。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

嗯,有道理喲
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

19#
ID:851922 發表于 2021-1-18 16:59 | 只看該作者
要延時精準,只是相對的精準。不同的單片機是不同的。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产一区二区三区 | 在线观看国产精品视频 | 在线免费观看欧美 | japanhdxxxx裸体 | 少妇午夜一级艳片欧美精品 | 欧美一级视频在线观看 | 久久久免费 | www免费视频 | 午夜免费福利片 | 日韩欧美中文字幕在线观看 | 久久婷婷色 | 亚洲在线日韩 | 欧美久久久久久 | 97精品国产97久久久久久免费 | 精品国产乱码久久久久久老虎 | 中文字幕一区二区三区日韩精品 | 一区二区在线不卡 | 国产亚洲一区在线 | 啪一啪 | 免费看啪啪网站 | 在线免费黄色小视频 | 久久久影院| 国产不卡在线 | 久久国产精品一区二区三区 | 视频一二三区 | 精品99爱视频在线观看 | 国产精品区二区三区日本 | www.色.com| 国产美女一区 | 天天干天天操天天爽 | 午夜欧美一区二区三区在线播放 | 伊人亚洲| 超碰在线人人干 | 国产成人免费视频 | 亚洲精品一区二 | 99成人精品| 97久久国产| 国产精品一二区 | 九九九久久国产免费 | 成人影视网 | 女朋友的闺蜜3韩国三级 |