當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]上講通過講述用單片機(jī)控制一個(gè)外部的LED閃爍實(shí)驗(yàn)來向讀者介紹了單片機(jī)的工作原理與開發(fā)流程。這一講將介紹單片機(jī)內(nèi)部非常重要的兩個(gè)資源——定時(shí)/ 計(jì)數(shù)器和中斷系統(tǒng)。通過該講,讀者可以掌握定時(shí)器的工作原

上講通過講述用單片機(jī)控制一個(gè)外部的LED閃爍實(shí)驗(yàn)來向讀者介紹了單片機(jī)的工作原理與開發(fā)流程。這一講將介紹單片機(jī)內(nèi)部非常重要的兩個(gè)資源——定時(shí)/ 計(jì)數(shù)器中斷系統(tǒng)。通過該講,讀者可以掌握定時(shí)器的工作原理和單片機(jī)的中斷系統(tǒng)。

從而設(shè)計(jì)定時(shí)器計(jì)數(shù)程序和中斷服務(wù)程序。

一、原理簡(jiǎn)介

首先讓我們舉鬧鐘為例,將它定時(shí)在一分鐘后鬧鈴,這就需要秒針走一圈(60 次)。即一分鐘時(shí)間轉(zhuǎn)化為秒針走的次數(shù),也就是計(jì)數(shù)的次數(shù),計(jì)數(shù)到了60 次然后鬧鈴,而每一次計(jì)數(shù)的時(shí)間是1 秒。

單片機(jī)內(nèi)部的定時(shí)/ 計(jì)數(shù)器跟鬧鐘類似,可以通過編程來設(shè)定要定時(shí)的時(shí)間、定時(shí)時(shí)間到了進(jìn)行相應(yīng)的操作。那么在單片機(jī)內(nèi)部計(jì)數(shù)一次的時(shí)間是多少呢,51 單片機(jī)輸入的時(shí)鐘脈沖是由晶體振蕩器的輸出經(jīng)12 分頻后得到的,所以定時(shí)器也可看作是對(duì)計(jì)算機(jī)機(jī)器周期的計(jì)數(shù)器。因?yàn)槊總€(gè)機(jī)器周期包含12 個(gè)振蕩周期,故每一個(gè)機(jī)器周期定時(shí)器加1,可以把輸入的時(shí)鐘脈沖看成機(jī)器周期信號(hào)。故其頻率為晶振頻率的1/12。如果晶振頻率為12MHz,則定時(shí)器每接收一個(gè)輸入脈沖的時(shí)間剛好為1μs。在本實(shí)驗(yàn)套件中采用的是11.0592M 的晶振,故每接收一個(gè)輸入脈沖的時(shí)間約為1.085μs。實(shí)現(xiàn)精確定時(shí)在實(shí)際項(xiàng)目應(yīng)用中非常重要,因?yàn)橥枰玫骄_定時(shí)一段時(shí)間,然后定時(shí)時(shí)間到的時(shí)刻做相應(yīng)的任務(wù)。

那如何編程實(shí)現(xiàn)定時(shí)時(shí)間呢?首先先簡(jiǎn)單介紹下本實(shí)驗(yàn)板上單片機(jī)(STC89C52)內(nèi)的定時(shí)器資源。STC89C52 內(nèi)有三個(gè)定時(shí)/ 計(jì)數(shù)器, 分別為T0、T1 和T2。其中T0、T1 工作方式一樣,一并介紹。

T2 的工作方式稍有區(qū)別,這里不做介紹,實(shí)驗(yàn)套件光盤中有實(shí)際應(yīng)用程序。同時(shí),單片機(jī)中的定時(shí)器和計(jì)數(shù)器是復(fù)用的,計(jì)數(shù)器是記錄外部脈沖的個(gè)數(shù),而定時(shí)器則是由單片機(jī)內(nèi)部時(shí)鐘提供的一個(gè)非常穩(wěn)定的計(jì)數(shù)源。本講中,以T0、T1 作為定時(shí)器來進(jìn)行實(shí)例介紹使用。

了解了單片機(jī)內(nèi)的定時(shí)器資源后,接下來我們來對(duì)定時(shí)器寄存器進(jìn)行詳細(xì)介紹。TMOD(見表1)、TCON(見表3)與定時(shí)器T0、定時(shí)器T1 間通過內(nèi)部總線及邏輯電路連接,TMOD 用于設(shè)置定時(shí)器的工作方式,TCON 用于控制定時(shí)器的啟動(dòng)、停止,標(biāo)志定時(shí)器的溢出和中斷情況。當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就按被設(shè)定的工作方式獨(dú)立工作,不再占用CPU 的操作時(shí)間,只有在計(jì)數(shù)器計(jì)滿溢出時(shí)才可能中斷CPU 當(dāng)前的操作。

表1 TMOD寄存器

表中各位(從左至右為從高位到低位)含義如下。

TMOD 的低4 位為定時(shí)器0 的方式字段,高4位為定時(shí)器1 的方式字段,它們的含義完全相同。

M1 和M0 :工作方式控制位,其定義如表2 所示( 其中i=0,1)。

表2 定時(shí)器工作方式控制位

:功能選擇位。

值得注意的是TMOD 寄存器不能位尋址,只能用字節(jié)指令設(shè)置高4 位定義定時(shí)器1 上的工作方式或低4 位定義定時(shí)器0 的工作方式。而且在復(fù)位時(shí),TMOD 所有位均置0。

表3 TCON寄存器

表中各位(從左至右為從高位到低位)含義如下。

(1) TFl :定時(shí)器1 溢出標(biāo)志位。當(dāng)定時(shí)器1 計(jì)滿數(shù)產(chǎn)生溢出時(shí),由硬件自動(dòng)置TF1=1, 向CPU發(fā)出定時(shí)器1 的中斷請(qǐng)求,在中斷允許時(shí)響應(yīng)。進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清0。在中斷屏蔽時(shí),TF1 可作查詢測(cè)試用,此時(shí)只能由軟件清0。

(2) TR1 :定時(shí)器1 運(yùn)行控制位。由軟件置1 或清0 來啟動(dòng)或關(guān)閉定時(shí)器1。

當(dāng)GATE=l,且為高電平時(shí),TRI 置1 啟動(dòng)定時(shí)器l ;當(dāng)GATE=0 時(shí),TR1 置1 即可啟動(dòng)定時(shí)器1。

(3) TF0 :定時(shí)器0 溢出標(biāo)志位。其功能及操作情況同TF1。

(4) TR0 :定時(shí)器0 運(yùn)行控制位。其功能及操作情況同TR1。

(5) IE1 :外部中斷1() 請(qǐng)求標(biāo)志位。

(6) IT1 :外部中斷1 觸發(fā)方式選擇位。

(7) IE0 :外部中斷0( ) 請(qǐng)求標(biāo)志位。

(8) IT0 :外部中斷0 觸發(fā)方式選擇位。

值得注意的是TCON 中的低4 位用于控制外部中斷,與定時(shí)器/ 計(jì)數(shù)器無關(guān),在以后的講座中會(huì)提及。當(dāng)系統(tǒng)復(fù)位時(shí),TCON 的所有位也均清0。

在上文中提到定時(shí)器溢出和中斷,什么是定時(shí)器溢出呢?我們可以這樣理解:往一個(gè)盆中滴水,水滴持續(xù)落下,盆中的水持續(xù)變滿,最終會(huì)有一滴水使得盆中的水滿了(這相當(dāng)于計(jì)數(shù)到最大值)。這個(gè)時(shí)候如果再有一滴水落下,這時(shí)水就會(huì)漫出來,這就是“溢出”。當(dāng)然,水溢出是流到地上,而定時(shí)器溢出后將使得TF0 變?yōu)?ldquo;1”。一旦TF0 由0 變成1,就會(huì)產(chǎn)生中斷。中斷就是由于某個(gè)事件的發(fā)生,CPU 暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行處理該事件的一個(gè)程序。該程序執(zhí)行完成后,CPU 接著執(zhí)行被暫停的程序的這樣一個(gè)過程。這正如我們本來在做某事,有人過來請(qǐng)求幫忙,我們停下手中的活去幫忙,完事之后回來接著做原來的事情。根據(jù)中斷引發(fā)的不同,或者CPU 響應(yīng)中斷的不同條件,也可以把中斷劃分為可屏蔽中斷(也就是說我們可以拒絕幫別人忙,繼續(xù)做自己的事情)和不可屏蔽中斷(事情做累了,必須休息)兩種。

了解了中斷原理之后,我們來看中斷允許控制寄存器IE(見表4)和中斷優(yōu)先寄存器IP(見表5)。

表4 IE寄存器

EA:中斷允許總控制位。EA=0,禁止所有中斷;EA=1,開放所有中斷,但是否允許各中斷源的中斷請(qǐng)求,還要取決于各中斷源的中斷允許控制位的狀態(tài)。這點(diǎn)要注意,初學(xué)者往往容易忘了開放所有中斷,從而導(dǎo)致沒法進(jìn)入中斷源。

ET2 :時(shí)器/ 計(jì)數(shù)器T2 的中斷允許位。

ES :串行口的中斷允許位。

ET1 :定時(shí)器/ 計(jì)數(shù)器T1 的中斷允許位。

EX1 :外部中斷1(INT1) 的中斷允許位。

ET0 :定時(shí)器/ 計(jì)數(shù)器T0 的中斷允許位。

EX0 :外部中斷0(INT0) 的中斷允許位。

以上7 個(gè)中斷允許控制位為0 時(shí),禁止中斷,為1 時(shí)允許中斷。

表5 IP寄存器

PT2 :定時(shí)器/ 計(jì)數(shù)器T1 中斷優(yōu)先級(jí)控制位。

PS :串行口中斷優(yōu)先級(jí)控制位。

PT1 :定時(shí)器/ 計(jì)數(shù)器T1 中斷優(yōu)先級(jí)控制位。

PX1 :外部中斷1 優(yōu)先級(jí)控制位。

PT0 :定時(shí)器/ 計(jì)數(shù)器T0 中斷控制位。

PX0 :外部中斷0 中斷優(yōu)先級(jí)控制位。

以上6 個(gè)中斷優(yōu)先級(jí)控制位分別為“0”時(shí)為低級(jí)中斷,為“1”時(shí)為高級(jí)中斷。如果幾個(gè)同一優(yōu)先級(jí)的中斷源同時(shí)向CPU 申請(qǐng)中斷,CPU 通過內(nèi)部順序查詢邏輯電路,按自然優(yōu)先級(jí)順序確定該響應(yīng)哪個(gè)中斷請(qǐng)求。自然優(yōu)先級(jí)由硬件形成,其優(yōu)先級(jí)別從高到底為外部中斷0、定時(shí)器/ 計(jì)數(shù)器T0、外部中斷1、定時(shí)器/ 計(jì)數(shù)器T1、串行口中斷、定時(shí)器/ 計(jì)數(shù)器T2。

至此,對(duì)定時(shí)器控制相關(guān)的重要寄存器都介紹完畢了,接下來通過編寫程序來進(jìn)行驗(yàn)證實(shí)踐。

二、電路詳解

此講采用和上講一樣的電路,在此不做贅述(見圖1)。


圖1 定時(shí)器應(yīng)用實(shí)驗(yàn)電路圖

三、程序設(shè)計(jì)

定時(shí)器0 應(yīng)用測(cè)試程序( 控制D1 閃爍)。

