新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MCS-51單片機中軟時鐘設(shè)計的優(yōu)化方法

MCS-51單片機中軟時鐘設(shè)計的優(yōu)化方法

作者: 時間:2010-10-12 來源:網(wǎng)絡(luò) 收藏


0 引言
隨著微電腦應(yīng)用的普及,以為核心的微機測控系統(tǒng)已隨處可見。為滿足用戶要求,這些系統(tǒng)通常都具有數(shù)碼顯示的功能。由于內(nèi)部包含2個定時計數(shù)器,通過采用將其中一個定時計數(shù)器用于軟,可以大大節(jié)省硬件開銷。本文提出了如何提高軟的定時精度,以及在軟時鐘存在的情況下,如何提高以為核心的測控系統(tǒng)的質(zhì)量的

1 MCS-51內(nèi)部定時計數(shù)器概述
MCS-51單片機內(nèi)部包含2個定時計數(shù)器T0和T1,它們都是16位的加法計數(shù)器,既可用于定時,也可用于計數(shù),在用于定時的情況下,計數(shù)脈沖由內(nèi)部提供,因此計數(shù)速率固定為CPU振蕩頻率的1/12;在用于計數(shù)的情況下,計數(shù)脈沖來自外部,外部計數(shù)脈沖通過MCS-51的引腳T0(第14腳)或T1(第15腳)輸入,在發(fā)生從1到0的跳變時計數(shù)加1。每個定時計數(shù)器又有4種工作方式可供選擇:方式O構(gòu)成13位定時計數(shù)器,高3位未用;方式1構(gòu)成16位定時計數(shù)器;方式2構(gòu)成8位定時計數(shù)器,低位字節(jié)用于計數(shù),高位字節(jié)存放初值;方式3只適合于T0,構(gòu)成兩個獨立的8位定時計數(shù)器。在方式O、方式1及方式3時,初值不能自動裝入,當定時時間已到或計數(shù)次數(shù)已滿時,若要進行下一次定時計數(shù),必須利用軟件裝入初值,否則,系統(tǒng)會按上限自動定時或計數(shù),即以O(shè)初值進行定時或計數(shù);而在方式2時,初值可自動裝入,只需向高位字節(jié)寫入一次初值,則當?shù)臀蛔止?jié)定時時間到(或計數(shù)滿)時,高位字節(jié)的初值會自動裝入低位字節(jié),且高位字節(jié)的值保持不變。當系統(tǒng)需用MCS-51單片機的串行接口進行串行通信時,定時計數(shù)器T1被固定為波特率發(fā)生器,因此,在軟時鐘中,總是選擇T0作為定時器。

2 軟時鐘程序設(shè)計1——0.1 s計數(shù)法
0.1 s計數(shù)法的基本原理如下,通過設(shè)置定時計數(shù)器O每經(jīng)過0.1 s請求一次中斷,中斷處理程序會令軟時鐘的基準0.1 s單元增加1,而該單元每增加10次,再令軟時鐘的秒單元增加1,以此類推,按照時間進位令分、時、日、月直至年單元增加1。設(shè)CPU所接晶體振蕩器的振蕩頻率為6 MHz,則1個機器周期為2μs,當T0作為定時器工作時,定時器溢出,即中斷周期:T=2×TC×10-6 s,式中TC為時間常數(shù)。令中斷周期T=O.1 s,可得:TC=0.1/(2×10-6)=50 000=0C350H,此時間常數(shù)決定了T0必須為16位定時器,故設(shè)置為工作方式1。由于是加法計數(shù)器,初值IC應(yīng)為時間常數(shù)TC的補碼,所以IC=216-TC=10000H-0C350H=3CBOH,修正以后,取IC=3CB4H,有關(guān)程序段具體設(shè)計如下。
初始化程序:

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


上一頁 1 2 下一頁

評論


相關(guān)推薦

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

關(guān)閉