中斷系統結構及如何設置中斷


51單片機中,i中斷分高低兩個優先級,高優先級的中斷能打斷低優先級的中斷。
但同級中斷是不能打斷同級中斷的!無論該中斷函數有多長,在執行到一半這個中斷又發生了,還是要等到該中斷函數執行完畢,並再執行了一條主程序指令后才會再次進入該中斷。

80C51中斷系統的結構

80C51的中斷系統有5個中斷源(8052有 6個) , 2個優先級,可實現二級中斷嵌套 。
1、(P3.2)(外部中斷0引腳)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.2引腳上出現有效的中斷信號時,中斷標志IE0(TCON.1)置1,向CPU申請中斷。
2、(P3.3)(外部中斷1引腳)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當CPU檢測到P3.3引腳上出現有效的中斷信號時,中斷標志IE1(TCON.3)置1,向CPU申請中斷。
3、TF0(TCON.5),片內定時/計數器T0溢出中斷請求標志。當定時/計數器T0發生溢出時,置位TF0,並向CPU申請中斷。
4、TF1(TCON.7),片內定時/計數器T1溢出中斷請求標志。當定時/計數器T1發生溢出時,置位TF1,並向CPU申請中斷。
5、RI(SCON.0)或TI(SCON.1),串行口中斷請求標志。當串行口接收完一幀串行數據時置位RI或當串行口發送完一幀串行數據時置位TI,向CPU申請中斷。
 

中斷請求標志

1、TCON的中斷標志(定時器/計數器控制寄存器TCON)

IT0(TCON.0),外部中斷0觸發方式控制位。
當IT0=0時,為電平觸發方式。
當IT0=1時,為邊沿觸發方式(下降沿有效)。
IE0(TCON.1),外部中斷0中斷請求標志位。
IT1(TCON.2),外部中斷1觸發方式控制位。
IE1(TCON.3),外部中斷1中斷請求標志位。
TR0(TCON.4),定時器0運行控制位,置1時定時器開始啟動(看定時器0方式一邏輯結構有助理解)
TF0(TCON.5),定時/計數器T0溢出中斷請求標志位。
TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置 0時,T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時/ 計數器的啟動與停止。 
TF1(TCON.7),定時/計數器T1溢出中斷請求標志位。

 51單片機的中斷標志位,在產生該中斷時置位,執行該中斷程序后,由硬件自動清除。

RI、TI,這兩個接受標志位,發送標志位是由硬件拉高,請求中斷,而中斷自己不會自動的處理,必須要軟件清零!

2、SCON的中斷標志(串行口控制寄存器)

RI(SCON.0),串行口接收中斷標志位。當允許串行口接收數據時,每接收完一個串行幀,由硬件置位RI。注意,RI必須由軟件清除。
TI(SCON.1),串行口發送中斷標志位。當CPU將一個發送數據寫入串行口發送緩沖器時,就啟動了發送過程。每發送完一個串行幀,由硬件置位TI。CPU響應中斷時,不能自動清除TI,TI必須由軟件清除。
 

3、中斷允許寄存器IE

CPU對中斷系統所有中斷以及某個中斷源的開放和屏 蔽是由中斷允許寄存器IE控制的。
EX0(IE.0),外部中斷0允許位;
ET0(IE.1),定時/計數器T0中斷允許位;
EX1(IE.2),外部中斷0允許位;
ET1(IE.3),定時/計數器T1中斷允許位;
ES(IE.4),串行口中斷允許位;
ET2(IE.5),定時/計數器T2中斷允許位;
EA (IE.7), CPU中斷允許(總允許)位。

4、中斷優先級控制寄存器IP

80C51單片機有兩個中斷優先級,即可實現二級 中斷服務嵌套。每個中斷源的中斷優先級都是由中斷 優先級寄存器IP中的相應位的狀態來規定的 。
PX0(IP.0),外部中斷0優先級設定位;
PT0(IP.1),定時/計數器T0優先級設定位;
PX1(IP.2),外部中斷0優先級設定位;
PT1(IP.3),定時/計數器T1優先級設定位;
PS (IP.4),串行口優先級設定位;
PT2 (IP.5) ,定時/計數器T2優先級設定位。
 
同一優先級中的中斷申請不止一個時,則有中 斷優先權排隊問題。同一優先級的中斷優先權排隊, 由中斷系統硬件確定的自然優先級形成,其排列如 所示:
設置52單片機的4個中斷源,使他們的優順
序為T1,INT1,INT0,T0.
IPH = 0X08;
PT1 = 1;
IP = 0X40;
PX1 = 1;
 
 
80C51單片機的中斷優先級有三條原則:
  • CPU同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。
  • 正在進行的中斷過程不能被新的同級或低優先級的中斷請求所中斷。
  • 正在進行的低優先級中斷服務,能被高優先級中斷請求所中斷。
為了實現上述后兩條原則,中斷系統內部設有兩 個用戶不能尋址的優先級狀態觸發器。其中一個置1, 表示正在響應高優先級的中斷,它將阻斷后來所有 的中斷請求;另一個置1,表示正在響應低優先級中 斷,它將阻斷后來所有的低優先級中斷請求。
 

中斷響應條件和時間:

中斷響應條件

  •  中斷源有中斷請求;
  •  此中斷源的中斷允許位為1;
  •  CPU開中斷(即EA=1)。
以上三條同時滿足時,CPU才有可能響應中斷。
 
