標(biāo)題: 關(guān)于51單片機(jī)定時(shí)計(jì)數(shù)器程序問題 [打印本頁]

作者: 馮均杰11    時(shí)間: 2020-12-5 23:20
標(biāo)題: 關(guān)于51單片機(jī)定時(shí)計(jì)數(shù)器程序問題
各位大佬,小弟在學(xué)習(xí)51單片機(jī)的時(shí)候有一個(gè)問題一直困惑著我,希望大佬們解惑
就是51單片機(jī)在執(zhí)行主函數(shù)的時(shí)候定時(shí)器里面的程序是單獨(dú)進(jìn)行的,調(diào)用到定時(shí)計(jì)數(shù)器函數(shù)的時(shí)候才開始進(jìn)行的呢?
比如我一個(gè)計(jì)時(shí)程序,需要用到定時(shí)計(jì)數(shù)器執(zhí)行1s的定時(shí),1秒到了,進(jìn)行顯示,這是定時(shí)計(jì)數(shù)器程序還在運(yùn)行嗎?
作者: 千江水    時(shí)間: 2020-12-5 23:20
定時(shí)器和你的主程序是分開獨(dú)立運(yùn)行的,當(dāng)你打開了定時(shí)器開關(guān)后,主程序在運(yùn)行的同時(shí),定時(shí)器也在跑。至于你問的問題,1s后定時(shí)器是否還在運(yùn)行,要看你的程序是怎么寫的吧,如果你的定時(shí)時(shí)間設(shè)置的是1s鐘,但是沒有把TH和TL重新賦值,我記得定時(shí)器好象會(huì)重新從0開始計(jì)數(shù),所以下一次定時(shí)的時(shí)間就不會(huì)是1s鐘了。
作者: xianfajushi    時(shí)間: 2020-12-6 09:00
去補(bǔ)充一下計(jì)時(shí)定時(shí)知識(shí),蛋騙雞定時(shí)器硬件是獨(dú)立的,這點(diǎn)該明白。
作者: suncat0504    時(shí)間: 2020-12-6 10:15
    “千江水”說得對(duì)。單片機(jī)的定時(shí),一般是是賦予初值,并啟動(dòng)定時(shí)器開始工作后,計(jì)數(shù)值自動(dòng)加一。直到溢出,產(chǎn)生中斷。在中斷處理程序中,通常是重新賦予定時(shí)寄存器初始值,以保證下次計(jì)時(shí)周期正確, 然后處理你想要做的。對(duì)于計(jì)時(shí)周期比較長,而中斷處理程序執(zhí)行時(shí)間比較短的,不需要關(guān)中斷、開中斷這樣的處理。但是如果出現(xiàn)定時(shí)周期小于中斷處理代碼執(zhí)行時(shí)間的,如果不加入關(guān)、開中斷處理,會(huì)導(dǎo)致中斷的重復(fù)嵌套調(diào)用,導(dǎo)致堆棧溢出而死機(jī)。
    所以,你一定要確認(rèn)定時(shí)周期和終端處理程序的執(zhí)行時(shí)間。盡量減少中斷處理程序的處理內(nèi)容,減少執(zhí)行時(shí)間,避免出現(xiàn)中斷處理沒完成,下一次中斷又來臨。雖然可以通過關(guān)、開中斷避免同一個(gè)中斷的嵌套,但整個(gè)程序的定時(shí)周期就不準(zhǔn)了。
作者: 踏雪無痕做什么    時(shí)間: 2020-12-6 19:10
定時(shí)器是單獨(dú)于主程序運(yùn)行,但是定時(shí)器程序要到定時(shí)時(shí)間到才會(huì)自動(dòng)跳到中斷程序。多啃啃書吧,有很多基本例程,有助于理解。
作者: 回憶不堪回首    時(shí)間: 2020-12-7 13:52
與主線程無關(guān)
作者: 馮均杰11    時(shí)間: 2020-12-8 18:40
懂了,謝謝各位大佬




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