![]() |
發布時間: 2022-12-18 11:53
正文摘要:在做的項目里有倒計時的功能,用STC 8G1K08設置芯片仿真,自動設定的頻率總是有誤差,并且每次的設定頻率誤差還不一樣。比如: . 用戶設定頻率: 11.059MHz . 調節后的頻率: 11.040MH ... |
搞一個定時器中斷,舉個例子,里面不是有TL0和TH0,,查手冊找到它們的地址,然后用keil的debug,找里面的memory,然后你去搜你要找的l0和h0的地址,然后打斷點運行,看時間變化量就可以了。注意觀察是否重新開始加載值了 |
用DEBUG斷點調試 |
ningsy 發表于 2022-12-19 09:15 對于精確的長時間,STC單片機都是用定時器的 不會用while這種代碼的 至于調節片上的時鐘,感覺沒必要 |
多謝以上各位指導!我會試試看,或許就能用到。 |
用一個IO來指示時間。 |
網上查了一下,有人讓單片機產生1S(或100ms)的波形,配合邏輯分析儀,調整IRTRIM寄存器的值,即可調整STC單片機的頻率。但這個調整是一次性的,不同的單片機,就可能有所不同,不同的環境(特指溫度,也可能不同)。 這就很麻煩了。我還是先接受它自動調整的精度,實在不行了,就接個晶振上去爽快些。 |
ningsy 發表于 2022-12-18 13:51 左下角是一直0的,所以我說沒有辦法直接得到,只能要么用變量記錄時鐘周期,比如開個定時器,每50000個周期,變量+1,然后結合定時器和變量,算出過了多少周期,要么某個IO輸出高低電平,讓第三方芯片來計算。 |
ningsy 發表于 2022-12-18 14:08 下載時可以不需要設置22.1184, 但是,由于頻段的關系,要選同一頻段的,為了避免麻煩,你還是選22.1184吧,8g1k沒有chipID,所以,你只能ROM讀取,記得下載時勾選“末尾添加重要參數”選項,才能讀取成功。最后,這個數值,是出廠是stc測試時最接近22.1184頻率的值,如果這個頻率最終依然無法滿足你的需要,你只能考慮其他時鐘源了。就我的使用結果來看,比電腦自動調的要準太多了。 |
一兩個小時的倒計時是不會有問題的,只要IRC時鐘選擇對了,再用定時器做延時,保證沒有問題 STC8G1K08A,我用來定時六個小時,在分上跟時鐘IC是沒有區別的,但有時會誤差三五分鐘 做項目是不可能讓你每個單片機去調節時鐘的,每個單片機的RC時鐘誤差都是差不多的 如果你要是想知道怎么測量,最好是下載后用IO進行測量,示波器或者邏輯分析儀都可以 |
實際運用中,一小時內這點誤差可以忽略不計。如果對時間精度有特別需求就要另外添置高精度時鐘芯片。 |
要想得到較準的頻率,應當讀取出廠的22.1184校驗值,用這個,再根據你的實際需要分頻,ISP下載設置的頻率是不準的,受限你的電腦,至少我用電腦設能誤差3%以上。 |
直接看不了,只能間接看,比如利用某變量記錄兩個時間點之間的機器周期,又比如某個IO在兩個不同時間點輸出高低電平,第三方采集等。 |