欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 想問一下可以使用keil單片機實現十分鐘的延時嗎 [打印本頁]

作者: 13199937120    時間: 2020-3-3 13:28
標題: 想問一下可以使用keil單片機實現十分鐘的延時嗎
我在網上搜索的都是延時幾十毫秒,我想問下可以實現十幾分鐘的延時嗎?應該怎么實現,程序是什么?在哪里設置
作者: xuyaqi    時間: 2020-3-3 14:05
可以在延時中斷里加變量記錄中斷次數,根據中斷次數就可得到更長的延時時間。
作者: lanxin    時間: 2020-3-3 14:18
最簡單的延時就是采用雙層for
作者: lanxin    時間: 2020-3-3 14:22
最簡單的延時是采用雙層for(....)循環,既然可以實現幾十毫秒的,多加幾次循環就可以很輕松的實現,幾十分鐘的那種,不過這種循環消耗單片機的CPU時間,建議你去查一下定時器的用法,采用定時器中斷來實現幾十分鐘的長時間延時。
作者: f556    時間: 2020-3-3 14:38
完全可以,keil下我用STC11F04E實現了高精度長延時(幾百秒)。
1、先確認主晶振頻率,并計算。計算方法沒在家。
2、MCU主頻用最大分頻
3、每60S設一個計數變量,可以計分鐘值了。
作者: bemc    時間: 2020-3-3 14:44
多層循環 不斷的重復
作者: 天風情    時間: 2020-3-3 14:45
C語言沒學好吧,你能實現毫秒級的延時,循環一千次不就是秒級延時了嗎?再循環六十次不就是分鐘級的延時了嗎?
作者: 時間蒼白了誓言    時間: 2020-3-3 14:47
可以,循環就可以了
作者: 時間蒼白了誓言    時間: 2020-3-3 14:47
可以,循環延時就可以了
作者: csmyldl    時間: 2020-3-3 15:19
可以的,延時長的時間都是采用累加形式,不只是設置就可達到的
作者: brew9    時間: 2020-3-3 15:23
延時函數精度不高,實在要用可如下操作:
  1. void main()
  2. {                       
  3.         unsigned int i=0;
  4.         unsigned char j=0;

  5.         while(1)
  6.         {
  7.                 dealy_10ms();        //延時10ms函數
  8.                 i++;       
  9.                 if(i==30000)        //(30000*10/1000/60)=5分鐘,每5鐘j自加1次
  10.                 {
  11.                         i=0;
  12.                         j++;
  13.                 }
  14.                 if(j==3)        //相當于3*5=15分鐘的延時
  15.                 {
  16.                          //你想執行的語句

  17.                 }
  18.         }
  19. }
復制代碼
以上方法中,雖然dealy_10ms()延時了10ms,但一個while循環顯然要大于10ms,這會產生誤差,且延時函數本身也存在誤差。

要提高精度的話可以用定時器來做累加,如果覺得精度還不夠,可以用ds1302/ds3231時鐘模塊提供時間基準。通常對數據的采集往往需要時鐘模塊來配合。


作者: 醬油兌啤酒    時間: 2020-3-3 15:35
如果變量ms是1ms加1,那在ms加到1000的時候不就是1s了,就讓變量s加1,在s加到300的時候不就是5min了嗎
作者: 13199937120    時間: 2020-3-3 16:18
brew9 發表于 2020-3-3 15:23
延時函數精度不高,實在要用可如下操作:以上方法中,雖然dealy_10ms()延時了10ms,但一個while循環顯然要 ...

謝謝你,我想問下這個誤差如果設置十分鐘會有多長的誤差
作者: brew9    時間: 2020-3-3 17:30


作者: hantu    時間: 2020-3-4 00:40
用定時器中斷,怎么做的電子時鐘就怎么計時十幾分鐘,在延時的地方檢測這個計時到了沒有就行
作者: yuzhengxin    時間: 2020-3-4 08:41
一個比較精確的方法(循環不是很精確):使用T0定時(16位,使能溢出中斷,中斷里讓某個IO口翻轉),翻轉的IO口給T1計數(外部輸入),這樣相當于一個65536*2*65536=33bit的計數器。如果主頻是12M(基本51單片機),(T0)一次就是1us,1us*2^33=2個多小時(嫌不夠的話,就再串個定時器),區區10幾分鐘....
作者: 黎明初至    時間: 2020-3-4 09:24
可以的。嵌套,但是軟件仿真的和實際的還是有出入的。需要自己調整。
作者: ii11nnocent    時間: 2020-3-4 09:34
可以采取兩種辦法:
1、利用定時器延時,一次定時60ms,然后在定時器中斷中設置標志變量,使這個標志變量從1開始加,一直加到10000,然后重新開始計數,就可以實現10分鐘的延時。
2、利用延時函數,多次循環。
作者: 余生不負    時間: 2020-3-6 00:06
用定時器可以實現,并且程序執行效率高
作者: hghvhgv    時間: 2020-3-6 10:34
完全可以你用庫函數調用delay()給參數就行
作者: hghvhgv    時間: 2020-3-6 10:44
用滴答定時器也行,程序簡單易理解

作者: qcm755    時間: 2020-3-6 14:59
多層循環
作者: 這一生只為你    時間: 2020-3-6 19:09
需要的話,延時一年都行。我用的是定時器中斷,每1ms觸發中斷,這里就可以使用ms延時,然后ms>1000以后,s++,這就是秒延時,s>60了,min++,這就是分鐘延時,當min>60了,hour++,這就是小時延時,這樣就可以實現任意的延時了。
作者: 271671439    時間: 2020-3-7 05:54
多層嵌套就可以實現,想要精確就好好算算每條指令執行時間
作者: zhy123654    時間: 2020-3-7 08:49
延時時間稍長就要用定時器,其他的都無所謂




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1