![《8051單片機(jī)原理及應(yīng)用》 課件 第四章 中斷系統(tǒng)_第1頁(yè)](http://file4.renrendoc.com/view5/M01/20/02/wKhkGGZV04KAQtgZAAFxWbhySHc493.jpg)
![《8051單片機(jī)原理及應(yīng)用》 課件 第四章 中斷系統(tǒng)_第2頁(yè)](http://file4.renrendoc.com/view5/M01/20/02/wKhkGGZV04KAQtgZAAFxWbhySHc4932.jpg)
![《8051單片機(jī)原理及應(yīng)用》 課件 第四章 中斷系統(tǒng)_第3頁(yè)](http://file4.renrendoc.com/view5/M01/20/02/wKhkGGZV04KAQtgZAAFxWbhySHc4933.jpg)
![《8051單片機(jī)原理及應(yīng)用》 課件 第四章 中斷系統(tǒng)_第4頁(yè)](http://file4.renrendoc.com/view5/M01/20/02/wKhkGGZV04KAQtgZAAFxWbhySHc4934.jpg)
![《8051單片機(jī)原理及應(yīng)用》 課件 第四章 中斷系統(tǒng)_第5頁(yè)](http://file4.renrendoc.com/view5/M01/20/02/wKhkGGZV04KAQtgZAAFxWbhySHc4935.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
網(wǎng)絡(luò)空間安全學(xué)院網(wǎng)絡(luò)安全基礎(chǔ)技術(shù)應(yīng)用第四章中斷系統(tǒng)目錄CONTENT4.1.單片機(jī)中斷系統(tǒng)概述4.2.中斷執(zhí)行過(guò)程4.3.外部中斷實(shí)踐練習(xí)4.1.1.中斷的概念中斷:當(dāng)CPU正在處理某件事的時(shí)候外界發(fā)生了緊急事件請(qǐng)求(中斷源),要求CPU暫停當(dāng)前的工作,轉(zhuǎn)而去處理這個(gè)緊急事件,處理完以后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作,這樣的過(guò)程稱為中斷。實(shí)現(xiàn)這種功能的部件稱為中斷系統(tǒng)。向CPU發(fā)出中斷請(qǐng)求的信號(hào)源稱為中斷源。表4.1-1列出了傳統(tǒng)8051、STC8H、STC32G的中斷源。從表中我們可以看到,STC8H和STC32G因?yàn)橥庠O(shè)功能豐富,所以中斷源也更多。4.1.1.中斷的概念中斷源傳統(tǒng)8051STC8H3K64S2STC8H8K64USTC32G8K系列外部中斷0(INT0)支持下降沿和邊沿中斷√√√√定時(shí)器0(Timer0)√√√√外部中斷1(INT1)√√√√定時(shí)器1(Timer1)√√√√串口1(UART1)√√√√模數(shù)轉(zhuǎn)換(ADC)
√√√低壓檢測(cè)(LVD)
√√√捕獲中斷(CCP/PWM)
√√√串口2(UART2)
√√√串行外設(shè)接口中斷(SPI)
√√√外部中斷2(INT2)支持下降沿中斷
√√√外部中斷3(INT3)支持下降沿中斷
√√√定時(shí)器2(Timer)
√√√外部中斷4(INT4)
√√√串口3中斷(UART3)
√√串口4中斷(UART4)
√√定時(shí)器3中斷(Timer3)
√√√定時(shí)器4中斷(Timer4)
√√√I2C總線中斷
√√√USB中斷
√表4.1-1中斷源列表4.1.1.中斷的概念與中斷有關(guān)的概念還有:中斷過(guò)程、中斷優(yōu)先級(jí)、中斷嵌套等。中斷過(guò)程:從中斷源發(fā)出請(qǐng)求到中斷被響應(yīng),再到中斷返回,這個(gè)過(guò)程被稱為中斷過(guò)程,對(duì)應(yīng)圖4.1-1中斷請(qǐng)求、中斷執(zhí)行、中斷返回。中斷優(yōu)先級(jí):?jiǎn)纹瑱C(jī)的中斷系統(tǒng)一般允許多個(gè)中斷源,當(dāng)幾個(gè)中斷源同時(shí)向CPU請(qǐng)求中斷,并要求為它服務(wù)的時(shí)候,就存在優(yōu)先響應(yīng)的問題。傳統(tǒng)8051單片機(jī)設(shè)置優(yōu)先級(jí)寄存器后,有兩個(gè)中斷優(yōu)先級(jí),即高優(yōu)先級(jí)和低優(yōu)先級(jí),可以實(shí)現(xiàn)兩級(jí)中斷嵌套。中斷優(yōu)先級(jí)的規(guī)則是:高優(yōu)先級(jí)的中斷請(qǐng)求可以打斷低優(yōu)先級(jí)的中斷,反之,低優(yōu)先級(jí)的中斷請(qǐng)求不可以打斷高優(yōu)先級(jí)的中斷。當(dāng)兩個(gè)相同優(yōu)先級(jí)的中斷同時(shí)產(chǎn)生時(shí),將由查詢次序來(lái)決定系統(tǒng)先響應(yīng)哪個(gè)中斷。中斷嵌套:當(dāng)CPU正在處理一個(gè)中斷源請(qǐng)求的時(shí)候,也就是在執(zhí)行相應(yīng)的中斷服務(wù)程序,發(fā)生了另外一個(gè)優(yōu)先級(jí)比它還高的中斷源請(qǐng)求。如果CPU能夠暫停對(duì)原來(lái)中斷源的服務(wù)程序,轉(zhuǎn)而去處理優(yōu)先級(jí)更高的中斷請(qǐng)求源,處理完以后,再回到原低級(jí)中斷服務(wù)程序,這樣的過(guò)程稱為中斷嵌套。4.1.2.中斷嵌套中斷嵌套,俗稱中斷里的中斷,傳統(tǒng)8051單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即高優(yōu)先級(jí)和低優(yōu)先級(jí),STC8、STC32系列有四個(gè)中斷優(yōu)先級(jí),稱4級(jí)嵌套,我們以圖4.1-1說(shuō)明4級(jí)嵌套中斷響應(yīng)過(guò)程。圖中CPU先響應(yīng)了最低優(yōu)先級(jí)中斷,如果該中斷執(zhí)行過(guò)程中還有高一級(jí)中斷發(fā)出請(qǐng)求,那么CPU將暫停當(dāng)前中斷執(zhí)行過(guò)程,去執(zhí)行高一級(jí)中斷請(qǐng)求,最多可以嵌套4次。圖4.1-1中斷響應(yīng)過(guò)程和嵌套4.1.2.中斷嵌套CPU在執(zhí)行主程序的過(guò)程中,如果一個(gè)中斷源發(fā)起了中斷請(qǐng)求,那么CPU響應(yīng)后,就將當(dāng)前的操作數(shù)都?jí)喝攵褩#ūWo(hù)現(xiàn)場(chǎng)),跳轉(zhuǎn)到中斷服務(wù)程序(表中的中斷入口地址),如果此時(shí)還有比它更高級(jí)別的中斷源發(fā)出請(qǐng)求,那么CPU就將進(jìn)入到新的中斷服務(wù)程序,以此類推,對(duì)于STC8、STC32來(lái)說(shuō)最多可以發(fā)生4次這樣的嵌套。當(dāng)高一級(jí)的中斷執(zhí)行完畢,就會(huì)返回到級(jí)別低的中斷,直到所有的中斷都執(zhí)行完畢,繼續(xù)執(zhí)行主程序。好比這樣的場(chǎng)景,班級(jí)里有小組長(zhǎng)、學(xué)習(xí)委員、生活委員、安全員,假設(shè)他們的嵌套優(yōu)先級(jí)依次是0、1、2、3,數(shù)字越大,優(yōu)先級(jí)越高?,F(xiàn)在同學(xué)們都在自習(xí),此時(shí)小組長(zhǎng)發(fā)出通知,相繼又有學(xué)習(xí)委員、生活委員、安全員發(fā)出通知,那么最先執(zhí)行的是安全員的通知,然后依次執(zhí)行生活委員、學(xué)習(xí)委員、小組長(zhǎng)的通知,最后回到正常自習(xí)流程。以上所述歸納為下面兩條基本規(guī)則:1.低優(yōu)先級(jí)中斷可被高優(yōu)先級(jí)中斷所中斷,反之不能;2.任何一種中斷(不管是高級(jí)還是低級(jí)),一旦得到響應(yīng),不會(huì)再被它的同級(jí)中斷所中斷。4.2.1.中斷寄存器單片機(jī)的中斷系統(tǒng)包含了很多特殊功能寄存器,單片機(jī)要開啟某個(gè)中斷,必須先進(jìn)行相應(yīng)的設(shè)置,比如中斷使能、中斷優(yōu)先級(jí)設(shè)置、中斷標(biāo)志位的清除等。1.中斷使能寄存器:中斷首先要被使能,CPU才去響應(yīng)它。單片機(jī)的中斷源一部分來(lái)自于單片機(jī)芯片內(nèi)部功能模塊如定時(shí)器模塊,一部分來(lái)自于IO管腳,單片機(jī)首先要管理的是中斷的開啟。中斷被使能后,CPU才去響應(yīng)中斷。下面各個(gè)寄存器位的值為“1”時(shí),中斷允許。我們以IE和IE2舉例說(shuō)明:(1)IE:中斷使能寄存器(可位尋址)寄存器名稱地址bit7bit6bit5bit4bit3bit2bit1bit0IEA8HEAELVDEADCESET1EX1ET0EX04.2.1.中斷寄存器EA:總中斷允許,即各中斷源首先受EA控制,其次才受各中斷源自己的中斷允許控制位控制。0:CPU屏蔽所有的中斷,即所有中斷都不響應(yīng)。1:CPU開放中斷。ELVD:低壓檢測(cè)中斷允許位,對(duì)應(yīng)LVD中斷源。EADC:模數(shù)轉(zhuǎn)換中斷允許位,對(duì)應(yīng)ADC中斷源。ES:串行口1中斷允許位,對(duì)應(yīng)UART1中斷源。ET1:定時(shí)/計(jì)數(shù)器T1的溢出中斷允許位。對(duì)應(yīng)Timer1中斷源。EX1:外部中斷1中斷允許位,對(duì)應(yīng)INT1中斷源。ET0:定時(shí)/計(jì)數(shù)器T0的溢出中斷允許位,對(duì)應(yīng)Timer0中斷源。EX0:外部中斷T0的溢出中斷允許位,對(duì)應(yīng)INT0中斷源。4.2.1.中斷寄存器(2)IE2:中斷使能寄存器2(不可位尋址)寄存器名稱地址bit7bit6bit5bit4bit3bit2bit1bit0IE2AFHEUSBET4ET3ES4ES3ET2ESPIES2EUSB:USB中斷允許位。ET4:定時(shí)/計(jì)時(shí)器T4的溢出中斷允許位,對(duì)應(yīng)Timer4中斷源。ET3:定時(shí)/計(jì)時(shí)器T3的溢出中斷允許位,對(duì)應(yīng)Timer3中斷源。ES4:串行口4中斷允許位,對(duì)應(yīng)UART4中斷源。ES3:串行口3中斷允許位,對(duì)應(yīng)UART3中斷源。ET2:定時(shí)/計(jì)時(shí)器T2的溢出中斷允許位,對(duì)應(yīng)Timer2中斷源。ESPI:SPI中斷允許位,對(duì)應(yīng)SPI中斷源。ES2:串行口2中斷允許位,對(duì)應(yīng)UART2中斷源。4.2.1.中斷寄存器2.中斷請(qǐng)求寄存器:?jiǎn)纹瑱C(jī)的各個(gè)中斷源發(fā)出中斷請(qǐng)求,這個(gè)“中斷請(qǐng)求”是一種什么行為呢?它不是人們生活中的電話鈴聲,也不是門鈴,更不是喊叫,它和中斷允許一樣,也是寄存器(中斷標(biāo)志位)的值的變化。下表中當(dāng)值為“1”的時(shí)候,表示有中斷請(qǐng)求,為“0”的時(shí)候表示沒有中斷請(qǐng)求。CPU在讀到該位“1”的時(shí)候,響應(yīng)中斷。我們以TCON、AUXINTIF舉例說(shuō)明:(1)TCON:定時(shí)器控制寄存器(可位尋址)寄存器名稱地址bit7bit6bit5bit4bit3bit2bit1bit0TCON88HTF1TR1TF0TR0IE1IT1IE0IT04.2.1.中斷寄存器TF1:定時(shí)器1溢出中斷標(biāo)志,當(dāng)進(jìn)入到中斷服務(wù)程序后,該位自動(dòng)清零。TF0:定時(shí)器0溢出中斷標(biāo)志,當(dāng)進(jìn)入到中斷服務(wù)程序后,該位自動(dòng)清零。IE1:外部中斷1中斷請(qǐng)求標(biāo)志,當(dāng)進(jìn)入到中斷服務(wù)程序后,該位自動(dòng)清零。IE0:外部中斷0中斷請(qǐng)求標(biāo)志,當(dāng)進(jìn)入到中斷服務(wù)程序后,該位自動(dòng)清零。IT1:外部中斷0電平觸發(fā)控制位。IT1=0,上升沿或下降沿均可觸發(fā)外部中斷0;IT1=1,外部中斷0下降沿觸發(fā)方式。IT0:外部中斷0源觸發(fā)控制位,IT0=0,上升沿或下降沿均可觸發(fā)外部中斷0;IT0=1,外部中斷0下降沿觸發(fā)方式。TCON寄存器除了有中斷請(qǐng)求標(biāo)志位外,還有定時(shí)器模塊啟動(dòng)和外部中斷信號(hào)選擇的控制位:TR1令定時(shí)器1啟動(dòng)計(jì)時(shí),TR0令定時(shí)器0啟動(dòng)計(jì)時(shí)。4.2.1.中斷寄存器(2)AUXINTIF:中斷標(biāo)志輔助寄存器INT4IF:外部中斷4中斷請(qǐng)求標(biāo)志,當(dāng)中斷服務(wù)程序響應(yīng)后,該位自動(dòng)清零。INT3IF:外部中斷3中斷請(qǐng)求標(biāo)志,當(dāng)中斷服務(wù)程序響應(yīng)后,該位自動(dòng)清零。INT2IF:外部中斷2中斷請(qǐng)求標(biāo)志,當(dāng)中斷服務(wù)程序響應(yīng)后,該位自動(dòng)清零。T4IF:定時(shí)器4溢出中斷標(biāo)志,當(dāng)中斷服務(wù)程序響應(yīng)后,該位自動(dòng)清零(此位不可讀)。T3IF:定時(shí)器3溢出中斷標(biāo)志,當(dāng)中斷服務(wù)程序響應(yīng)后,該位自動(dòng)清零(此位不可讀)。T2IF:定時(shí)器2溢出中斷標(biāo)志,當(dāng)中斷服務(wù)程序響應(yīng)后,該位自動(dòng)清零(此位不可讀)。注意:STC8H系列單片機(jī)的定時(shí)器2~4,中斷標(biāo)志字是不可讀的,也就是書寫定時(shí)器2~4程序
時(shí),不能出現(xiàn)溢出標(biāo)志的查詢語(yǔ)句。寄存器名稱地址bit7bit6bit5bit4bit3bit2bit1bit0TCONEFH-INT4IFINT3IFINT2IF-T4IFT3IFT2IF4.2.1.中斷寄存器3.中斷優(yōu)先寄存器:STC8、STC32系列是四級(jí)嵌套,優(yōu)先級(jí)可在3、2、1、0變化。用戶給中斷源安排的優(yōu)先次序在中斷優(yōu)先級(jí)控制寄存器里設(shè)置。中斷優(yōu)先InterruptPriority,所以其寄存器通常是IP開頭。IPH和IP說(shuō)明如下:寄存器名稱地址bit7bit6bit5bit4bit3bit2bit1bit0IPHB7H-PLVDHPADCHPSHPT1HPX1HPT0HPX0HIPB8H-PLVDPADCPSPT1PX1PT0PX0對(duì)應(yīng)的中斷源-LVDADCUart1Timer1INT1Timer0INT04.2.1.中斷寄存器IPH和IP相同位置的二進(jìn)制位構(gòu)成了四級(jí)嵌套,以PX0H,PX0為例:PX0H,PX0:外部中斷0中斷優(yōu)先級(jí)控制位00:INT0中斷優(yōu)先級(jí)為0級(jí)(最低級(jí))01:INT0中斷優(yōu)先級(jí)為1級(jí)(較低級(jí))10:INT0中斷優(yōu)先級(jí)為2級(jí)(較高級(jí))11:INT0中斷優(yōu)先級(jí)為3級(jí)(最高級(jí))其它中斷源的中斷優(yōu)先級(jí)設(shè)置類似。傳統(tǒng)8051單片機(jī)沒有IPH,只有IP寄存器,因此只能設(shè)置0和1兩級(jí)中斷。4.2.2.中斷控制過(guò)程中斷控制過(guò)程如圖4.2-1所示,圖中展示了INT0、Timer0、UART1、ADC四種中斷源的中斷控制過(guò)程。圖4.2-1中斷控制過(guò)程4.2.2.中斷控制過(guò)程1.INT0:當(dāng)CPU總中斷允許、外部中斷0允許后(IE寄存器相應(yīng)位置“1”,既EX0、EA開關(guān)關(guān)閉),事先在TCON.0設(shè)置好中斷觸發(fā)方式(電平還是邊沿)并設(shè)置好中斷優(yōu)先級(jí),只要INT0外部管腳有信號(hào),就會(huì)發(fā)出中斷請(qǐng)求。2.Timer0當(dāng)CPU總中斷允許、定時(shí)器0允許后(IE寄存器相應(yīng)位置“1”,既ET0、EA開關(guān)關(guān)閉),事先設(shè)置好定時(shí)器的工作模式和定時(shí)時(shí)間,只要TF0溢出標(biāo)志位置1,就會(huì)發(fā)出中斷請(qǐng)求。3.UART1當(dāng)CPU總中斷允許、串口中斷1允許后(IE寄存器相應(yīng)位置“1”,既ES、EA開關(guān)關(guān)閉),事先設(shè)置好通信波特率,只要接收標(biāo)志位RI和發(fā)送標(biāo)志位TI有一個(gè)為1,就會(huì)發(fā)出中斷請(qǐng)求。4.2.2.中斷控制過(guò)程4.ADC當(dāng)CPU總中斷允許、ADC中斷允許后(IE寄存器相應(yīng)位置“1”,既EADC、EA開關(guān)關(guān)閉),只要ADC轉(zhuǎn)換結(jié)束,ADCFlag置1,就會(huì)發(fā)出中斷請(qǐng)求。STC8、STC32等各型號(hào)單片機(jī)常用中斷的觸發(fā)行為總結(jié)在表4.2-1中。中斷源觸發(fā)行為中斷請(qǐng)求標(biāo)志位中斷允許控制位中斷清除INT0IT0=1時(shí),下降沿觸發(fā);IT0=0時(shí),上升沿和下降沿均可觸發(fā)。IE0EX0/EA當(dāng)外部中斷服務(wù)程序被響應(yīng)后,中斷標(biāo)志位IE0會(huì)被硬件自動(dòng)清零,重新設(shè)置為0Timer0定時(shí)器0溢出TF0ET0/EA當(dāng)定時(shí)器中斷被執(zhí)行時(shí),定時(shí)器的溢出標(biāo)志位TF0被硬件清零。INT1IT0=1時(shí),下降沿觸發(fā);IT0=0時(shí),上升沿和下降沿均可觸發(fā)。IE1EX1/EA當(dāng)外部中斷服務(wù)程序被響應(yīng)后,中斷標(biāo)志位IE1會(huì)被硬件自動(dòng)清零.Timer1定時(shí)器1溢出TF1ET1/EA當(dāng)定時(shí)器中斷被執(zhí)行時(shí),定時(shí)器的溢出標(biāo)志位TF1被硬件清零。UART1發(fā)送或接收完成RI/TIES/EARI和TI要由軟件清零.ADCA/D轉(zhuǎn)換完成ADC_FLAGEADC/EAADC_FLAG由軟件清除,重新設(shè)置為0。表4.2-1常用中斷的觸發(fā)行為4.2.2.中斷控制過(guò)程中斷源觸發(fā)行為中斷請(qǐng)求標(biāo)志位中斷允許控制位中斷清除LVD電源電壓下降到低于LVD檢測(cè)電壓LVDFELVD/EALVDF由軟件清除。UART2出口2發(fā)送或接收完成RI2/TI2ES2/EARI2和TI2要由軟件清零.SPISPI數(shù)據(jù)傳輸完成SPIFESPI/EASPIF由軟件清除。INT2下降沿觸發(fā)INT2IFEX2/EA中斷標(biāo)志位被隱藏起來(lái)了,對(duì)用戶不可見。當(dāng)中斷服務(wù)程序被響應(yīng)后,中斷請(qǐng)求標(biāo)志位自動(dòng)清零.INT3下降沿觸發(fā)INT3IFEX3/EATimer2定時(shí)器2、3、4溢出T2IF、T3IF、T4IFET2/EA、ET3/EA、ET4/EA注意:系統(tǒng)每個(gè)時(shí)鐘對(duì)外部中斷管腳采樣1次,所以為了確保被檢測(cè)到,輸入信號(hào)應(yīng)該至少維持2個(gè)時(shí)鐘。4.2.3.中斷服務(wù)函數(shù)當(dāng)單片機(jī)CPU接收到中斷請(qǐng)求后,要去響應(yīng)中斷,執(zhí)行過(guò)程是:CPU停止主函數(shù)語(yǔ)句的執(zhí)行,保存當(dāng)前狀態(tài),形成斷點(diǎn)保護(hù),然后自動(dòng)進(jìn)入中斷函數(shù),執(zhí)行中斷函數(shù)中的語(yǔ)句,在中斷函數(shù)語(yǔ)句執(zhí)行完畢后返回到之前保護(hù)的斷點(diǎn)處,繼續(xù)執(zhí)行主函數(shù)語(yǔ)句。如上所述,單片機(jī)執(zhí)行中斷,其實(shí)執(zhí)行的是中斷函數(shù)里的語(yǔ)句。要讓中斷系統(tǒng)工作起來(lái),除了設(shè)置中斷寄存器外,還要書寫中斷函數(shù)。中斷函數(shù)的格式如下:void中斷函數(shù)名()interrupt中斷編號(hào)中斷函數(shù)的特點(diǎn):中斷函數(shù)沒有返回值,中斷函數(shù)的返回值都是void空。中斷函數(shù)名由用戶自定義,函數(shù)名后面一定要有括號(hào)()表明這是函數(shù)。Interrupt是中斷函數(shù)的關(guān)鍵字,表明這個(gè)函數(shù)是中斷函數(shù)。中斷編號(hào)與中斷入口地址對(duì)應(yīng),中斷編號(hào)是固定的。中斷編號(hào)也是優(yōu)先級(jí)查詢,編號(hào)的數(shù)字越小,查詢優(yōu)先級(jí)越高,如果沒有設(shè)置優(yōu)先級(jí)寄存器,中斷優(yōu)先級(jí)按照表4.2-2中斷編號(hào)逐漸降低。4.2.3.中斷服務(wù)函數(shù)表4.2-2列出了STC系列單片機(jī)的中斷源、中斷編號(hào)以及推薦的中斷函數(shù)名。從表中可以看出:不同型號(hào)單片機(jī)的中斷源數(shù)量是不一樣的,STC8H8K/STC32G12K的中斷源多于傳統(tǒng)8051單片機(jī),也多于STC15F系列單片機(jī)。外部中斷2~3、定時(shí)器2的優(yōu)先級(jí)默認(rèn)是0,無(wú)法通過(guò)優(yōu)先級(jí)設(shè)置位進(jìn)行設(shè)置,因此它們的優(yōu)先級(jí)始終是最低的。傳統(tǒng)8051單片機(jī)/STC15F系列/STC8H8K系列/STC32G12K系列中斷編號(hào)中斷源中斷函數(shù)舉例0外部中斷0(INT0)voidInt0_serve()interrupt01定時(shí)器0(Timer0)voidTimer0_serve()interrupt12外部中斷1(INT1)voidInt1_serve()interrupt23定時(shí)器1(Timer1)voidTimer1_serve()interrupt34串口1(UART1)voidUART1_serve()interrupt4表4.2-2STC單片機(jī)的中斷編號(hào)、中斷源對(duì)應(yīng)列表4.2.3.中斷服務(wù)函數(shù)STC15F2系列/STC8H8K系列/STC32G12K系列5AD轉(zhuǎn)換(ADC)voidADC_serve()interrupt56低壓檢測(cè)(LVD)voidLVD_serve()interrupt67捕獲中斷(CCP/PWM)voidPWM_serve()interrupt78串口2(UART2)voidUART2_serve()interrupt89SPI中斷voidSPI_serve()interrupt910外部中斷2(INT2)voidInt2_serve()interrupt1011外部中斷3(INT3)voidInt3_serve()interrupt1112定時(shí)器2(Timer2)voidTimer2_serve()interrupt1216外部中斷4——INT4voidInt4_serve()interrupt16STC8H8K系列/STC32G12K系列17串口3中斷(UART3)voidUART3_serve()interrupt1718串口4中斷(UART4)voidUART4_serve()interrupt1819定時(shí)器3(Timer3)voidTimer3_serve()interrupt1920定時(shí)器4(Timer4)voidTimer4_serve()interrupt2021比較器中斷(CMP)voidcmp_serve()interrupt2124I2C總線中斷voidI2C_serve()interrupt2425USB中斷voidUSB_serve()interrupt2526PWMAvoidPWMA_serve()interrupt2627PWMBvoidPWMB_serve()interrupt27Keil軟件只支持到中斷號(hào)(0~31)的32個(gè)中斷,超過(guò)31的中斷編號(hào)要查找芯片手冊(cè)。4.3.外部中斷實(shí)踐練習(xí)本章介紹了中斷相關(guān)概念和中斷的工作過(guò)程,參考圖4.2-1,說(shuō)說(shuō)看,單片機(jī)要執(zhí)行一個(gè)外部中斷過(guò)程,要滿足哪些控制條件?完成下面的任務(wù)。任務(wù)1.檢測(cè)外部中斷,led燈顯示任務(wù)要求:?jiǎn)纹瑱C(jī)P32、P33連接按鍵,請(qǐng)利用單片機(jī)外部中斷功能檢測(cè)按鍵狀態(tài),要求當(dāng)按鍵按下,就讓P60、P61連接的led燈亮滅狀態(tài)取反一次。任務(wù)分析:電路圖如圖4.3-1所示。1.按鍵連接單片機(jī)P32、P33,這兩個(gè)管腳也是單片機(jī)的INT0、INT1管腳。2.按鍵SW17/SW18釋放時(shí),P32/P33管腳高電平;SW17/SW18按下時(shí),P32/P33低電平,理想波形如圖4.3-2所示,是中斷信號(hào)源。3.單片機(jī)開啟外部中斷功能后,管腳上的信號(hào)變化向CPU發(fā)出中斷請(qǐng)求。在程序中書寫中斷函數(shù),當(dāng)中斷請(qǐng)求成功后,程序自動(dòng)跳轉(zhuǎn)到中斷函數(shù)入口,中斷語(yǔ)句執(zhí)行完畢后返回到斷點(diǎn)。任務(wù)1.檢測(cè)外部中斷,led燈顯示圖4.3-1按鍵和LED電路電路圖4.3-2按鍵理想波形任務(wù)1.檢測(cè)外部中斷,led燈顯示程序書寫要點(diǎn):(1)開啟外部中斷;(2)書寫外部中斷函數(shù)。中斷處理的優(yōu)點(diǎn)是不占用main函數(shù),由中斷源觸發(fā)CPU自動(dòng)進(jìn)入中斷函數(shù)。任務(wù)程序:#include<stc8h.h>//包含此頭文件后,不需要再包含"reg51.h"頭文件typedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;/***********端口設(shè)置的初始化函數(shù)***********************/voidGPIO_PxMxSet(){任務(wù)1.檢測(cè)外部中斷,led燈顯示P0M1=0x00;P0M0=0x00;//設(shè)置為準(zhǔn)雙向口P1M1=0x00;P1M0=0x00;//設(shè)置為準(zhǔn)雙向口P2M1=0x00;P2M0=0x00;//設(shè)置為準(zhǔn)雙向口P3M1=0x00;P3M0=0x00;//設(shè)置為準(zhǔn)雙向口P4M1=0x00;P4M0=0x00;//設(shè)置為準(zhǔn)雙向口P5M1=0x00;P5M0=0x00;//設(shè)置為準(zhǔn)雙向口P6M1=0x00;P6M0=0x00;//設(shè)置為準(zhǔn)雙向口P7M1=0x00;P7M0=0x00;//設(shè)置為準(zhǔn)雙向口P40=0;}/**********************主函數(shù)************************/voidmain(void)任務(wù)1.檢測(cè)外部中斷,led燈顯示{GPIO_PxMxSet();IE1=0;//外中斷1標(biāo)志位IE0=0;//外中斷0標(biāo)志位EX1=1;//INT1EnableEX0=1;//INT0EnableIT0=1;//INT0下降沿中斷IT1=1;//INT1下降沿中斷EA=1;//總中斷Enablewhile(1)//主程序空,不執(zhí)行任何語(yǔ)句{}任務(wù)1.檢測(cè)外部中斷,led燈顯示}/*********************INT0中斷函數(shù)*************************/voidINT0_int(void)interrupt0//進(jìn)中斷時(shí)IE0已經(jīng)被清除{P60=!P60;}/*********************INT1中斷函數(shù)*************************/voidINT1_int(void)interrupt2//進(jìn)中斷時(shí)IE1已經(jīng)被清除{P61=!P61;}任務(wù)2.檢測(cè)外部中斷,數(shù)碼管顯示任務(wù)要求:同任務(wù)15,單片機(jī)P32、P33連接按鍵,請(qǐng)利用單片機(jī)外部中斷功能記錄按鍵次數(shù),按鍵次數(shù)顯示在數(shù)碼管,可使用兩個(gè)數(shù)碼管分別顯示這兩個(gè)按鍵的次數(shù),按鍵次數(shù)最大15次。1.任務(wù)分析:電路圖如圖4.3-1所示。(1)按照任務(wù)15的方法,啟用中斷處理。(2)按照任務(wù)14的方法,書寫數(shù)碼管顯示代碼。(3)兩個(gè)按鍵的顯示格式如圖4.3-3所示,分別在8位數(shù)碼管的兩端,靜態(tài)顯示。(a)
按鍵SW17的次數(shù)顯示(b)按鍵SW18的次數(shù)顯示圖4.3-3
任務(wù)15的顯示圖示任務(wù)2.檢測(cè)外部中斷,數(shù)碼管顯示2.任務(wù)代碼:/******************************************/#include<stc8h.h>//包含此頭文件后,里面聲明的寄存器不需要再手動(dòng)輸入,避免重復(fù)定義#defineMAIN_Fosc24000000L//定義主時(shí)鐘#defineDIS_BLACK0x10typedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;/**********************本地常量聲明段碼共陰數(shù)碼管顯示字形編碼*************/u8codetab[]={//0123456789ABCDEF任務(wù)2.檢測(cè)外部中斷,數(shù)碼管顯示0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,//black-HJKLNoPUtGQrMy0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e, //0.1.2.3.4.5.6.7.8.9.-10xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};/***************************位碼,8位數(shù)碼管com7~com0獨(dú)立選中****************/u8codedspcom[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};/*************************本地變量聲明***************************************/u8dspbuf[8];//顯示緩沖u8display_index;//顯示位索引u8INT0_cnt,INT1_cnt;//測(cè)試用的計(jì)數(shù)變量voidDisplayScan(void);//按鍵掃描函數(shù)任務(wù)2.檢測(cè)外部中斷,數(shù)碼管顯示/*******************************延時(shí)函數(shù)****************************************/voiddelay_ms(u8ms);//函數(shù)體見任務(wù)6/**********************主函數(shù)************************/voidmain(void){u8i=0; P6M1=0x00;P6M0=0x00;//設(shè)置為
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 志愿者證申請(qǐng)書
- 加入學(xué)習(xí)部的申請(qǐng)書
- 初一期中學(xué)習(xí)報(bào)告
- 青海省海東市2024-2025學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題(解析版)
- 廣西河池市2024-2025學(xué)年七年級(jí)上學(xué)期期末語(yǔ)文試題(解析版)
- 懷孕調(diào)崗申請(qǐng)書
- 國(guó)外大學(xué)申請(qǐng)書
- DB13JT-河北省城市市政污水污泥處理設(shè)施運(yùn)行監(jiān)督管理辦法
- 初級(jí)銀行管理-銀行專業(yè)初級(jí)《銀行管理》高分通關(guān)卷5
- 初級(jí)銀行管理-銀行專業(yè)初級(jí)《銀行管理》點(diǎn)睛提分卷1
- 高支模專項(xiàng)施工方案(專家論證)
- 《物流與供應(yīng)鏈管理-新商業(yè)、新鏈接、新物流》配套教學(xué)課件
- 房地產(chǎn)標(biāo)準(zhǔn)踩盤表格模板
- 物聯(lián)網(wǎng)項(xiàng)目實(shí)施進(jìn)度計(jì)劃表
- 學(xué)校校園安全巡邏情況登記表
- 光纜線路工程段終版施工圖
- 礦井年度災(zāi)害預(yù)防和處理計(jì)劃
- 畢業(yè)論文-基于Java Web的模擬駕??荚囅到y(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- MDD指令附錄一 基本要求檢查表2013版
- 新部編人教版四年級(jí)下冊(cè)道德與法治全冊(cè)教案(教學(xué)設(shè)計(jì))
- 人美版高中美術(shù)選修:《繪畫》全冊(cè)課件【優(yōu)質(zhì)課件】
評(píng)論
0/150
提交評(píng)論