基于MCS-51單片機的測控系統的軟時(shí)鐘設計的優(yōu)化
隨著(zhù)微電腦的廣泛應用,以MCS-51單片機為核心的微機測控系統已隨處可見(jiàn)。為滿(mǎn)足用戶(hù)要求,這些系統通常都具有數碼顯示時(shí)鐘的功能。由于MCS-51內部包含2個(gè)定時(shí)計數器,將其中一個(gè)定時(shí)計數器用于軟時(shí)鐘設計的方法,可以大大節省硬件開(kāi)銷(xiāo)。本文提出了如何提高軟時(shí)鐘的定時(shí)精度,以及在軟時(shí)鐘存在的情況下,如何提高以MCS-51單片機為核心的測控系統的設計質(zhì)量的方法。
一、 MCS-51單片機內部定時(shí)計數器的概述
MCS-51單片機內部包含2個(gè)定時(shí)計數器T0和T1,它們都是16位的加法計數器,既可用于定時(shí),也可用于計數,在用于定時(shí)的情況下,計數脈沖由內部提供,因此計數速率固定為CPU振蕩頻率的1/12;在用于計數的情況下,計數脈沖來(lái)自外部,外部計數脈沖通過(guò)MCS-51的引腳T0(第14腳)或T1(第15腳)輸入,在發(fā)生從1到0的跳變時(shí)計數加1。每個(gè)定時(shí)計數器又有4種工作方式可供選擇:方式O構成13位定時(shí)計數器,高3位未用;方式1構成16位定時(shí)計數器;方式2構成8位定時(shí)計數器,低位字節用于計數,高位字節存放初值;方式3只適合于T0,構成兩個(gè)獨立的8位定時(shí)計數器。在方式O、方式1及方式3時(shí),初值不能自動(dòng)裝入,當定時(shí)時(shí)間已到或計數次數已滿(mǎn)時(shí),若要進(jìn)行下一次定時(shí)計數,必須利用軟件裝入初值,否則,系統會(huì )按上限自動(dòng)定時(shí)或計數,即以O初值進(jìn)行定時(shí)或計數;而在方式2時(shí),初值可自動(dòng)裝入,只需向高位字節寫(xiě)入一次初值,則當低位字節定時(shí)時(shí)間到(或計數滿(mǎn))時(shí),高位字節的初值會(huì )自動(dòng)裝入低位字節,且高位字節的值保持不變。當系統需用MCS-51單片機的串行接口進(jìn)行串行通信時(shí),定時(shí)計數器T1被固定為波特率發(fā)生器,因此,在軟時(shí)鐘設計中,總是選擇T0作為定時(shí)器。
二、軟時(shí)鐘程序設計方法1—0.1 s計數法
0.1 s計數法的基本原理如下:
通過(guò)設置定時(shí)計數器0每經(jīng)過(guò)0.1 s請求一次中斷,中斷處理程序會(huì )令軟時(shí)鐘的基準0.1 s單元增加1,而該單元每增加10次,再令軟時(shí)鐘的秒單元增加1,以此類(lèi)推,按照時(shí)間進(jìn)位令分、時(shí)、日、月直至年單元增加1。設CPU所接晶體振蕩器的振蕩頻率為6 MHz,則1個(gè)機器周期為2μs,當T0作為定時(shí)器工作時(shí),定時(shí)器溢出,即中斷周期: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。由于是加法計數器,初值IC應為時(shí)間常數TC的補碼,所以IC=216-TC=10000H-0C350H=3CBOH,修正以后,取IC=3CB4H,有關(guān)程序段具體設計如下。
初始化程序:
由上述程序可知,作為16位定時(shí)器使用時(shí),T0不能自動(dòng)裝入初值,每次進(jìn)入中斷服務(wù)程序后,首先必須用程序裝入初值,下一次定時(shí)實(shí)際上是從裝入初值低位字節后開(kāi)始的,所以在設定T0中斷為高優(yōu)先級以及CPU對T0中斷請求的響應無(wú)等待延時(shí)的理想情況下,1個(gè)中斷周期所包含的實(shí)際時(shí)間t=初值到計數滿(mǎn)所需時(shí)間+入口引導時(shí)間+裝入初值低位字節時(shí)間。
評論