|
這是中斷模式1的工作機(jī)理引起的——從中斷申請的發(fā)出,到CPU響應(yīng),再到計(jì)算賦值完畢(主要是向TL賦值完畢),這是有時(shí)間的,這段時(shí)間遠(yuǎn)不為0,每個(gè)中斷都插入了這樣一段時(shí)間所以就慢了,這絕不是精度問題,因?yàn)?天要慢好幾分鐘的。尤其是你在中斷程序里還進(jìn)行了計(jì)算,這也很消耗時(shí)間,并且還把對TL的賦值放在了TH后,更增加了延時(shí)。解決這一問題的常規(guī)手法是在對TL賦值前讀出它的值,加在新值上賦給TL,并再加上2-5個(gè)修正值(可由實(shí)驗(yàn)確定),因?yàn)橘x值也要消耗時(shí)間的并且C是怎么編譯的我們也不知道。另一個(gè)更好的辦法是,調(diào)整中斷周期,使TL=0,這樣在中斷程序中可以不給TL賦值,只給TH賦值,使得計(jì)數(shù)不間斷,類似于中斷模式2,也就沒有了延時(shí)的產(chǎn)生。11.0592的晶振可以直接做到這點(diǎn)的,比如TH=180(即B4H),在中斷程序中刪掉TL的賦值語句,這樣的中斷計(jì)20次就是1秒。12兆的晶體做不到這點(diǎn)——算術(shù)問題,當(dāng)然非要這么做也可以,增加了程序的復(fù)雜性。 |
|