<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          基于MCS-51單片機(jī)的測(cè)控系統(tǒng)的軟時(shí)鐘設(shè)計(jì)的優(yōu)化

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

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

            三、 程序設(shè)計(jì)方法2—中斷周期累加法

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


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

            定義中斷周期常數(shù):

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

            初始化程序:


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

            方法2中,當(dāng)定時(shí)器滿量程計(jì)數(shù)時(shí),中斷周期不再是標(biāo)準(zhǔn)的0.1 s,因此中斷周期在累加過程中向秒單元的進(jìn)位,大多數(shù)發(fā)生在非整秒時(shí)刻,而且進(jìn)位間隔也不盡相同,具體來講,假設(shè)秒以下時(shí)間單元從0開始累加,那么向秒單元進(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,然而,對(duì)分、時(shí)、日、月這些長(zhǎng)期時(shí)間過程來說,積累誤差可以認(rèn)為等于O,從這個(gè)意義上說,方法2大大提高了定時(shí)精度。

            四、結(jié)語(yǔ)

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

          參考文獻(xiàn):

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


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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();