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

標題: 關于單片機1秒定時的疑問 [打印本頁]

作者: ningsy    時間: 2022-12-19 10:28
標題: 關于單片機1秒定時的疑問
需要做一個一秒鐘的倒計時功能,可以設一個1ms定時器,循環1000次,也可以設一個50ms定時器,循環20次。請問哪種時間比較準確?兩種方法系統開銷有差別嗎?(因為還有很多其他功能,循環次數多會影響其他功能運行嗎?)


作者: xianfajushi    時間: 2022-12-19 11:25
定時器誤差受程序其他部分影響不小,合理的程序才能保證秒鐘的準確.
作者: ytchfp163    時間: 2022-12-20 01:13
設一個單片機工作于12M晶體震蕩器,它的時鐘周期是1/12(微秒)。它的一個機器周期是12*(1/12)也就是1微秒。所以設置1s定時,無論怎么設置定時器、怎么循環,理論上運行的機器周期是一樣的,即總循環次數是一樣的。
作者: qsssuv    時間: 2022-12-20 09:52
準確與否,看給定時器的值準不準,比如65536-11059200/12*50/1000=19456,這樣定時50ms,結果是個整數。如果定時1ms,那么在計算11059200/12*1/1000=921.6,會有小數,這樣就會有精度損失。
作者: 凍死的企鵝    時間: 2022-12-20 10:02
其它功能盡量不要寫到中斷程序里,不然會有誤差
作者: 188610329    時間: 2022-12-20 10:22
如果,一上來就是奔著1秒去的,如果用的是沒有重載功能89c51這種片子,則兩種都不好。 應該按,第一次跑余,后面都跑滿65536來設計。 如是帶自動重載的定時器,則50ms較好。如果是帶分頻計數器這種,應直接定1秒。總之應根據使用的單片機來做合理設置。
作者: ningsy    時間: 2022-12-20 10:36
qsssuv 發表于 2022-12-20 09:52
準確與否,看給定時器的值準不準,比如65536-11059200/12*50/1000=19456,這樣定時50ms,結果是個整數。如 ...

我都是用的STC-ISP定時器計算器代碼,精確度怎樣?11.0592M和12M主頻有差別么?




作者: ningsy    時間: 2022-12-20 10:59
188610329 發表于 2022-12-20 10:22
如果,一上來就是奔著1秒去的,如果用的是沒有重載功能89c51這種片子,則兩種都不好。 應該按,第一次跑余 ...

現在用的是STC8G1K08(兼容STC8H1K08),定時器2,50ms 12T自動重載,STC-ISP定時器計算器的代碼。用山寨邏輯分析儀測試1S方波脈寬,每次測還不一樣,有時候準的很,多數時候要慢零點幾毫秒。可能IRC頻率自動調整誤差也有影響。

您說的“分頻計數器”是什么呢?我這個項目代碼空間快不夠了,還想用USB來升級,未來準備改成STC8H8K64U,能直接產生1秒時基嗎?


void Timer2Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0xFB;                //定時器時鐘12T模式
        T2L = 0x00;                //設置定時初始值
        T2H = 0x4C;                //設置定時初始值
        AUXR |= 0x10;                //定時器2開始計時
}

作者: coody_sz    時間: 2022-12-20 11:04
定時器工作于自動重裝方式,1ms或50ms,精度一樣,取決于晶振的精度。
作者: xunzhaod    時間: 2022-12-20 11:08
跟你循環多少次其實沒多大關系,準不準看晶振,一般外部晶振可以達到0.001的誤差,內部晶振1%-3%的誤差。想要看看精確度,最好看看芯片手冊
作者: wufa1986    時間: 2022-12-20 11:58
看你對準的要求怎樣
作者: 188610329    時間: 2022-12-20 14:14
ningsy 發表于 2022-12-20 10:59
現在用的是STC8G1K08(兼容STC8H1K08),定時器2,50ms 12T自動重載,STC-ISP定時器計算器的代碼。用山寨 ...

