51單片機中斷系統程序實例_第1頁
51單片機中斷系統程序實例_第2頁
51單片機中斷系統程序實例_第3頁
51單片機中斷系統程序實例_第4頁
51單片機中斷系統程序實例_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、51單片機中斷系統程序實例(STC89C52RC)51單片機有了中斷,在程序設計中就可以做到,在做某件事的過程中,停下來 先去響應中斷,做別的事情,做好別的事情再繼續原來的事情。 中斷優先級是可 以給要做的事情排序。單片機的學習不難,只要掌握學習方法,學起來并不難。什么是好的學習方法呢, 一定要掌握二個要點:1. 要知道寄存器的英文全拼,比如IE = interrupt 中斷不知道全拼,要去猜,去查。這樣就可以理解為什么是這個名稱,理解了 以后就不用記憶了。2. 每個知識點要有形像的出處比如看到TF0,腦子里馬上要形像地定位到 TCONJ存器的某位看到ET0,馬上要形像地定位到IE寄存器的第2

2、位形像是記憶的最大技巧。當人眼看到某個圖時,是把視覺信號轉化成電信號,再轉化成人能理解的形像。當我們回 憶形像時,就是在重新檢索原先那個視覺信號,并放大。在學習過程中,不斷練 習檢索、放大信號,我們的學習能力就會越來越強。寫程序代碼時,也要把盡量把每行代碼形像化。51單片機內中斷源8051有五個中斷源,有兩個優先級。與中斷系統有關的特殊功能寄存器有IE(中 斷允許寄存器)、IP (中斷優先級控制寄存器)、中斷源控制寄存器(如 TCON SCON勺有關位)。51單片機的中斷系統結構如下圖(注意,IF0應為TF0):中斷免許寄存器中斷隹 中斷并故允許4H?IFQ升oH>inti rri IT

3、Fl>TIBIE5ET1ETOEXOb o-EK1中斷憂先綴寄存器查詢硬件蜒斷求n斷是 低中請中Il°r-一Si NCE-51中斷策藐結材8052有6個中斷源,它比8051多一個定時器/計數器T2中斷源。8051五個中斷源分別是:(1) 51單片機外部中斷源8051有兩個外部中斷源,分別是INT0和INT1,分別從P3.2和P3.3兩個引腳引 入中斷請求信號,兩個中斷源的中斷觸發允許由 TCON勺低4位控制,TCON勺高 4位控制運行和溢出標志。INT0也就是Interrupt 0 。在這里應該看一下你的51單片機開發板的電路原理 圖。離開形像的記憶是沒有意義的。讀到上面這句,

4、你應該回憶起原理圖上的連 接。任何記憶都轉化為形像,這是學習的根本原理,我們通過學習單片機要學會 這種學習方法,會讓你一輩子受益無窮。TCON勺結構如下圖:D7D6D5CMD3HLDIDOTCON TF11 tri TFO 11 TROIE1IT1IDO| ITO J(a)定時器T0的運行控制位TR0TR0由軟件置位或者活0。當門控位GATE=0寸,TO計數器僅由TR0控制,TR0=1 啟動計數,TR0=0時停止。當門控位GATE=1寸,T0計數器由INT0和TR0共同控 制,當INT0=1且TR0=1時啟動T0計數器。(b)定時器T0溢出標志位TF0當T0溢出時TF0=1,并向CPl請中斷,

5、CPU向應中斷后由硬件將TF0活0,也 可以由軟件查詢方式將TF0活0。c)定時器T1的運行控制位TR1功能同TRQ(d) 定時器T1溢出標志為TF1功能同TF1。(e) 外部中斷源1 (INT1、P3.3)中斷請求標志IE1IE1= 1時外部中斷源1正在向CPLM求中斷,當CPU向應該中斷時由硬件將IE1 活0 (下降沿觸發方式)。(f) 外部中斷源1觸發方式選擇位IT1IT1=0時外部中斷源1選擇電平觸發方式,當輸入低電平時置位 IE1 ; IT1= 1時 外部中斷源1選擇下降沿觸發方式,當中斷源由高電平變低電平時置位IE1 ,向 CPUi#求中斷。(g) 外部中斷源0 (INT0、P3.

6、2)中斷請求標志IE0功能類同IE1。(h) 外部中斷源0觸發方式選擇位IT0功能類同IT1。CP/每個機器周期采樣INT0和INT1引腳的輸入電平。i、電平觸發方式當CP唳樣到低電平時,置位IE0和IE1 ,采樣到高電平時,將IE0和IE1活零。 在電平觸發方式下,外部中斷源必須一直保持低電平(至少保持1個以上的機器 周期)直到CPU向應中斷請求,否則中斷請求將丟失,同時在中斷處理程序結束 之前必須,外部中斷源必須變為高電平,否則將產生另一次中斷。ii、下降沿觸發方式CPU®個機器周期采樣中斷輸入引腳,如果相續的兩次采樣,第一次是高電平,第二次是低電平,則置位相應的IE,響應中斷后

7、,硬件自動將IE活0。采樣下 降沿觸發方式,中斷源的高、低電平都必須保持 12個振蕩周期(即1個機器周 期)以上,這樣CPM能有效檢測到下降沿,并引發 CPlfr斷。(2) 51單片機內部中斷源8051有3個內部中斷源,分別是定時器T0、T1和申行口中斷。8052增加了一個 T2定時器中斷。2、51單片機中斷使能控制中斷的允許和禁止由中斷使能控制寄存器 IE控制,其字節地址為0A8H,可以位 尋址,其結構如下圖所示:D7D6D5LMD3D2D1DQIE )EA1_ - 1ESET1EX1ETO JEXO EX0:外部中斷0中斷允許位;ET。定時器/計數器T0中斷允許位;EX1:外部中斷1中斷允

8、許位;ET1:定時器/計數器T1中斷允許位;ES:申行口中斷允許位;ET2:定時器/計數器T2中斷允許位;(只要8052具有)EA CPlfr斷總允許位,EA=1時所有的中斷開放,EA=0時禁止所有的中斷3、51單片機中斷優先級51有兩個優先級:高、低。通過IP (中斷優先級寄存器)來設置優先級,其字 節地址為0B8H可位尋址,其結構如下圖:D7D6D5C4D3D2D1D0IPPT2'PR L *PTDPXO ip中各位值為0時表示低優先級中斷,為1時表示高優先級中斷。CPIM位后IP=0。高優先級中斷可以中斷低優先級中斷,同優先級中斷不能相互中斷。當CPUW時 接到同優先級的幾個中斷

9、請求時,CPL®照如下硬件順序進行中斷響應:INTOIUMNT1*Tlf 申行口(由高到低)4、51單片機中斷請求的撤除CPU向應中斷請求,執行中斷服務程序,但在中斷返回指令(RETI)之前必須撤除中斷信號,否則將可能再次引起中斷而發生錯誤。中斷請求撤銷的方法有三種:a、 單片機內部硬件自動復位:對丁定時器/計數器T0、T1及采用邊沿觸發方式 的外部中斷請求,CPUS響應中斷后,由內部硬件自動撤銷中斷請求;b、應用軟件活除響應標志:對申口發送/接收中斷請求及定時器T2的溢出和捕 獲中斷請求,CPUP向應中斷后,內部無硬件自動復位 RI、TI、TF2及EXF2必須 在中斷服務程序中活除

10、這些標志,才能撤除中斷;c、 既無軟件活除也無硬件撤除:對丁采用電平方式的外部中斷請求,CPM引 腳上的中斷請求信號既無控制能力, 也無應答信號,為保障CPU向應中斷請求中 斷后,執行返回指令前撤除中斷請求,必須考慮另外的措施。5、51單片機中斷響應過程51單片機在每個機器周期的S5P2狀態順序檢查每個中斷源的中斷請求標志, 若 有中斷源發送中斷請求,CPia下個機器周期的S5P2狀態按優先級順序查詢各 中斷標志,并且取高優先級的中斷進行響應。響應中斷后置位相應的中斷優先級 狀態觸發器,標明當前中斷服務的優先級別,執行硬件調用程序,將程序計數器 pc的內容壓入堆棧進行保護。對丁中斷源的中斷入口

11、地址裝入程序計數器pg使程序轉入該中斷入口處執行中斷服務程序,直到遇到RETI指令。執行RETI指令,撤銷中斷優先級觸發器,彈出斷點地址至程序計數器PC繼續源程序的執行過程。在接收中斷申請時,如遇到下列情況之一,硬件調用子程序將被封鎖:a、正在執行同級或高一級的中斷服務程序;b、當前指令周期不是該指令的最后一個周期(或一條指令未執行完);c、當前正在執行的指令是 RETI或對IE、IP的讀寫操作。6、中斷入口地址各中斷源的中斷入口地址為:被查詢的標志位中斷源 入口地址 優先級IEOTFO1E1INTOTOTF1RI + TITF2 + ExF2INTIT1申行口T2,0003H 000BH 0

12、013H 001BH 0023H 002BHSTC86C52RC 5樣片機中斷示例程序#include <reg52.h>typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;sbit enableGI = P1A3; sbit enableG2 = P1A4;sbit selectC = P1A2; sbit selectB = P1A1; sbit selectA = P"。;code uint16 num1616 = ( 0xC0, 0xF9, 0xA

13、4, 0xB0,0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83,0xC6, 0xA1,0x86, 0x8E ;/共陽數碼管真極表uint8 num66 = 0;/儲存秒,0-5對應丁個位.10 萬位上各位上的值void enable138(void); / 啟用 138 譯碼器切換 IO 口void refresh_led(void);void thtl_init(void);void timer1_init(void);void et1_init(void);/ by void main(void)enable138();timer1_init()

14、;while(1);void interrupt_timer1(void) interrupt 3static uint16 counter = 0;static uint32 sec = 0;counter+;thtl_init();if(counter = 1000)counter = 0;sec+;num60 = sec % 10;num61 = sec/10%10;num62 = sec/100%10;num63 = sec/1000%10;num64 = sec/10000%10;num65 = sec/100000%10;refresh_led();/ 更新num6數組后再刷新數碼

15、管void enable138(void) enableG1 = 1; enableG2 = 0; /刷新數碼管,只顯示有效值void refresh_led(void)static uint8 i = 0;switch(i)case 0: selectC = 0; selectB = 0; selectA = 0; P0 = num16num60 ; break; case 1: selectC = 0; selectB = 0; selectA = 1; P0 = num65 = 0 && num64 =0 &&num63 = 0 &&num

16、62 = 0 &&num61 = 0 ? 0xFF : num16 num61; break;case 2: selectC = 0; selectB = 1; selectA = 0; P0 = num65 = 0 && num64 = 0 && num63 = 0 && num62 = 0 ? 0xFF : num16 num62 ; break;case 3: selectC = 0; selectB = 1; selectA = 1; P0 = num65 = 0 && num64 = 0 && num63 = 0 ? 0xFF : num16 num63 ; break;case 4: selectC = 1; selectB = 0; selectA = 0; P0 = num65 = 0 && num64 = 0 ? 0xFF : num16 num64 ; break;case 5: selectC = 1; selectB = 0; selectA = 1; P0 = num65 = 0 ?

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論