51單片機(jī)中斷系統(tǒng)程序?qū)嵗齙第1頁(yè)
51單片機(jī)中斷系統(tǒng)程序?qū)嵗齙第2頁(yè)
51單片機(jī)中斷系統(tǒng)程序?qū)嵗齙第3頁(yè)
51單片機(jī)中斷系統(tǒng)程序?qū)嵗齙第4頁(yè)
51單片機(jī)中斷系統(tǒng)程序?qū)嵗齙第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、51單片機(jī)中斷系統(tǒng)程序?qū)嵗?STC89C52RC)51單片機(jī)有了中斷,在程序設(shè)計(jì)中就可以做到,在做某件事的過(guò)程中,停下來(lái) 先去響應(yīng)中斷,做別的事情,做好別的事情再繼續(xù)原來(lái)的事情。 中斷優(yōu)先級(jí)是可 以給要做的事情排序。單片機(jī)的學(xué)習(xí)不難,只要掌握學(xué)習(xí)方法,學(xué)起來(lái)并不難。什么是好的學(xué)習(xí)方法呢, 一定要掌握二個(gè)要點(diǎn):1 .要知道寄存器的英文全拼,比如IE = interrupt 中斷不知道全拼,要去猜,去查。這樣就可以理解為什么是這個(gè)名稱,理解了以后就不用記憶了。2 .每個(gè)知識(shí)點(diǎn)要有形像的出處比如看到TF0,腦子里馬上要形像地定位到 TCONJ存器的某位看到ET0,馬上要形像地定位到IE寄存器的第2位

2、獨(dú)家揭秘:形像是記憶的最大技巧。當(dāng)人眼看到某個(gè)圖時(shí),是把視覺(jué)信號(hào)轉(zhuǎn)化 成電信號(hào),再轉(zhuǎn)化成人能理解的形像。當(dāng)我們回憶形像時(shí),就是在重新檢索原先 那個(gè)視覺(jué)信號(hào),并放大。在學(xué)習(xí)過(guò)程中,不斷練習(xí)檢索、放大信號(hào),我們的學(xué)習(xí) 能力就會(huì)越來(lái)越強(qiáng)。寫(xiě)程序代碼時(shí),也要把盡量把每行代碼形像化。51單片機(jī)內(nèi)中斷源8051有五個(gè)中斷源,有兩個(gè)優(yōu)先級(jí)。與中斷系統(tǒng)有關(guān)的特殊功能寄存器有IE (中斷允許寄存器)、IP (中斷優(yōu)先級(jí)控制寄存器)、中斷源控制寄存器(如TCONSCON勺有關(guān)位)。51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)如下圖(注意,IF0應(yīng)為T(mén)F0):8052有6個(gè)中斷源,它比8051多一個(gè)定時(shí)器/計(jì)數(shù)器T2中斷源。8051五

3、個(gè)中斷源分別是:(1) 51單片機(jī)外部中斷源8051有兩個(gè)外部中斷源,分別是INT0和INT1,分別從和兩個(gè)引腳引入中斷請(qǐng)求 信號(hào),兩個(gè)中斷源的中斷觸發(fā)允許由 TCON勺低4位控制,TCON勺高4位控制運(yùn) 行和溢出標(biāo)志。INT0也就是Interrupt 0 。在這里應(yīng)該看一下你的51單片機(jī)開(kāi)發(fā)板的電路原理 圖。離開(kāi)形像的記憶是沒(méi)有意義的。讀到上面這句,你應(yīng)該回憶起原理圖上的連 接。任何記憶都轉(zhuǎn)化為形像,這是學(xué)習(xí)的根本原理,我們通過(guò)學(xué)習(xí)單片機(jī)要學(xué)會(huì) 這種學(xué)習(xí)方法,會(huì)讓你一輩子受益無(wú)窮。TCON勺結(jié)構(gòu)如下圖:(a)定時(shí)器T0的運(yùn)行控制位TR0TR0由軟件置位或者清00當(dāng)門(mén)控位GATE=0寸,TO計(jì)

4、數(shù)器僅由TR0控制,TR0=1 啟動(dòng)計(jì)數(shù),TR0=0時(shí)停止。當(dāng)門(mén)控位GATE=1寸,T0計(jì)數(shù)器由INT0和TR0共同控 制,當(dāng)INT0=1且TR0=1時(shí)啟動(dòng)T0計(jì)數(shù)器。(b)定時(shí)器T0溢出標(biāo)志位TF0當(dāng)T0溢出時(shí)TF0=1,并向CPUH青中斷,CPU向應(yīng)中斷后由硬件將TF0清0,也 可以由軟件查詢方式將TF0清0。c)定時(shí)器T1的運(yùn)行控制位TR1功能同TRQ(d)定時(shí)器T1溢出標(biāo)志為T(mén)F1功能同TF1。(e)外部中斷源1 (INT1、)中斷請(qǐng)求標(biāo)志IE1IE1=1時(shí)外部中斷源1正在向CPU青求中斷,當(dāng)CPU向應(yīng)該中斷時(shí)由硬件將IE1 泊0 (下降沿觸發(fā)方式)。(f)外部中斷源1觸發(fā)方式選擇位I