#include<AT89X52.h> (1)

#define led P0_0 (2)

unsigned char count=0; (3)

void main(void) (4)

{

TMOD=0X01; (5)

TH0=(65536-50000)/256; (6)

TL0=(65536-50000)%256; (7)

EA=1; (8)

ET0=1; (9)

TR0=1; (10)

PT0=1; (11)

while(1) ; (12)

}

void timer0(void) interrupt 1 (13)

{

TH0=(65536-50000)/256; (14)

TL0=(65536-50000)%256; (15)

count++; (16)

if(count==10) (17)

{

count=0; (18)

led=!led; (19)

}

}

1. 程序詳細(xì)說明:

(1)頭文件包含。程序接下來調(diào)用的P0_0 就是該頭文件中定義好的一個(gè)寄存器地址。在對(duì)單片機(jī)內(nèi)部的寄存器操作之前,應(yīng)申明其來處,有興趣的讀者可以看看AT89X52.h 文件中的內(nèi)容。

(2)宏定義led,便于直觀理解也便于程序修改,將P0_0 口命名為led,這樣在程序中就可以用led代替P0_0 口進(jìn)行操作。

(3)定義一個(gè)8 位的全局變量。

(4)主函數(shù)入口。主函數(shù)不傳遞參數(shù)也不返回值。

(5)設(shè)定定時(shí)器0 工作在模式1,為16 位的計(jì)數(shù)器。

(6)定時(shí)器高8 位賦初值。對(duì)256 取整。

(7)定時(shí)器低8 位賦初值。對(duì)256 取余。

(8)開總中斷。

(9)開定時(shí)器0 中斷。

(10)定時(shí)器0 啟動(dòng),開始計(jì)數(shù)。

(11)設(shè)置開定時(shí)器0 中斷為優(yōu)先中斷。

(12)死循環(huán),等待中斷。

(13)定時(shí)器0 中斷服務(wù)函數(shù)入口。

(14)定時(shí)器高8 位賦初值。對(duì)256 取整。

(15)定時(shí)器低8 位賦初值。對(duì)256 取余。

(16)對(duì)變量count 進(jìn)行加1 操作。

(17)如果count 增長(zhǎng)到10。

(18)count 變量清0。

(19)led 輸出取反。

2. 程序流程圖與實(shí)驗(yàn)現(xiàn)象

程序流程如圖2 所示。經(jīng)編譯下載程序到單片機(jī)內(nèi)運(yùn)行后,可以看到實(shí)驗(yàn)板上P0_0 口外接的LED 燈有規(guī)律的一亮一滅的閃爍見圖3。亮滅的時(shí)間可以計(jì)算為10×50000×1.085μs=542.5ms。

實(shí)際的時(shí)間要比這稍多幾個(gè)ms,這是因?yàn)闆]有把條件判斷和程序調(diào)用的指令時(shí)間算在內(nèi)。在要求非常精確的場(chǎng)合,應(yīng)當(dāng)實(shí)際微調(diào)。


圖2 主程序和中斷服務(wù)函數(shù)流程圖


圖3 實(shí)驗(yàn)現(xiàn)象效果

四、總結(jié)

本講主要介紹了51 單片機(jī)內(nèi)部定時(shí)器和中斷系統(tǒng)以及編寫第一個(gè)簡(jiǎn)單的定時(shí)器實(shí)驗(yàn)程序。通過該講,大家可以發(fā)現(xiàn)單片機(jī)內(nèi)的定時(shí)器和中斷系統(tǒng)并不難學(xué),只要記住應(yīng)用的相關(guān)操作步驟多進(jìn)行幾次實(shí)踐就可以很熟練的掌握這些資源的用法。鑒于本講的理論內(nèi)容較多,希望讀者多*時(shí)間記下或者熟悉。下一講,將要介紹如果單片機(jī)串口通信并給出實(shí)例,敬請(qǐng)期待。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