80C51的定時/計數器
實現定時功能,比較方便的辦法是利用單 片機內部的定時/計數器。也可以采用下面三 種方法:
  • 軟件定時:軟件定時不占用硬件資源,但占用了CPU時間,降低了CPU的利用率。
  • 采用時基電路定時:例如采用555電路,外接必要的元器件(電阻和電容),即可構成硬件定時電路。但在硬件連接好以后,定時值與定時范圍不能由軟件進行控制和修改,即不可編程。
  • 采用可編程芯片定時:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強,使用靈活。在單片機的定時/計數器不夠用時,可以考慮進行擴展。
 

定時/計數器的結構和工作原理

定時/計數器的結構

定時/計數器的實質是加1計數器(16位),由高8位和低8 位兩個寄存器組成。TMOD是定時/計數器的工作方式寄存 器,確定工作方式和功能;TCON是控制寄存器,控制T0、 T1的啟動和停止及設置溢出標志。

定時/計數器的工作原理

加1計數器輸入的計數脈沖有兩個來源,一個是由 系統的時鍾振盪器輸出脈沖經12分頻后送來;一個 是T0或T1引腳輸入的外部脈沖源。每來一個脈沖 計數器加1,當加到計數器為全1時,再輸入一個脈 沖就使計數器回零,且計數器的溢出使TCON中 TF0或TF1置1,向CPU發出中斷請求(定時/計數 器中斷允許時)。如果定時/計數器工作於定時模 式,則表示定時時間已到;如果工作於計數模式,
則表示計數值已滿。 可見,由溢出時計數器的值減去計數初值才是加 1計數器的計數值。
  • 設置為定時器模式時,加1計數器是對內部機器周期計數(1個機器周期等於12個振盪周期,即計數頻率為晶振頻率的1/12)。計數值N乘以機器周期Tcy就是定時時間t 。
  • 設置為計數器模式時,外部事件計數脈沖由T0或T1引腳輸入到計數器。在每個機器周期的S5P2期間采樣T0、T1引腳電平。當某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時,則計數器加1,更新的計數值在下一個機器周期的S3P1期間裝入計數器。由於檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期。當晶振頻率為12MHz時,最高計數頻率不超過1/2MHz,即計數脈沖的周期要大於2us。

定時/計數器的控制

80C51單片機定時/計數器的工作由兩個特殊功 能寄存器控制。TMOD用於設置其工作方式; TCON用於控制其啟動和中斷申請。
對照其中一個工作方式更好理解TMOD和TCON

一、工作方式寄存器TMOD

工作方式寄存器TMOD用於設置定時/計數器的 工作方式,低四位用於T0,高四位用於T1。其格式
如下:
GATE:門控位。GATE=0時,只要用軟件使TCON中的 TR0或TR1為1,就可以啟動定時/計數器工作;GATA=1時, 要用軟件使TR0或TR1為1,同時外部中斷引腳或也為高電 平時,才能啟動定時/計數器工作。即此時定時器的啟動多 了一個條件。
M1/M0:工作方式設置位。定時/計數器有四種工作方式, 由M1M0進行設置。 

二、TCON的中斷標志(定時器/計數器控制寄存器TCON)看前面的介紹

 

定時/計數器的工作方式

一、方式0

方式0為13位計數,由TL0的低5位(高3位未用)和TH0 的8位組成。TL0的低5位溢出時向TH0進位,TH0溢出時, 置位T CON中的TF0標志,向CPU發出中斷請求。
定時器模式時有:N=t/ Tcy
計數初值計算的公式為:X=213 -N
定時器的初值還可以采用計數個數直接取補法獲得。
計數模式時,計數脈沖是T0引腳上的外部脈沖。
 
門控位GATE具有特殊的作用。當GATE=0時,經反相后使 或門輸出為1,此時僅由TR0控制與門的開啟,與門輸出1 時,控制開關接通,計數開始;當GATE=1時,由外中斷引 腳信號控制或門的輸出,此時控制與門的開啟由外中斷引 腳信號和TR0共同控制。當TR0=1時,外中斷引腳信號引腳 的高電平啟動計數,外中斷引腳信號引腳的低電平停止計 數。這種方式常用來測量外中斷引腳上正脈沖的寬度。

 

二、方式1

方式1的計數位數是16位,由TL0作為低8位、TH0 為高8位,組成了16位加1計數器 。 

計數個數與計數初值的關系為:X=216—N

 

三、方式2

方式2為自動重裝初值的8位計數方式。 
 
計數個數與計數初值的關系為: X=28 -N
工作方式2特別適合於用作較精確的脈沖信號發生器。
 

四、方式3

方式3只適用於定時/計數器T0,定時器T1處於方式3時相當 TR1=0,停止計數。 

工作方式3將T0分成為兩個獨立的8位計數器TL0和TH0 。

定時器/計數器的工作方式一和工作方式二常用

 

 
初始化程序應完成如下工作:
  • 對TMOD賦值,以確定T0和T1的工作方式。
  • 計算初值,並將其寫入TH0、TL0或TH1、TL1。
  • 中斷方式時,則對IE賦值,開放中斷。
  • 使TR0或TR1置位,啟動定時/計數器定時或計數。
 
定時/計數器應用舉例 
例 利用定時/計數器T1的方式1,產生10ms的定時, 並使P1.0引腳上輸出周期為20ms的方波,采用中 斷方式,設系統時鍾頻率為12 MHz。
解:
1、計算計數初值X: 由於晶振為12 MHz,所以機器周期Tcy為1 us。
所以: N=t/ Tcy =10000/1=10000
X=65536-10000=55536=D8F0H 即應將D8H送入TH0中,F0H送入TL0中
2、求T1的方式控制字TMOD:
M1M0=01,GATE=0,C/T=0,可取方式控制 字為01H;

 

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM