亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2010-04-12 00:00:00張樂芳,龐新法,黃天錄
        現(xiàn)代電子技術(shù) 2010年15期

        摘 要:根據(jù)MCS-51單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器的特點(diǎn),提出一種通過對(duì)定時(shí)計(jì)數(shù)器中斷間隔時(shí)間進(jìn)行累加的軟時(shí)鐘設(shè)計(jì)方法,并在此基礎(chǔ)上提出通過改變時(shí)間處理方式的進(jìn)一步優(yōu)化方法。此方法不僅簡(jiǎn)化了程序設(shè)計(jì),節(jié)省了硬件開銷,而且提高了電腦時(shí)鐘的定時(shí)精度,具有廣泛的應(yīng)用價(jià)值。

        關(guān)鍵詞:單片機(jī); 軟時(shí)鐘; 定時(shí)計(jì)數(shù)器; 計(jì)數(shù)器中斷間隔; 優(yōu)先級(jí)

        中圖分類號(hào):TP368文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1004-373X(2010)15-0187-03

        Optimization Methods of Soft-clock Design in MCS-51 Single Chip Computer

        ZHANG Le-fang1, PANG Xin-fa2, HUANG Tian-lu3

        (1.School ofInformation Engineering, Xi’an Eurasia University, Xi’an 710065, China;2. Shaanxi Province Party School of CPC, Xi’an 710061, China;

        3. Xi’an Communication Institute, Xi’an 710106, China)

        Abstract: A soft-clock design method cumulative with timing counter interruptive interval is proposed according to the characteristics of the timing counter in MCS-51 single chip computer. On this basis, a further optimization method to accumulate the interruptive interval time of the timing counter is put forward. This method not only simplifies the program design and reduces the hardware costs but also improves the clock timing accuracy of the computer. Therefore, it has a very wide range of applications.

        Keywords: single chip computer; soft-clock; timing counter; counter interruptive interval; priority grade

        0 引 言

        隨著微電腦應(yīng)用的普及,以MCS-51單片機(jī)為核心的微機(jī)測(cè)控系統(tǒng)已隨處可見。為滿足用戶要求,這些系統(tǒng)通常都具有數(shù)碼顯示時(shí)鐘的功能。由于MCS-51內(nèi)部包含2個(gè)定時(shí)計(jì)數(shù)器,通過采用將其中一個(gè)定時(shí)計(jì)數(shù)器用于軟時(shí)鐘設(shè)計(jì)的方法,可以大大節(jié)省硬件開銷。本文提出了如何提高軟時(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ù)脈沖來自外部,外部計(jì)數(shù)脈沖通過 MCS-51的引腳T0(第14腳)或T1(第15腳)輸入[1-2],在發(fā)生從1到0的跳變時(shí)計(jì)數(shù)加1。每個(gè)定時(shí)計(jì)數(shù)器又有4種工作方式可供選擇:方式0構(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-4];方式3只適合于T0,構(gòu)成兩個(gè)獨(dú)立的8位定時(shí)計(jì)數(shù)器。在方式0、方式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ù),即以0初值進(jìn)行定時(shí)或計(jì)數(shù)[5-6];而在方式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í)器[7-8]。

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

        0.1 s計(jì)數(shù)法的基本原理如下,通過設(shè)置定時(shí)計(jì)數(shù)器0每經(jīng)過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ù)[9-10]。令中斷周期T=0.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=216-TC=10000H-0C350H=3CB0H,修正以后,取IC=3CB4H,有關(guān)程序段具體設(shè)計(jì)如下。

        初始化程序:

        ……;月、日、時(shí)、分單元初始化(略)

        CHKS0:MOV A,(SBF);秒單元初始化

        ADD A, #0

        DA A

        MOV (SBF), A

        CJNE A, #60H, CHKS1

        CHKS1:JC CHKL0

        MOV (SBF),#0

        CHKL0:MOV (BUF),#0 ;0.1 s單元初始化

        MOV TL0,#0B4H ;送初值低位字節(jié)

        MOV TH0,#3CH ;送初值高位字節(jié)

        MOV TMOD,#01H;設(shè)置T0為定時(shí)工作方式1

        MOV IP,#02H;設(shè)置T0中斷為高優(yōu)先級(jí)

        ORL IE,#82H;T0允許中斷

        SETB TR0;啟動(dòng)T0

        中斷服務(wù)程序:

        ORG 000BH;入口引導(dǎo)

        LJMP CLOCK

        ORG ****H

        CLOCK:MOV TL0,#0B4H ;送初值低位字節(jié)

        MOV TH0,#3CH ;送初值高位字節(jié)

        PUSH PSW;保護(hù)程序狀態(tài)字

        PUSH ACC;保護(hù)累加器

        SETB RS0;選區(qū)1

        CLR RS1

        INC (BUF);0.1 s單元增加1

        MOV A, (BUF)

        CJNE A, #0AH, DONE

        MOV (BUF), #0

        MOV A,(SBF) ;秒單元增加1

        ADD A, #1

        DA A

        MOV (SBF), A

        CJNE A, #60H,DONE

        MOV (SBF), #0

        ……;分、時(shí)、日、月單元增加1(略)

        DONE:POP ACC;恢復(fù)累加器

        POP PSW;恢復(fù)程序狀態(tài)字

        RETI;中斷返回

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

        由于入口引導(dǎo)與裝入初值低位字節(jié)共占4個(gè)機(jī)器周期,所以為了使中斷周期等于0.1 s基準(zhǔn)時(shí)間,上文對(duì)按理論推算出來的初值進(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)的管理問題。要使上述軟時(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)確性。由此可見,采用方法1設(shè)計(jì)的時(shí)鐘程序限制了系統(tǒng)設(shè)置中斷優(yōu)先級(jí)的靈活性,降低了設(shè)計(jì)效率。例如,某些以數(shù)碼管作為顯示器的測(cè)控系統(tǒng),為了節(jié)省硬件開銷,通常采用對(duì)數(shù)碼管進(jìn)行巡回掃描的方法進(jìn)行顯示輸出,為使顯示穩(wěn)定,且無抖動(dòng)現(xiàn)象,必須將數(shù)碼管顯示中斷設(shè)置為高優(yōu)先級(jí),以便保證掃描程序的執(zhí)行周期固定不變,這便與時(shí)鐘定時(shí)中斷對(duì)優(yōu)先級(jí)的要求發(fā)生了矛盾。為克服方法1的缺陷,在實(shí)際工程中,通過采用如下所述的方法2來設(shè)計(jì)時(shí)鐘程序,可獲得較好的效果。

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

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

        MOV A, (BUF);0.1 s單元增加1

        ADD A, #10H

        DA A

        MOV (BUF), A

        JNC DONE

        通過對(duì)照容易看出,雖然兩個(gè)“0.1 s單元增加1”程序段所用指令不同,但效果是完全一樣的,可以互相替代。改動(dòng)后的程序?qū)?duì)0.1 s中斷周期的計(jì)數(shù),變成了對(duì)0.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

        初始化程序:

        …… ;月、日、時(shí)、分、秒單元初始化(同方法1)

        CHKL0: MOV (BUF0),#0 ;秒以下單元初始化

        MOV (BUF1),#0 ;秒以下單元初始化

        MOV (BUF2),#0 ;秒以下單元初始化

        MOV TMOD,#01H;設(shè)置T0為定時(shí)工作方式1

        ANL IP,#0FDH ;設(shè)置T0中斷為低優(yōu)先級(jí)

        ORL IE,#82H ;T0允許中斷

        SETB TR0 ;啟動(dòng)T0

        中斷服務(wù)程序:

        ……;入口引導(dǎo)(同方法1)

        CLOCK: PUSH PSW;保護(hù)程序狀態(tài)字

        PUSH ACC ;保護(hù)累加器

        PUSH DPH ;保護(hù)DPTR高位字節(jié)

        PUSH DPL ;保護(hù)DPTR低位字節(jié)

        SETB RS0 ;選區(qū)1

        CLR RS1

        MOV R0,#BUF0;中斷周期累加

        MOV R2, #3

        MOV DPTR,#CONST

        CLR C

        LJIA:MOV A, R2

        MOVC A,@A+DPTR

        ADDC A,@R0

        DA A

        MOV @R0, A

        INC R0

        DJNZ R2, LJIA

        JNC DONE

        …… ; 秒、分、時(shí)、日、月單元增1(同方法1)

        DONE: POP DPL ;恢復(fù)DPTR低位字節(jié)

        POP DPH ;恢復(fù)DPTR高位字節(jié)

        POP ACC ;恢復(fù)累加器

        POP PSW ;恢復(fù)程序狀態(tài)字

        RETI;中斷返回

        方法2采用對(duì)中斷周期進(jìn)行累加的方法,令定時(shí)器滿量程計(jì)數(shù),初值為0,計(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í)候大于1 s,有時(shí)候小于1 s,然而,對(duì)分、時(shí)、日、月這些長(zhǎng)期時(shí)間過程來說,積累誤差可以認(rèn)為等于0,從這個(gè)意義上說,方法2大大提高了定時(shí)精度。

        4 結(jié) 語

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

        參考文獻(xiàn)

        [1]陳建鐸.單片機(jī)原理與應(yīng)用[M].北京:科學(xué)出版社,2004.

        [2]李群芳,方事明,游華杰.單片機(jī)原理與應(yīng)用[M].湖北:武漢大學(xué)出版社,2006.

        [3]李剛,林凌,姜葦.51系列單片機(jī)系統(tǒng)設(shè)計(jì)與應(yīng)用技巧[M].北京:北京航空航天大學(xué)出版社,2004.

        [4]高峰.單片微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)及實(shí)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.

        [5]李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001.

        [6]張專成.多參量火警監(jiān)測(cè)器的軟判決與單片機(jī)實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(8):149-151.

        [7]黃天錄.PIC12F675單片機(jī)在復(fù)合式火災(zāi)探測(cè)器設(shè)計(jì)中的應(yīng)用[J].西安通信學(xué)院學(xué)報(bào),2006(4):28-31.

        [8]竇振中.單片機(jī)外圍器件使用手冊(cè)[M].北京:北京航空航天大學(xué)出版社,2003.

        [9]邵貝貝.Motorola DSP型16位單片機(jī)原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2003.

        [10]馬忠梅,籍順心,張凱,等.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2003.

        人妻少妇偷人精品视频| 国产极品美女高潮无套在线观看| 免费无码中文字幕A级毛片| 亚洲中文字幕在线第二页| 国产精品亚洲精品一区二区| 亚洲AV无码一区二区一二区色戒| 国产一区二区三区再现| 精品国产一区二区三区av| 插b内射18免费视频| 最近日韩激情中文字幕| 久久久婷婷综合亚洲av| 一区二区在线观看日本免费| 人妻精品在线手机观看| 无遮无挡爽爽免费毛片| 国产精品九九热| av网站韩日在线观看免费| 国产福利一区二区三区在线视频| 全球中文成人在线| 国产激情在观看| 91亚洲精品久久久中文字幕| 曰韩内射六十七十老熟女影视| 欧洲熟妇色xxxx欧美老妇多毛图片| 女高中生自慰污免费网站| 日韩人妻免费一区二区三区| 一本之道日本熟妇人妻| 精品国产麻豆免费人成网站| 品色堂永远的免费论坛| 国产美女黄性色av网站| 日韩一区二区中文天堂| 亚洲永久国产中文字幕| 熟女少妇内射日韩亚洲| 国产亚洲亚洲精品777| 视频福利一区二区三区| 亚洲性无码av中文字幕| 色婷婷久久一区二区三区麻豆| 亚洲国产欧美久久香综合| 一本久道久久丁香狠狠躁| 少妇人妻精品一区二区三区| 激情五月婷婷综合| 少妇勾引视频网站在线观看| 狠狠cao日日橹夜夜十橹|