STC8G  的 定時器2 有 8位預分頻(TM2PS) 寄存器,你可以直接 64分頻后,直接得到1秒的 定時時間。以你現有的例子為例:
void Timer2Init(void)                //1秒@11.0592MHz
{
        AUXR &= 0xFB;                //定時器時鐘12T模式
        P_SW2 |= 0x80;
        TM2PS = 63;       //64分頻
        T2L = 0xC0;                //設置定時初始值 65536-1440
        T2H = 0xC7;                //設置定時初始值
        AUXR |= 0x10;                //定時器2開始計時
}
作者: ningsy    時間: 2022-12-20 16:18
188610329 發表于 2022-12-20 14:14
STC8G  的 定時器2 有 8位預分頻(TM2PS) 寄存器,你可以直接 64分頻后,直接得到1秒的 定時時間。以你 ...

謝謝前輩指導!我試一下。
作者: fishafish    時間: 2023-1-20 15:00
通常都是有誤差的,可以在循環里放一個IO口的Toggle 語句,然后用示波器看端口輸出方波波長,然后調整語句就能準確了
作者: 君工創    時間: 2023-1-21 09:29
單從對別的函數的影響來考慮的話,當然是中斷的次數越少越好。
作者: 新鄉家電維修    時間: 2023-1-21 13:19
你要是會點單片機知識就不會問了,延時是最基層的入門程序。你不會告訴你也不會用
作者: npn    時間: 2023-1-21 15:47
定時器中斷定1秒必須設為自動重裝初值模式,手動重裝誤差大,有多個中斷應設為高優先級。
作者: ningsy    時間: 2023-1-21 16:19
新鄉家電維修 發表于 2023-1-21 13:19
你要是會點單片機知識就不會問了,延時是最基層的入門程序。你不會告訴你也不會用

確定了,定時器最后用的是2ms時長。中斷里3個標志位,1個2ms掃描EC11,1個500ms閃動數碼管,1個1s給倒計時。
作者: coody_sz    時間: 2023-1-21 16:24
使用定時器,自動重裝模式不會引入誤差,時間精度跟晶振一致,你用一個0.01ppm的恒溫晶振,年誤差不超過0.3秒,我就做有這么一個。
作者: ningsy    時間: 2023-1-21 16:37
新鄉家電維修 發表于 2023-1-21 13:19
你要是會點單片機知識就不會問了,延時是最基層的入門程序。你不會告訴你也不會用

定時器0軟件重裝控制電機調速,定時器1軟件重裝控制液體體積倒數,定時器3自動重裝掃描ec11,按鍵和產生500ms和1秒時基信號。3個定時器全用完了。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产亚洲精品91 | 91成人免费 | 国产黄色大片在线免费观看 | 国产999精品久久久影片官网 | 国产在线一区二区 | 亚洲欧美日韩系列 | 久久综合久色欧美综合狠狠 | 综合第一页 | 成人欧美一区二区三区色青冈 | 亚洲视频在线免费 | 精品一区二区观看 | 黄色视频a级毛片 | 欧美激情久久久 | 一区二区三区视频免费观看 | 亚洲精品一二三区 | 综合国产| 一区二区三区四区在线 | 在线日韩福利 | 黄色毛片免费看 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 久久com | 中文字幕综合 | 你懂的国产 | 一区二区免费 | 久久99视频| 99视频在线免费观看 | 久久久久国产一区二区三区四区 | 久久综合狠狠综合久久 | 天堂成人国产精品一区 | 成人三级视频 | 亚洲午夜精品视频 | 国产欧美精品区一区二区三区 | 91婷婷韩国欧美一区二区 | 黄色在线免费看 | 99精品久久久久久中文字幕 | 欧美a∨| 国产一区二区三区精品久久久 | 色综合视频| www.xxxx欧美| 久久精品成人热国产成 | 国产资源网|