国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

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

發(fā)布時(shí)間:2010-11-5 19:10    發(fā)布者:techshare
關(guān)鍵詞: 51單片機(jī) , MCS , 軟時(shí)鐘
隨著微電腦應(yīng)用的普及,以MCS-51單片機(jī)為核心的微機(jī)測(cè)控系統(tǒng)已隨處可見(jiàn)。為滿足用戶要求,這些系統(tǒng)通常都具有數(shù)碼顯示時(shí)鐘的功能。由于MCS-51內(nèi)部包含2個(gè)定時(shí)計(jì)數(shù)器,通過(guò)采用將其中一個(gè)定時(shí)計(jì)數(shù)器用于軟時(shí)鐘設(shè)計(jì)的方法,可以大大節(jié)省硬件開(kāi)銷。本文提出了如何提高軟時(shí)鐘的定時(shí)精度,以及在軟時(shí)鐘存在的情況下,如何提高以MCS-51單片機(jī)為核心的測(cè)控系統(tǒng)的設(shè)計(jì)質(zhì)量的方法。

1 MCS-51單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器概述

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

2 軟時(shí)鐘程序設(shè)計(jì)方法1——0.1 s計(jì)數(shù)法

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

初始化程序:





由上述程序可知,作為16位定時(shí)器使用時(shí),T0不能自動(dòng)裝入初值,每次進(jìn)入中斷服務(wù)程序后,首先必須用程序裝入初值,下一次定時(shí)實(shí)際上是從裝入初值低位字節(jié)后開(kāi)始的,所以在設(shè)定T0中斷為高優(yōu)先級(jí)以及CPU對(duì)T0中斷請(qǐng)求的響應(yīng)無(wú)等待延時(shí)的理想情況下,1個(gè)中斷周期所包含的實(shí)際時(shí)間t=初值到計(jì)數(shù)滿所需時(shí)間+入口引導(dǎo)時(shí)間+裝入初值低位字節(jié)時(shí)間。

由于入口引導(dǎo)與裝入初值低位字節(jié)共占4個(gè)機(jī)器周期,所以為了使中斷周期等于O.1s基準(zhǔn)時(shí)間,上文對(duì)按理論推算出來(lái)的初值進(jìn)行了加4修正。盡管如此,按照方法1設(shè)計(jì)的時(shí)鐘程序與測(cè)控系統(tǒng)的其他程序有機(jī)聯(lián)接在一起運(yùn)行時(shí),要實(shí)現(xiàn)準(zhǔn)確定時(shí)也是十分困難的,因?yàn)樵趯?shí)用工業(yè)測(cè)控系統(tǒng)中常常不止1個(gè)中斷源,而是含有多個(gè)中斷源,存在著中斷優(yōu)先權(quán)的管理問(wèn)題。要使上述軟時(shí)鐘能夠準(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)確性。由此可見(jiàn),采用方法1設(shè)計(jì)的時(shí)鐘程序限制了系統(tǒng)設(shè)置中斷優(yōu)先級(jí)的靈活性,降低了設(shè)計(jì)效率。例如,某些以數(shù)碼管作為顯示器的測(cè)控系統(tǒng),為了節(jié)省硬件開(kāi)銷,通常采用對(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í)際工程中,通過(guò)采用如下所述的方法2來(lái)設(shè)計(jì)時(shí)鐘程序,可獲得較好的效果。

3 軟時(shí)鐘程序設(shè)計(jì)方法2——中斷周期累加法

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





通過(guò)對(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í)的目的。MCS-51單片機(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ù):

CONST: DB 00H,13H,10H,72H

初始化程序:





方法2采用對(duì)中斷周期進(jìn)行累加的方法,令定時(shí)器滿量程計(jì)數(shù),初值為O,計(jì)數(shù)滿后,自動(dòng)重新從0開(kāi)始計(jì)數(shù),不需用程序裝入初值,從根本上擺脫了裝入初值的困擾,當(dāng)然也就避免了對(duì)初值進(jìn)行修正的繁瑣過(guò)程。由于不需要裝入初值,CPU可在中斷周期的任意時(shí)刻,響應(yīng)定時(shí)器的中斷請(qǐng)求,只需保證下一次中斷請(qǐng)求到來(lái)之前將中斷服務(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,因此中斷周期在累加過(guò)程中向秒單元的進(jìn)位,大多數(shù)發(fā)生在非整秒時(shí)刻,而且進(jìn)位間隔也不盡相同,具體來(lái)講,假設(shè)秒以下時(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í)候大于l s,有時(shí)候小于1 s,然而,對(duì)分、時(shí)、日、月這些長(zhǎng)期時(shí)間過(guò)程來(lái)說(shuō),積累誤差可以認(rèn)為等于O,從這個(gè)意義上說(shuō),方法2大大提高了定時(shí)精度。

4 結(jié)語(yǔ)

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

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開(kāi)發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開(kāi)發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区国产 | 日韩在线一区二区三区视频 | 狠狠亚洲丁香综合久久 | 亚洲免费网站在线观看 | 热re99久久精品国99热 | 8848hh四虎免费 | 蜜臀导航| 亚洲男人第一天堂 | 91伊人网 | 欧美午夜在线视频 | 99这里有精品视频 | 成人综合激情网 | 女老师完整版 | 久久网国产 | 妖精视频一区二区三区 | 涩999| 国产香蕉视频 | 四虎影视永久费观看在线 | 国产99久久九九精品免费 | 国产在线视欧美亚综合 | 国产精品国产三级国产普通 | 最新国产在线精品91尤物 | 免费看啪啪的网站 | sesetv| 中文字幕热久久久久久久 | 操操操综合 | 日韩免费高清视频 | 成人网址在线观看 | 九九热久久免费视频 | 国产无遮挡男女羞羞影院在线播放 | 日韩欧美一区二区不卡 | 精品国产福利一区二区在线 | 老师的兔子又大又好吃又多 | 蜜臀91精品国产高清在线观看 | 日韩一级免费视频 | 66成人| 欧美夜夜精品一级爽 | 免费观看黄a一级视频日本 免费观看黄a一级视频 | 野外做受三级视频 | aaa大片| 日本在线亚州精品视频在线 |