5、T1IT1=0時(shí)外部中斷源1選擇電平觸發(fā)方式,當(dāng)輸入低電平時(shí)置位 IE1 ; IT1=1時(shí) 外部中斷源1選擇下降沿觸發(fā)方式,當(dāng)中斷源由高電平變低電平時(shí)置位IE1 ,向 CPU青求中斷。(g)外部中斷源0 (INT0、中斷請(qǐng)求標(biāo)志IE0功能類同IE1 0(h)外部中斷源0觸發(fā)方式選擇位IT0功能類同IT1。CPUS每個(gè)機(jī)器周期采樣INT0和INT1引腳的輸入電平。i、電平觸發(fā)方式當(dāng)CP而樣到低電平時(shí),置位IE0和IE1 ,采樣到高電平時(shí),將IE0和IE1清零。 在電平觸發(fā)方式下,外部中斷源必須一直保持低電平(至少保持1個(gè)以上的機(jī)器 周期)直到CPU向應(yīng)中斷請(qǐng)求,否則中斷請(qǐng)求將丟失,同時(shí)在中斷處理

6、程序結(jié)束 之前必須,外部中斷源必須變?yōu)楦唠娖?,否則將產(chǎn)生另一次中斷。ii、下降沿觸發(fā)方式CPUS個(gè)機(jī)器周期采樣中斷輸入引腳,如果相續(xù)的兩次采樣,第一次是高電平,第二次是低電平,則置位相應(yīng)的IE,響應(yīng)中斷后,硬件自動(dòng)將IE W 00采樣下 降沿觸發(fā)方式,中斷源的高、低電平都必須保持 12個(gè)振蕩周期(即1個(gè)機(jī)器周 期)以上,這樣CPUt能有效檢測(cè)到下降沿,并引發(fā) CPU斷。(2) 51單片機(jī)內(nèi)部中斷源8051有3個(gè)內(nèi)部中斷源,分別是定時(shí)器T0、T1和用行口中斷。8052增加了一個(gè) T2定時(shí)器中斷。2、51單片機(jī)中斷使能控制中斷的允許和禁止由中斷使能控制寄存器 IE控制,其字節(jié)地址為0A8H,可以位

7、尋址,其結(jié)構(gòu)如下圖所示:EX0:外部中斷0中斷允許位;ETG定時(shí)器/計(jì)數(shù)器T0中斷允許位;EX1:外部中斷1中斷允許位;ET1:定時(shí)器/計(jì)數(shù)器T1中斷允許位;ES:用行口中斷允許位;ET2:定時(shí)器/計(jì)數(shù)器T2中斷允許位;(只要8052具有)EA CPlfr斷總允許位,EA=1時(shí)所有的中斷開(kāi)放,EA=0時(shí)禁止所有的中斷3、51單片機(jī)中斷優(yōu)先級(jí)51有兩個(gè)優(yōu)先級(jí):高、低。通過(guò)IP (中斷優(yōu)先級(jí)寄存器)來(lái)設(shè)置優(yōu)先級(jí),其字節(jié)地址為0B8H可位尋址,其結(jié)構(gòu)如下圖:IP中各位值為0時(shí)表示低優(yōu)先級(jí)中斷,為1時(shí)表示高優(yōu)先級(jí)中斷。CPUS位后IP=0o高優(yōu)先級(jí)中斷可以中斷低優(yōu)先級(jí)中斷,同優(yōu)先級(jí)中斷不能相互中斷。當(dāng)

