<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于MCS-51單片機的測控系統的軟時(shí)鐘設計的優(yōu)化

基于MCS-51單片機的測控系統的軟時(shí)鐘設計的優(yōu)化

作者: 時(shí)間:2013-02-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  由于入口引導與裝入初值低位字節共占4個(gè)機器周期,所以為了使中斷周期等于O.1s基準時(shí)間,上文對按理論推算出來(lái)的初值進(jìn)行了加4修正。盡管如此,按照方法1設計的時(shí)鐘程序與的其他程序有機聯(lián)接在一起運行時(shí),要實(shí)現準確定時(shí)也是十分困難的,因為在實(shí)用工業(yè)中常常不止1個(gè)中斷源,而是含有多個(gè)中斷源,存在著(zhù)中斷優(yōu)先權的管理問(wèn)題。要使上述能夠準確定時(shí),T0中斷必須設置為高優(yōu)先級,這樣CPU對T0的定時(shí)中斷才有可能不受影響,確保每隔0.1 s執行一次定時(shí)中斷服務(wù)程序。如果T0定時(shí)中斷被設置為低優(yōu)先級,那么CPU對T0定時(shí)中斷的響應就要受到影響。當CPU正在執行某一高優(yōu)先級中斷源的中斷服務(wù)程序時(shí),T0計數滿(mǎn)會(huì )產(chǎn)生中斷請求,CPU必須等到當前正在執行的中斷服務(wù)程序執行完畢之后,才能響應T0中斷,這必將延長(cháng)中斷間隔,使初值不能如期裝入,破壞定時(shí)的準確性。由此可見(jiàn),采用方法1設計的時(shí)鐘程序限制了系統設置中斷優(yōu)先級的靈活性,降低了設計效率。例如,某些以數碼管作為顯示器的,為了節省硬件開(kāi)銷(xiāo),通常采用對數碼管進(jìn)行巡回掃描的方法進(jìn)行顯示輸出,為使顯示穩定,且無(wú)抖動(dòng)現象,必須將數碼管顯示中斷設置為高優(yōu)先級,以便保證掃描程序的執行周期固定不變,這便與時(shí)鐘定時(shí)中斷對優(yōu)先級的要求發(fā)生了矛盾。為克服方法1的缺陷,在實(shí)際工程中,通過(guò)采用如下所述的方法2來(lái)設計時(shí)鐘程序,可獲得較好的效果。

  三、 程序設計方法2—中斷周期累加法

  方法2和方法1的程序結構是完全相同的,只是在對秒以下時(shí)間的處理上有所不同。將方法1的中斷服務(wù)程序中“O.1 s單元增加1”程序段改為:


  通過(guò)對照容易看出,雖然兩個(gè)“O.1 s單元增加1”程序段所用指令不同,但效果是完全一樣的,可以互相替代。改動(dòng)后的程序將對0.1 s中斷周期的計數,變成了對O.1 s中斷周期的累加,由此引申,對任何小于秒的中斷周期都可以進(jìn)行累加,當最高位有進(jìn)位時(shí)實(shí)施秒增1,同樣可以達到時(shí)鐘定時(shí)的目的。單片機內部定時(shí)器選擇工作方式1時(shí)為16位計數器,在上述假定條件下,當初值為0時(shí),T0的定時(shí)中斷周期T=0.131 072 s,131072定義為中斷周期常數,在中斷服務(wù)程序中對其進(jìn)行累加。以下是采用方法2設計的時(shí)鐘程序。

  定義中斷周期常數:

  C*T: DB 00H,13H,10H,72H

  初始化程序:


  方法2采用對中斷周期進(jìn)行累加的方法,令定時(shí)器滿(mǎn)量程計數,初值為O,計數滿(mǎn)后,自動(dòng)重新從0開(kāi)始計數,不需用程序裝入初值,從根本上擺脫了裝入初值的困擾,當然也就避免了對初值進(jìn)行修正的繁瑣過(guò)程。由于不需要裝入初值,CPU可在中斷周期的任意時(shí)刻,響應定時(shí)器的中斷請求,只需保證下一次中斷請求到來(lái)之前將中斷服務(wù)程序執行完畢即可,從而使定時(shí)器大大降低了對中斷優(yōu)先級的要求。因此方法2將定時(shí)器中斷設置為低優(yōu)先級,而方法1則將其設置為高優(yōu)先級。顯然,采用方法2不僅便于程序設計,而且提高了程序設計的效率。

  方法2中,當定時(shí)器滿(mǎn)量程計數時(shí),中斷周期不再是標準的0.1 s,因此中斷周期在累加過(guò)程中向秒單元的進(jìn)位,大多數發(fā)生在非整秒時(shí)刻,而且進(jìn)位間隔也不盡相同,具體來(lái)講,假設秒以下時(shí)間單元從0開(kāi)始累加,那么向秒單元進(jìn)位第一次是在1.048 576 s時(shí)刻,第二次是在2.097 152 s時(shí)刻,第三次是在3.014 656 s時(shí)刻,…,第一次與第二次間隔為1.048 576 s,第二次與第三次間隔為0.917 504 s,……,進(jìn)位間隔有時(shí)候大于1s,有時(shí)候小于1 s,然而,對分、時(shí)、日、月這些長(cháng)期時(shí)間過(guò)程來(lái)說(shuō),積累誤差可以認為等于O,從這個(gè)意義上說(shuō),方法2大大提高了定時(shí)精度。

  四、結語(yǔ)

  本文提出了采用MCS-5l內部定時(shí)計數器作為設計的方法。這種方法不僅節省了硬件開(kāi)銷(xiāo),而且提高軟時(shí)鐘的定時(shí)精度,具有廣泛的實(shí)際應用價(jià)值。在實(shí)際測試中,當晶體振蕩器的振蕩頻率不是標準6MHz時(shí),可以調整中斷周期常數,以及必要時(shí)通過(guò)增加秒以下時(shí)間單元緩沖區的字節數,使中斷周期常數準確到所需精度。

參考文獻:

[1].datasheethttp://www.dzsc.com/datasheet/_477840.html.


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: MCS-51 測控系統 軟時(shí)鐘

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>