www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]以52單片機來說,一共有6個中斷源,其說明如下(序號用于中斷程序的編寫):中斷源名稱默認級別序號說明INT0最高0外部中斷0,由P3.2端口線引入,低電平或下降沿引起INT1第32由P3.3端口線引入,低電平或下降沿引起T0第

以52單片機來說,一共有6個中斷源,其說明如下(序號用于中斷程序的編寫):

中斷源名稱默認級別序號說明INT0最高0外部中斷0,由P3.2端口線引入,低電平或下降沿引起INT1第32由P3.3端口線引入,低電平或下降沿引起T0第21定時器/計數(shù)器0中斷,由T0計數(shù)器計滿回零引起T1第43定時器/計數(shù)器1中斷,由T1計數(shù)器計滿回零引起T2最低5定時器/計數(shù)器2中斷,由T2計數(shù)器計滿回零引起TI/RI第54串行口中斷,串行端口完成一幀字符發(fā)送/接收后引起

中斷的允許和關(guān)閉,由中斷允許寄存器IE控制,而IE又細分為7位,詳細控制到每一個中斷的開關(guān)

位序號位符號位地址說明D0EX0A8HINT0中斷允許控制D1ET0A9HT0中斷允許控制D2EX1AAHINT1中斷允許控制D3ET1ABHT1中斷允許控制D4ESACH串行口中斷允許控制D5ET2ADHT2中斷允許控制D6----
D7EAAFH全局中斷控制,關(guān)閉則所有中斷不可用

說明:上表中,都是把某位設(shè)置為1,表示開啟對應(yīng)的中斷允許,設(shè)0表示關(guān)閉對應(yīng)的中斷允許,同時,如果要允許任意中斷,首先必須設(shè)置EA為允許

還允許設(shè)置中斷的優(yōu)先級,在中斷優(yōu)先級寄存器IP中設(shè)置。不過對我來說,暫時沒用,就不記錄了,相信到時候要用的時候,很容易就能找到對應(yīng)的信息。

在《教程》中,這一章只說了定時器中斷,所以這里也只寫定時器中斷,翻了書的目錄,其他中斷在后面,一起來期待后續(xù)吧。

51單片機內(nèi)部共有兩個16位可編程的定時器,即T0和T1,而52單片機又加了一個T2。這些定時器是單片機內(nèi)部的獨立硬件,并不需要耗費額外的CPU時間去幫它們計時。當定時器的計數(shù)器計滿后,會產(chǎn)生中斷,從而通知CPU處理中斷。

T0或T1都有兩種模式,定時模式和計數(shù)模式,對于定時模式來說,中斷時即表示定時時間已到,而對于計數(shù)模式來說,中斷時表示計數(shù)值已滿。不管是什么模式,其本質(zhì)都是+1計數(shù)器,它的計數(shù)脈沖有兩個來源,一是系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)過12分頻后的值;二是由T0或T1的引腳輸入。在計數(shù)模式時,對于被計數(shù)的頻率有一定的要求,即被檢測的電平,至少要維持一個機器周期(即12個振蕩周期),如當晶振頻率為12MHZ時,最高計數(shù)超過1/2MHZ。

定時器(計數(shù)器)主要由兩個寄存器控制,即TCON和TMOD。

TMOD各位意義如下:

位序號D7D6D5D4D3D2D1D0位符號GATEC/TM1M0GATEC/TM1M0
針對T1針對T0

說明如下:

GATE:門控制位,為0時表示僅受TCON中的TRX控制,為1時表由TRX和外部中斷引腳上電平共同控制

C/T:1時表示計數(shù)模式,0時表示定時器模式

M1和M0:工作方式選擇,如下:

M1M0工作方式00方式0,13位定時器/計數(shù)器01方式1,16位定時器/計數(shù)器10方式2,8位初值自動重裝的8位定時器/計數(shù)器11方式3,僅適用于T0,分成兩個8位計數(shù)器,T1停止計數(shù)

TCON各位意義如下(后面數(shù)字為1的針對T1,為0的針對T0):

位序號D7D6D5D4D3D2D1D0位符號TF1TR1TF0TR0IE1IT1IE0IT0

說明如下:

TFX:定時器X溢出標志位,計時器計數(shù)滿時,該位置1,并申請中斷,進入中斷服務(wù)程序后,由硬件自動清0.如果使用軟件查詢方式的話,需要手動清0

TRX:定時器X運行控制位。GATE=1時,TRX=1且INTX為高電平時,啟動定時器;GATE=0時,TRX=1時啟動定時器

IEX:外部中斷X請求標志。

ITX:外部中斷X觸發(fā)方式標志。

------------------------------------------------------------------------

程序以T0的工作方式1,即16位定時器,設(shè)置GATE=0,此時計數(shù)器的運行由TR0控制,當TR0=1時,計數(shù)器開始計數(shù)。由于是16位計數(shù)器,所以共有65535次計數(shù),當計數(shù)滿后,還要溢出操作一次,所以當觸發(fā)中斷時,共需要65536次。由于中斷需要在計數(shù)滿時才會執(zhí)行,所以如果計數(shù)不是剛好是65536次的話,必然需要給計數(shù)器設(shè)置一個初始值 。比如我們希望計數(shù)1000次時觸發(fā)中斷,那么,就要把計數(shù)器的初始值設(shè)置為65536-1000=64536.由于計數(shù)器每一個機器周期加1,也即12個時鐘周期,因此每一個計數(shù)代表的時間是12/f,如12MHZ的晶振,一個計數(shù)表示12/12000000=1us。若我們希望產(chǎn)生一次中斷的時間為t,晶振的頻率為f,則初始值為:

t*f/12 注意單位的一致