8、CPUW時(shí) 接到同優(yōu)先級(jí)的幾個(gè)中斷請(qǐng)求時(shí),CPLR照如下硬件順序進(jìn)行中斷響應(yīng):4、51單片機(jī)中斷請(qǐng)求的撤除CPU向應(yīng)中斷請(qǐng)求,執(zhí)行中斷服務(wù)程序,但在中斷返回指令( RETI)之前必須撤 除中斷信號(hào),否則將可能再次引起中斷而發(fā)生錯(cuò)誤。中斷請(qǐng)求撤銷的方法有三種:a、單片機(jī)內(nèi)部硬件自動(dòng)復(fù)位:對(duì)于定時(shí)器/計(jì)數(shù)器T0、T1及采用邊沿觸發(fā)方式 的外部中斷請(qǐng)求,CPUS響應(yīng)中斷后,由內(nèi)部硬件自動(dòng)撤銷中斷請(qǐng)求;b、應(yīng)用軟件清除響應(yīng)標(biāo)志:對(duì)串口發(fā)送/接收中斷請(qǐng)求及定時(shí)器T2的溢出和捕 獲中斷請(qǐng)求,CPU向應(yīng)中斷后,內(nèi)部無(wú)硬件自動(dòng)復(fù)位 RI、TI、TF2及EXF2必須 在中斷服務(wù)程序中清除這些標(biāo)志,才能撤除中斷;

9、c、既無(wú)軟件清除也無(wú)硬件撤除:對(duì)于采用電平方式的外部中斷請(qǐng)求, CPU寸引 腳上的中斷請(qǐng)求信號(hào)既無(wú)控制能力, 也無(wú)應(yīng)答信號(hào),為保障CPU向應(yīng)中斷請(qǐng)求中 斷后,執(zhí)行返回指令前撤除中斷請(qǐng)求,必須考慮另外的措施。5、51單片機(jī)中斷響應(yīng)過(guò)程51單片機(jī)在每個(gè)機(jī)器周期的S5P2狀態(tài)順序檢查每個(gè)中斷源的中斷請(qǐng)求標(biāo)志, 若 有中斷源發(fā)送中斷請(qǐng)求,CPUS下個(gè)機(jī)器周期的S5P2狀態(tài)按優(yōu)先級(jí)順序查詢各 中斷標(biāo)志,并且取高優(yōu)先級(jí)的中斷進(jìn)行響應(yīng)。響應(yīng)中斷后置位相應(yīng)的中斷優(yōu)先級(jí) 狀態(tài)觸發(fā)器,標(biāo)明當(dāng)前中斷服務(wù)的優(yōu)先級(jí)別,執(zhí)行硬件調(diào)用程序,將程序計(jì)數(shù)器 PC的內(nèi)容壓入堆棧進(jìn)行保護(hù)。對(duì)于中斷源的中斷入口地址裝入程序計(jì)數(shù)器PC

10、使程序轉(zhuǎn)入該中斷入口處執(zhí)行中斷服務(wù)程序,直到遇到 RETI指令。執(zhí)行RETI指令,撤銷中斷優(yōu)先級(jí)觸發(fā)器,彈出斷點(diǎn)地址至程序計(jì)數(shù)器PG繼續(xù)源程序的執(zhí)行過(guò)程。在接收中斷申請(qǐng)時(shí),如遇到下列情況之一,硬件調(diào)用子程序?qū)⒈环怄i:a、正在執(zhí)行同級(jí)或高一級(jí)的中斷服務(wù)程序;b、當(dāng)前指令周期不是該指令的最后一個(gè)周期(或一條指令未執(zhí)行完);c、當(dāng)前正在執(zhí)行的指令是 RETI或?qū)E、IP的讀寫(xiě)操作。6、中斷入口地址各中斷源的中斷入口地址為:STC86C52RC 5憚片機(jī)中斷示例程序#include typedef unsigned char uint8;typedef unsigned int uint16;typ

11、edef unsigned long uint32;sbit enableGI = P1A3; sbit enableG2 = P1A4;sbit selectC = P1A2; sbit selectB = P1A1; sbit selectA = Pa。;code uint16 num1616 = 0xC0, 0xF9, 0xA4, 0xB0,0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83,0xC6, 0xA1,0x86, 0x8E ;.10萬(wàn)位上各位上的值void enable138(void); / 啟用 138 譯碼器切換 IO 口void

12、 refresh_led(void);void thtl_init(void);void timer1_init(void);void et1_init(void);/ byvoid main(void)enable138();timer1_init();et1_init();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 = s

13、ec % 10;num61 = sec/10%10;num62 = sec/100%10;num63 = sec/1000%10;num64 = sec/10000%10;num65 = sec/100000%10;)refresh_led();/ 更新num6數(shù)組后再刷新數(shù)碼管)void enable138(void) enableG1 = 1; enableG2 = 0; /刷新數(shù)碼管,只顯示有效值void refresh_led(void)static uint8 i = 0;switch(i)case 0: selectC = 0; selectB = 0; selectA = 0;

14、P0 = num16 num60 ; break;case 1: selectC = 0; selectB = 0; selectA = 1; P0 = num65 = 0 & num64 =0 &num63 = 0 &num62 = 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 ? 0xFF :num16 num65 ; break;def

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論