版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1單片機(jī)與嵌入式系統(tǒng)第七講本次課主要內(nèi)容第二章單片機(jī)原理(五)2單片機(jī)的中斷及其應(yīng)用!單片機(jī)原理(五)1.本次課的目標(biāo)2.什么是中斷3.為什么需要中斷?4.與中斷有關(guān)的幾個概念5.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制6.中斷優(yōu)先級控制與中斷擴(kuò)展7.小結(jié)31.本次課的目標(biāo)熟悉單片機(jī)各個中斷源及內(nèi)部結(jié)構(gòu);掌握單片機(jī)中斷相關(guān)的各寄存器;掌握中斷優(yōu)先級的概念;掌握中斷擴(kuò)展的方法;熟練應(yīng)用單片機(jī)中斷進(jìn)行編程;4單片機(jī)原理(五)1.本次課的目標(biāo)2.什么是中斷3.為什么需要中斷?4.與中斷有關(guān)的幾個概念5.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制6.中斷優(yōu)先級控制與中斷擴(kuò)展7.小結(jié)52什么是中斷日常中斷的例子6
你正在專心看書,突然電話鈴響,于是你標(biāo)記下正在看的書的頁數(shù),去接電話,接完電話后再回來接著看書。當(dāng)CPU正在處理某事件的時候,外部發(fā)生的某一事件請求CPU迅速去處理,于是CPU暫時中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件后,再返回到原來被中止的地方繼續(xù)原來的工作,這樣的過程稱為中斷。7計算機(jī)中的中斷概念中斷是指由于某種隨機(jī)事件的發(fā)生,計算機(jī)暫?,F(xiàn)行程序的運(yùn)行,轉(zhuǎn)去執(zhí)行另一程序,以處理發(fā)生的事件,處理完畢后又自動返回原來的程序繼續(xù)運(yùn)行。將能引起中斷的事件稱為中斷源。CPU現(xiàn)行運(yùn)行的程序稱為主程序。處理隨機(jī)事件的程序稱為中斷服務(wù)子程序。
單片機(jī)原理(五)1.本次課的目標(biāo)2.什么是中斷3.為什么需要中斷?4.與中斷有關(guān)的幾個概念5.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制6.中斷優(yōu)先級控制與中斷擴(kuò)展7.小結(jié)93.為什么需要中斷?(1)提高CPU的利用率現(xiàn)實(shí)生活中,如果燒水使用沒有鳴笛功能的燒水壺,需要不斷去查看水是否燒開(查詢方式)。如果具有鳴笛功能,則可以專心去干別的事,水燒開再去關(guān)火(中斷方式)。CPU可以使多個外設(shè)同時工作,提高了CPU的利用率。10在計算機(jī)系統(tǒng)中,中斷是處理器與異步事件進(jìn)行信息交換(通信)的唯一手段。操作系統(tǒng)內(nèi)核的運(yùn)轉(zhuǎn)是由中斷來驅(qū)動的,中斷是內(nèi)核的生命之源?。?)實(shí)時處理現(xiàn)實(shí)生活中,可以對發(fā)生的各個事件進(jìn)行判斷,使重要的任務(wù)得以實(shí)時處理。(舉例:看書、電話、燒水)當(dāng)計算機(jī)用于實(shí)時控制時,通過中斷系統(tǒng),CPU可以立即響應(yīng)并加以處理。11(3)故障處理:對隨機(jī)出現(xiàn)的一些故障,如斷電、存儲器奇偶校驗(yàn)出錯、運(yùn)算溢出等。通過中斷系統(tǒng),CPU可及時轉(zhuǎn)去執(zhí)行故障處理程序,自行處理故障而不必停機(jī)。12單片機(jī)原理(五)1.本次課的目標(biāo)2.什么是中斷3.為什么需要中斷?4.與中斷有關(guān)的幾個概念5.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制6.中斷優(yōu)先級控制與中斷擴(kuò)展7.小結(jié)134.與中斷有關(guān)的幾個概念(1)中斷系統(tǒng):實(shí)現(xiàn)中斷功能的部件稱為中斷系統(tǒng),又稱中斷機(jī)構(gòu)。(2)中斷源:產(chǎn)生中斷的請求源稱為中斷源。(3)中斷請求:中斷源向CPU提出的處理請求,稱為中斷請求或中斷申請。14(4)中斷響應(yīng)過程:CPU暫時中止自身的事務(wù),轉(zhuǎn)去處理事件的過程,稱為CPU的中斷響應(yīng)過程。(5)中斷服務(wù):對事件的整個處理過程,稱為中斷服務(wù)(或中斷處理)。15中斷及中斷嵌套中斷處理流程單片機(jī)原理(五)1.本次課的目標(biāo)2.什么是中斷3.為什么需要中斷?4.與中斷有關(guān)的幾個概念5.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制6.中斷優(yōu)先級控制與中斷擴(kuò)展7.小結(jié)185.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.189C51中斷源5.289C51中斷系統(tǒng)結(jié)構(gòu)5.3中斷控制5.4如何應(yīng)用中斷195.189C51中斷源51系列單片機(jī)提供了三類中斷源,即
外部中斷源
、
串行中斷源
和
定時中斷源
。20INT0——外部中斷0請求,低電平有效。通過P3.2引腳輸入。INT1——外部中斷1請求,低電平有效。通過P3.3引腳輸入。T0——定時器/計數(shù)器0溢出中斷請求。T1——定時器/計數(shù)器1溢出中斷請求。TX/RX——串行口中斷請求。當(dāng)串行口完成一幀數(shù)據(jù)的發(fā)送或接收時,便請求中斷。21外部中斷源定時中斷源串行中斷源5.289C51中斷系統(tǒng)結(jié)構(gòu)22涉及到的幾個寄存器一定要記??!中斷源中斷允許定時器及外部中斷的中斷控制中斷優(yōu)先級設(shè)置中斷源入口地址中斷號外部中斷00003H0定時器0中斷000BH1外部中斷10013H2定時器1中斷001BH3串行口中斷0023H423入口地址是什么含義?對應(yīng)中斷發(fā)生時,PC所指向的位置中斷號是什么含義?用于指明中斷處理程序是為哪個中斷源服務(wù)的。24程序存儲器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,在這三個單元存放一條無條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH
外部中斷0定時器0中斷外部中斷1定時器1中斷
串行口中斷8位...0FFFH0FFEHEA=1EA=0程序存儲器資源分布中斷入口地址回憶:程序存儲器中斷源入口地址中斷號外部中斷00003H0定時器0中斷000BH1外部中斷10013H2定時器1中斷001BH3串行口中斷0023H425演示:Project75.3中斷控制(1)中斷允許寄存器IE(InterruptEnable)的格式(2)TCON(TimerControl)中的中斷標(biāo)志位26(1)中斷允許寄存器IE的格式27EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8H/*------------------------------------------------IEBitRegisters------------------------------------------------*/sbitEX0=0xA8;/*1=EnableExternalinterrupt0*/sbitET0=0xA9;/*1=EnableTimer0interrupt*/sbitEX1=0xAA;/*1=EnableExternalinterrupt1*/sbitET1=0xAB;/*1=EnableTimer1interrupt*/sbitES=0xAC;/*1=EnableSerialportinterrupt*/sbitET2=0xAD;/*1=EnableTimer2interrupt*/sbitEA=0xAF;/*0=Disableallinterrupts*/28EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8HEA(
Globaldisablebit)—中斷允許總控制位。EA=0,屏蔽所有的中斷請求;EA=1,CPU開放中斷。對各中斷源的中斷請求是否允許,還要取決于各中斷源的中斷允許控制位的狀態(tài)。這就是所謂的兩級控制。29EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8HES(
SerialPortinterruptenablebit)—串行口中斷允許位。ES=0,禁止串行口中斷;ES=1,允許串行口中斷。30EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8HET1(Timer1interruptenablebit)—定時器/計數(shù)器T1的溢出中斷允許位ET1=0,禁止T1中斷;ET1=1,允許T1中斷。31EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8HET0(Timer0interruptenablebit)—定時器/計數(shù)器T0的溢出中斷允許位ET0=0,禁止T0中斷;ET0=1,允許T0中斷。32EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8HEX1(Externalinterrupt1enablebit)—外部中斷1的溢出中斷允許位。EX1=0,禁止外部中斷1中斷;EX1=1,允許外部中斷1中斷。33EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8HEX0(Externalinterrupt0enablebit)—外部中斷0的溢出中斷允許位。EX0=0,禁止外部中斷0中斷;EX0=1,允許外部中斷0中斷。34EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8H問題:假如執(zhí)行主程序時,不想被所有中斷源或部分中斷源打斷,程序員如何管理中斷?35答案:中斷關(guān)閉或開放(中斷允許)如果需要關(guān)閉所有的中斷,可以使用EA=0;如果需要關(guān)閉某個中斷,可以令對應(yīng)的允許位為0。EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8H問題:根據(jù)IE寄存器,如何才能允許定時器0中斷?ET0=1;ET0=1;EA=1;或IE=0x82;EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8H問題:如何設(shè)置,使得單片機(jī)可以接收來自P12管腳連接的中斷?37答案:P12管腳定義為INT0,因此首先應(yīng)打開中斷總開關(guān)(即:EA=1),另外還需設(shè)置INT0的使能開關(guān)(即:EX0=1)EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8H問題:如何編程實(shí)現(xiàn)?38#include<AT89X51.h>EA=1; //打開總中斷開關(guān)EX0=1;//打開INT0中斷IEA8H
EA
ESET1EX1ET0EX076543210#include<AT89X51.h>IE=0x81;問題:如何設(shè)置,使得單片機(jī)同時可以接收來自P12管腳連接的中斷以及P13管腳的中斷?39答案:P12管腳定義為INT0,因此首先應(yīng)打開中斷總開關(guān)(即:EA=1),另外還需設(shè)置INT0的使能開關(guān)(即:EX0=1)及INT1的使能開關(guān)(即:EX1=1)新問題:INT0和INT1管腳什么狀態(tài)將產(chǎn)生中斷?是邊沿?是電平?EAESET1EX1ET0EX0
IE(A8H)AFHAEHADHACHABHAAHA9HA8H如果有兩個或3個中斷源同時申請中斷,CPU如何處理?40答案:按中斷優(yōu)先級規(guī)定的順序進(jìn)行執(zhí)行。(2)TCON中的中斷標(biāo)志位TCON為定時器/計數(shù)器T0和T1的控制器,同時也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。41TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H用途1:高四位對定時器控制!用途2:低四位監(jiān)測、初始化外部中斷!/*------------------------------------------------TCONBitRegisters------------------------------------------------*/sbitIT0=0x88;sbitIE0=0x89;sbitIT1=0x8A;sbitIE1=0x8B;sbitTR0=0x8C;sbitTF0=0x8D;sbitTR1=0x8E;sbitTF1=0x8F;42TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1(
Timer1overflowflag):定時器/計數(shù)器T1溢出中斷標(biāo)志位。當(dāng)啟動T1計數(shù)后,T1從初值開始加1計數(shù),計數(shù)器最高位產(chǎn)生溢出時,由硬件使TF1置1,并向CPU發(fā)出中斷請求。當(dāng)CPU響應(yīng)中斷時,硬件將自動對TF1清0。43TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF0(
Timer0overflowflag):定時器/計數(shù)器T0溢出中斷請求標(biāo)志位。與TF1類同。44IE1(ExternalInterrupt1edgeflag):外部中斷1的中斷請求標(biāo)志。INT1(P3.3)。當(dāng)檢測到外部中斷引腳1上存在有效的中斷請求信號時,由硬件使IE1置1。45TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88HIE0(ExternalInterrupt0edgeflag):外部中斷0的中斷請求標(biāo)志。INT0(P3.2)。其含義與IE1類同。46IT1(ExternalInterrupt1typeflag):外部中斷1的中斷觸發(fā)方式控制位IT1=0時,外部中斷1為低電平觸發(fā)方式。CPU在每一個機(jī)器周期S5P2期間采樣外部中斷請求引腳的輸入電平。若外部中斷1請求為低電平,則使IE1置1;若為高電平,則使IE1清0。47TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88HIT1=1時,外部中斷1為下降沿觸發(fā)方式。CPU在每一個機(jī)器周期S5P2期間采樣外部中斷請求引腳的輸入電平。如果在相繼的兩個機(jī)器周期采樣過程中,一個機(jī)器周期采樣到外部中斷1請求引腳為高電平,接著的下一個機(jī)器周期采樣到為低電平,則使IE1置1。直到CPU響應(yīng)該中斷時,才由硬件使IE1清0。48TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88HIT0(ExternalInterrupt0typeflag):外部中斷0的中斷觸發(fā)方式控制位。其含義與IT1類同。49問題:TCON可位尋址嗎?50由于可以通過每一位地址來訪問TCON的每一位,因此,TCON可位尋址。TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H問題:語句:TCON=0x05;是什么含義?51TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H答案:TCON=0x05,表明:IT1=1,IT0=1,表示INT0和INT1均為邊沿觸發(fā)模式問題:如何設(shè)置,使得單片機(jī)可以接收來自P12管腳連接的中斷?且當(dāng)P12管腳上出現(xiàn)下降沿時向CPU發(fā)出中斷申請。52答案:P12管腳定義為INT0,因此首先應(yīng)打開中斷總開關(guān)(即:EA=1),另外還需設(shè)置INT0的使能開關(guān)(即:EX0=1)。接下來設(shè)置INT0為邊沿觸發(fā)方式(即:IT0=1)。TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H問題:如何設(shè)置,使得單片機(jī)可以接收來自P12管腳連接的中斷?且當(dāng)P12管腳上出現(xiàn)低電平時向CPU發(fā)出中斷申請。53答案:P12管腳定義為INT0,因此首先應(yīng)打開中斷總開關(guān)(即:EA=1),另外還需設(shè)置INT0的使能開關(guān)(即:EX0=1)。接下來設(shè)置INT0為電平觸發(fā)方式(即:IT0=0)。TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H問題:如何編程實(shí)現(xiàn)?54#include<AT89X51.h>EA=1; //打開總中斷開關(guān)EX0=1;//打開INT0中斷IT0=0;//設(shè)置INT0為電平觸發(fā)方式TF1TF0IE1IT1IE0IT0
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H5.4如何應(yīng)用中斷(1)打開總中斷允許EA=1;(2)打開特定中斷源允許EX0=1允許外部中斷0ES=1允許串口中斷EX1=1允許外部中斷1ET1=1允許定時器1中斷ET0=0允許定時器0中斷55中斷源入口地址中斷號外部中斷00003H0定時器0中斷000BH1外部中斷10013H2定時器1中斷001BH3串行口中斷0023H4(3)設(shè)置中斷模式定時器中斷工作模式外部中斷模式(4)編寫中斷處理函數(shù),注意中斷號56程序組成While(1)循環(huán)中斷處理函數(shù)中斷的定義:voidExternal_Interrupt_0()interrupt0interrupt0指明了對應(yīng)哪個中斷源578051單片機(jī)有5個中斷請求源編號(C語言開發(fā))INT0:0T0:1INT1:2T1:3串口:4中斷服務(wù)函數(shù)編寫格式:
函數(shù)名interrupt編號voidname()interrupt1{}問題:如何定義外部中斷1(INT1)對應(yīng)的中斷處理函數(shù)?59INT0:0T0:1INT1:2T1:3串口:4
voidname()interrupt2{……}問題:當(dāng)哪些中斷發(fā)生時,才能進(jìn)入下述定義的中斷處理函數(shù)?voidname()interrupt4{……}60INT0:0T0:1INT1:2T1:3串口:4Interrupt4對應(yīng)了串口產(chǎn)生的中斷,因此當(dāng)串口部分發(fā)生中斷時,進(jìn)入該中斷處理函數(shù)。例子:INT0中斷方式控制LED。INT0接一個按鍵,作為LED的開關(guān),每按一下,LED狀態(tài)發(fā)生一次改變。61演示:Project1硬件設(shè)計62思考:INT0應(yīng)設(shè)置為電平觸發(fā)還是邊沿觸發(fā)?按鍵后一次觸發(fā),最好設(shè)置為邊沿觸發(fā)。程序編寫#include<AT89X51.h>sbitLED=P0^0;voidmain(){ LED=1;//LED初始狀態(tài)//打開總中斷開關(guān)
EA=1; //打開INT0中斷
EX0=1;//外部中斷1程控為邊沿觸發(fā)方式(下降沿觸發(fā))
TCON=0X01//接下來應(yīng)做什么?
while(1);}63voidExternal_Interrupt_0()interrupt0{//中斷服務(wù)程序完成LED的狀態(tài)翻轉(zhuǎn)
LED=!LED;}64演示:Project1問題:如果接兩個中斷,將會出現(xiàn)什么情況?65中斷優(yōu)先級!單片機(jī)原理(五)1.本次課的目標(biāo)2.什么是中斷3.為什么需要中斷?4.與中斷有關(guān)的幾個概念5.89C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制6.中斷優(yōu)先級控制與中斷擴(kuò)展7.小結(jié)666.中斷優(yōu)先級控制89C51有兩個中斷優(yōu)先級。每個中斷請求源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。67中斷優(yōu)先級寄存器IP(InterruptPriority)68PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H/*------------------------------------------------IPBitRegisters------------------------------------------------*/sbitPX0=0xB8;sbitPT0=0xB9;sbitPX1=0xBA;sbitPT1=0xBB;sbitPS=0xBC;sbitPT2=0xBD;69PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8HPS(SerialPortinterruptprioritybit)—串行口中斷優(yōu)先級控制位PT1(Timer1interruptprioritybit.)—定時器/計數(shù)器T1中斷優(yōu)先級控制位PX1(Externalinterrupt1prioritybit)—外部中斷1中斷優(yōu)先級控制位PT0(Timer0interruptprioritybit)—定時器/計數(shù)器T0中斷優(yōu)先級控制位PX0(Externalinterrupt0prioritybit)—外部中斷0中斷優(yōu)先級控制位
若某控制位為1,則相應(yīng)的中斷源規(guī)定為高級中斷;反之,為0,則相應(yīng)的中斷源規(guī)定為低級中斷。70PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H中斷優(yōu)先級排列順序當(dāng)同時接收到幾個同一優(yōu)先級的中斷請求時,響應(yīng)哪個中斷源則取決于內(nèi)部硬件查詢順序。71中斷源 同級內(nèi)的中斷優(yōu)先級外部中斷0中斷高級定時器/計數(shù)器T0溢出中斷外部中斷1定時器/計數(shù)器T1溢出中斷串行口中斷低級PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H問題:IP可以位尋址嗎?72可以位尋址。/*------------------------------------------------IPBitRegisters------------------------------------------------*/sbitPX0=0xB8;sbitPT0=0xB9;sbitPX1=0xBA;sbitPT1=0xBB;sbitPS=0xBC;sbitPT2=0xBD;PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H問題:當(dāng)INT0和INT1均產(chǎn)生中斷時,CPU處理哪一個中斷?73中斷源 同級內(nèi)的中斷優(yōu)先級外部中斷0中斷高級定時器/計數(shù)器T0溢出中斷外部中斷1定時器/計數(shù)器T1溢出中斷串行口中斷低級根據(jù)該表,外部中斷0具有最高優(yōu)先級,因此CPU響應(yīng)INT0的中斷。PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H問題:如何設(shè)置,使得INT1的中斷優(yōu)先級高于INT0?74由于每個中斷具有兩個優(yōu)先級:高優(yōu)先級和低優(yōu)先級。因此,可以設(shè)置INT1為高優(yōu)先級,INT0為低優(yōu)先級來更改兩者的優(yōu)先級順序。PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H如何實(shí)現(xiàn)?PX1—外部中斷1中斷優(yōu)先級控制位PX0—外部中斷0中斷優(yōu)先級控制位
若某控制位為1,則相應(yīng)的中斷源規(guī)定為高級中斷;反之,為0,則相應(yīng)的中斷源規(guī)定為低級中斷。75PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8HPX1=1;PX0=0;問題:IP=0x18;中斷的優(yōu)先級排序應(yīng)為怎樣?76PSPT1PX1PT0PX0IP(B8H)
BCHBBHBAHB9HB8H中斷源 同級內(nèi)的中斷優(yōu)先級外部中斷0中斷高級定時器/計數(shù)器T0溢出中斷外部中斷1定時器/計數(shù)器T1溢出中斷串行口中斷低級PS=1;PT1=1;因此串口、定時器1對應(yīng)中斷為高優(yōu)先級,其他為低優(yōu)先級。結(jié)合優(yōu)先級順序,各優(yōu)先級從高到低依次為:定時器1、串口、外部中斷0、定時器0、外部中斷1例子:如何編寫程序,實(shí)現(xiàn)下述功能:INT0中斷方式控制LED0,INT1中斷方式控制LED1。77演示:Project2硬件連接78程序編寫#include<AT89X51.h>sbitLED0=P0^0;sbitLED1=P0^1;voidmain(){ LED0=1;//LED初始狀態(tài)
LED1=1; //打開總中斷開關(guān) EA=1; //打開INT0中斷 EX0=1; //打開INT1中斷
EX1=1; //外部中斷0、1程控為邊沿觸發(fā)方式 TCON=0x05; //接下來做什么? while(1);}79//INT0對應(yīng)中斷處理函數(shù)如何編寫?voidExternal_Interrupt_0()interrupt0{ //INT0中斷處理函數(shù)如何編寫? LED0=!LED0;} //INT1對應(yīng)中斷處理函數(shù)如何編寫?voidExternal_Interrupt_1()interrupt2{ //INT1中斷處理函數(shù)如何編寫? LED1=!LED1;}80演示:Project2如果INT0和INT1連到一個按鍵上,將會出現(xiàn)什么情況?81由于INT0優(yōu)先級高于INT1,因此,INT0控制的發(fā)光二極管狀態(tài)先發(fā)生變化,INT1控制的后變化。#include<AT89X51.h>sbitLED0=P0^0; sbitLED1=P0^1;unsignedint
j,k;voidmain(){ LED0=1;//LED初始狀態(tài)
LED1=1; TCON=0x05;//外部中斷1程控為邊沿觸發(fā)方式// PX1=1; EA=1; //打開總中斷開關(guān)
EX0=1;//打開INT0中斷
EX1=1;//打開INT1中斷
while(1);}82voiddelay(unsignedintcount){ while(count>0) { count--; }}
voidExternal_Interrupt_0()interrupt0{
unsignedint
i; LED0=!LED0; for(i=0;i<50;i++)delay(1000);}voidExternal_Interrupt_1()interrupt2{
unsignedint
i; LED1=!LED1; for(i=0;i<50;i++)delay(1000);}
83演示:Project3添加語句,PX1=1;將會出現(xiàn)什么情況?84添加PX1=1后,INT0優(yōu)先級低于INT1,因此,INT1控制的發(fā)光二極管狀態(tài)先發(fā)生變化,INT0控制的后變化。演示:Project4例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms85演示:Project6例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms86問題1:如何編寫程序,滿足要求?程序應(yīng)分為幾部分?程序分為三部分:主程序,INT0處理程序,INT1處理程序。主程序應(yīng)完成什么功能?中斷初始化;D0、D1初始狀態(tài);While(1)循環(huán)。voidmain(){ LED0=1;//LED初始狀態(tài)
LED1=1; //外部中斷0、1程控為邊沿觸發(fā)方式 TCON=0x05; //打開總中斷開關(guān) EA=1; //打開INT0中斷
EX0=1;//打開INT0中斷 //打開INT1中斷
EX1=1;//打開INT1中斷
//接下來干什么?
while(1);}87例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms88INT0處理程序如何編寫?INT0處理程序完成什么功能?D0閃爍、延時。D0閃爍:LED0=!LED0;延時:DelayX1ms(500);閃爍5次:for(i=0;i<10;i++)中斷處理函數(shù)如何定義?voidExternal_Interrupt_0()interrupt0voidExternal_Interrupt_0()interrupt0{ unsignedint
i; for(i=0;i<10;i++) { LED0=!LED0; DelayX1ms(500); }}89例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms90問題1:在D0閃爍過程中,按下K1會有什么現(xiàn)象?為什么?D0會繼續(xù)閃爍,直至閃爍5次結(jié)束后,D1才開始閃爍。原因:INT0、INT1位于同一優(yōu)先級。演示:Project6例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms91問題2:在D1閃爍過程中,按下K0會有什么現(xiàn)象?為什么?D0會繼續(xù)閃爍,直至閃爍5次結(jié)束后,D1才開始閃爍。原因:INT0、INT1位于同一優(yōu)先級。演示:Project6加入語句:PX0=1;92例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms93問題1:在D0閃爍過程中,按下K1會有什么現(xiàn)象?為什么?D0會繼續(xù)閃爍,直至閃爍5次結(jié)束后,D1才開始閃爍。原因:INT0優(yōu)先級高于INT1。演示:Project9例子:硬件連接如圖:中斷0產(chǎn)生時,D0閃爍5次,周期為1s中斷1產(chǎn)生時,D1閃爍5次,周期為600ms94問題2:在D1閃爍過程中,按下K0會有什么現(xiàn)象?為什么?D1會暫停,
D1開始閃爍,閃爍5次結(jié)束后,D1繼續(xù)閃爍。原因:INT0優(yōu)先級高于INT1。演示:Project9問題:如果需要擴(kuò)展一個8個優(yōu)先級的外部中斷,該如何設(shè)計?95單片機(jī)外部中斷只有兩個(INT0和INT1),如果要使用8個中斷,則需要進(jìn)行中斷擴(kuò)展!外中斷源的擴(kuò)展方法利用定時器/計數(shù)器擴(kuò)充外中斷源用中斷和查詢結(jié)合法擴(kuò)充外中斷源96如何進(jìn)行中斷擴(kuò)展?可以設(shè)計一個編碼器,將8個優(yōu)先級的外部接口結(jié)果編碼送給單片機(jī)并行口。當(dāng)幾個輸入信號同時出現(xiàn)時,只對其中優(yōu)先權(quán)最高的一個進(jìn)行編碼。9774LS148真值表98GroupSelect:組選擇任意合上一個都將在GS引腳輸出低電平EnableOutput:輸出使能問題:擴(kuò)展的8個中斷,哪個優(yōu)先級最高?優(yōu)先級最高的輸入引腳7,最低的是引腳0。99S0~S7分別對應(yīng)8個外部擴(kuò)展中斷8個LED分別對應(yīng)結(jié)果GroupSelect:組選擇任意合上一個都將在GS引腳輸出低電平,利用這個性質(zhì),將GS連接到INT中斷。優(yōu)先級最高的輸入引腳7,最低的是引腳0。中斷觸發(fā)后,中斷例程通過讀取A2,A1,A0的輸出,判斷是哪一路開關(guān)觸發(fā)中斷。演示:Project8根據(jù)剛剛的分析,如何進(jìn)行編程?要完成的功能:對于外部的8個控制開關(guān),任意合上一個都將在GS引腳輸出低電平,觸發(fā)外部中斷,優(yōu)先級最高的輸入引腳7,最低的是引腳0。中斷觸發(fā)后,中斷例程通過讀取A2,A1,A0的輸出,判斷是哪一路開關(guān)觸發(fā)中斷。100主程序:中斷初始化,while(1)循環(huán)。中斷處理程序:對按鍵值進(jìn)行分析,輸出對應(yīng)結(jié)果。中斷觸發(fā)模式最好采用哪一種?當(dāng)有按鍵按下的時候,INT0為低,再有高優(yōu)先級的按下時,仍為低。因此須采用電平觸發(fā)方式!如何根據(jù)鍵值點(diǎn)亮相應(yīng)的LED?101讀出相應(yīng)的鍵值:ucharbi=P2&0x07; 點(diǎn)亮相應(yīng)的LED:P0=_cror_(0x7f,bi); 循環(huán)右移
#include<intrins.h>temp=0xfe//即11111110temp=_cror_(temp,1)//temp變?yōu)?1111111,再執(zhí)行一次temp=_cror_(temp,1),temp變?yōu)?0111111再在執(zhí)行一次temp=_cro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院口腔科醫(yī)生禮儀風(fēng)范
- 臨床護(hù)理管理與團(tuán)隊(duì)協(xié)作技巧
- 2026年河北美術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫帶答案解析
- 2026年安徽冶金科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫帶答案解析
- 2026年蕪湖職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試模擬試題附答案詳解
- 腫瘤護(hù)理護(hù)理實(shí)踐研究
- 2026年廣東生態(tài)工程職業(yè)學(xué)院單招綜合素質(zhì)考試模擬試題帶答案解析
- 醫(yī)院臨床護(hù)理技能培訓(xùn)禮儀
- 手術(shù)麻醉技術(shù)更新與挑戰(zhàn)
- 兒科急癥處理與急救技巧
- 2025年統(tǒng)編版語文三年級上冊第七、八單元模擬測試卷
- 2026年江蘇鹽城高中政治學(xué)業(yè)水平合格考試卷試題(含答案詳解)
- 主動脈瓣置換術(shù)指南
- 裝配式裝修管線分離培訓(xùn)課件
- 2025版國家開放大學(xué)法學(xué)本科《知識產(chǎn)權(quán)法》期末紙質(zhì)考試總題庫
- DB11T 354-2023 生活垃圾收集運(yùn)輸管理規(guī)范
- 赤石特大橋施工安全風(fēng)險評估報告
- QBT 2770-2006 羽毛球拍行業(yè)標(biāo)準(zhǔn)
- 售后服務(wù)流程管理手冊
- 2020-2021學(xué)年新概念英語第二冊-Lesson14-同步習(xí)題(含答案)
- 地下車庫建筑結(jié)構(gòu)設(shè)計土木工程畢業(yè)設(shè)計
評論
0/150
提交評論