比如,我希望1ms產(chǎn)生一次中斷,我的晶振為12MHZ,則初始值為(注意,把1ms換算成0.001s)

0.001*12000000/12 = 1000

由于計數(shù)器實際分高8位TH0和TL0(對應(yīng)T1的就是TH1和TL1了),所以要把初始值的高位存儲在TH0中,而低位存儲在TL0中,仍舊以上面的例子來說,則

TH0 = 1000/256 = 3

TL0 = 1000%256 = 232

中斷程序的格式如下:

1//using 工作組不是必須的,暫時不使用
//中斷號即前面列表中的序號,T0的中斷序號是1
void 函數(shù)名稱 interrupt 中斷號 using 工作組
{
//程序主體
}

-----------------------------------------------------------------

前置知道介紹完畢,現(xiàn)在編寫程序。本來想顯示一個定時器,顯示在數(shù)碼管上,由于在Proteus上實現(xiàn)不了數(shù)碼管的連續(xù)顯示(PS:現(xiàn)在我知道了,是可以正常顯示的……,不過程序就不改了,反正主要是為了說清楚中斷和計時器),所以就簡化一下程序,改為LED燈亮一秒鐘,滅一秒鐘。由于計數(shù)器最多能計65535,即60多ms,所以我們讓它每50ms觸發(fā)一次中斷,這樣20次后,就是一秒了,因此初始值就是15536了。

原理圖:

源程序:

1#include

#define uchar unsigned char
#define uint unsigned int

uchar total = 0;
sbit led = P2^0;
//中斷程序,在中斷程序中的操作盡量少,所以把LED之類的操作,放在主函數(shù)中
void T0_time() interrupt 1
{
//每次中斷都執(zhí)行一次初始化,保證每次都是50ms
TH0 = 15536/256;
TL0 = 15536%256;

//中斷一次即把計數(shù)加1
total++;
}

void main()
{
TMOD = 0x01; //設(shè)置定時器0,工作方式1
TH0 = 15536/256;//設(shè)置初始值高位
TL0 = 15536%256;//設(shè)置初始值低位
EA = 1;//允許全局中斷
ET0 = 1;//允許定時器0的中斷
TR0 = 1; //開啟定時器0
while(1)
{
if(total==20)
{
total=0;
led=~led;
}
}
}


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

單片機將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對它的相關(guān)情況以及信息有所認識和了解,詳細內(nèi)容如下。

關(guān)鍵字: 單片機 中斷 boot

采用51單片機最小開發(fā)板,由8位自制獨立按鍵控制。單片機芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機 MAX7219 寄存器

在嵌入式系統(tǒng)的開發(fā)中,中斷機制扮演著至關(guān)重要的角色。它允許系統(tǒng)在執(zhí)行正常程序流程時,響應(yīng)外部或內(nèi)部事件,從而確保系統(tǒng)能夠及時響應(yīng)并處理緊急事件。本文將深入探討嵌入式系統(tǒng)中中斷的概念、如何在系統(tǒng)中設(shè)置和處理多個中斷的優(yōu)先級...

關(guān)鍵字: 嵌入式系統(tǒng) 中斷

在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域,51單片機和STM32無疑是兩種極具代表性的微控制器。對于初學者而言,選擇學習路徑時往往會面臨一個抉擇:是直接跨越51單片機,挑戰(zhàn)更高層次的STM32,還是從51開始,逐步進階?本文旨在探討直...

關(guān)鍵字: 51單片機 STM32

在嵌入式系統(tǒng)開發(fā)中,特別是在使用8051系列單片機(簡稱C51)進行編程時,數(shù)據(jù)類型的選擇與定義對程序的性能和可讀性至關(guān)重要。C51語言在標準C語言的基礎(chǔ)上進行了擴展,以適應(yīng)單片機特有的硬件結(jié)構(gòu)和操作需求。本文將深入探討...

關(guān)鍵字: C51數(shù)據(jù) 51單片機

在嵌入式系統(tǒng)領(lǐng)域,51單片機作為一種經(jīng)典的微控制器,廣泛應(yīng)用于各種自動化控制系統(tǒng)中。其外部引腳作為單片機與外界交互的接口,承載著數(shù)據(jù)傳輸、控制信號輸出等重要功能。本文將通過對51單片機外部引腳的案例分析,結(jié)合實際代碼,深...

關(guān)鍵字: 51單片機 單片機

在電子技術(shù)的浩瀚星空中,LED(發(fā)光二極管)以其獨特的魅力成為了一顆璀璨的明星。而結(jié)合51單片機這一經(jīng)典的嵌入式開發(fā)平臺,LED的應(yīng)用更是被賦予了無限可能,其中,花樣流水燈便是一個生動而富有創(chuàng)意的實例。本文將帶您深入探索...

關(guān)鍵字: 51單片機 LED

在現(xiàn)代嵌入式系統(tǒng)設(shè)計中,51單片機作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時器中斷是51單片機中一個非常實用的功能,它可以在特定的時間間隔內(nèi)自動觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機 定時器

STM32與51單片機之間有什么差異呢?兩者可以說是一場科技與性能的較量了。在科技飛速發(fā)展的今天,微控制器(MCU)已廣泛應(yīng)用于各類電子設(shè)備和系統(tǒng)中,發(fā)揮著舉足輕重的作用。其中,STM32和51單片機作為兩種常見的微控制...

關(guān)鍵字: STM32 51單片機 MCU

51單片機將是下述內(nèi)容的主要介紹對象,通過這篇文章,小編希望大家可以對51單片機的相關(guān)情況以及信息有所認識和了解,詳細內(nèi)容如下。

關(guān)鍵字: 單片機 51單片機
關(guān)閉