蓝桥杯单片机——中断系统(7)
一、原理分析
1、什么是中斷?
CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生);CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷 。
中斷系統(tǒng)三要素:中斷源、中斷的嵌套和優(yōu)先級處理、中斷的響應(yīng)過程
2、51單片機具有5個中斷源:
3、?中斷允許控制寄存器(IE)
8051單片機通過中斷允許控制寄存器進行兩級中斷控制。
EA—中斷允許的總控制位。
EA=0時,中斷總禁止相當(dāng)于關(guān)中斷,即禁止所有中斷。
EA=1時,中斷總允許,相當(dāng)于開中斷。總的中斷允許后,各個中斷源是否可以申請
中斷,則由其余各中斷源的中斷允許位進行控制。
EX0—外部中斷0允許控制位,當(dāng)EX0=0,禁止外中斷0;EX0=1,允許外中斷0。
EX1—外部中斷1允許控制位,當(dāng)EX1=0,禁止外中斷1;EX1=1,允許外中斷1。
ET0—定時器0中斷允許控制位,當(dāng)ET0=0, 禁止該中斷;ET0=1,允許定時器0中斷。
ET1—定時器1中斷允許控制位,當(dāng)ET1=0,禁止該中斷;ET1=1,允許定時器1中斷。
ES—串行口中斷允許控制位,當(dāng)ES=0,禁止串行中斷;ES=1,允許串行中斷。
ET2—定時器2中斷允許控制位,當(dāng)ET2=0,禁止該中斷;ET2=1,允許定時器2中斷。
(鏈接:https://wenku.baidu.com/view/22d783be59fb770bf78a6529647d27284a733762.html)
3、P3口
P3口除了可以做普通的I/O使用外,還具有第二功能:
二、程序編寫
實現(xiàn)功能:定義一個working()函數(shù),使L1燈不斷閃爍。將P32引腳定義成外部中斷功能,按鍵S5就會產(chǎn)生外部中斷觸發(fā)信號,在中斷響應(yīng)函數(shù)中,點亮L8指示燈,延時一段時間后熄滅,該功能用兩種方式實現(xiàn):1、中斷方式(在中斷服務(wù)函數(shù)中延時)2、查詢方式
首先將J5處的跳線帽接到2~3引腳,即S5按鍵接到P32/INTO, S4按鍵接到P33/INT1。
中斷方式:(直接在中斷服務(wù)函數(shù)中執(zhí)行)
#include <reg52.h> sbit L1=P0^0; sbit L8=P0^7;void delay(unsigned int t)//延時函數(shù),注意t為int型 {while(t--);while(t--);while(t--); } void working()//L1閃爍函數(shù) {P2=0xA0;P0=0x00;P2=0x80;P0=0xFF;//關(guān)閉外設(shè)P2=0x80;L1=0;delay(60000);L1=1;delay(60000); } void Init_INT0()//初始化函數(shù),對中斷的工作狀態(tài)的初始化設(shè)置 {EA=1;//開中斷總開關(guān),允許中斷IT0=1;//外部中斷0,下降沿觸發(fā);若為低電平觸發(fā),則為IT0=0;EX0=1;//開外部中斷0 } void serviceINT0() interrupt 0//外部中斷服務(wù)函數(shù) {L8=0;delay(60000);delay(60000);delay(60000);delay(60000);delay(60000);delay(60000);L8=1; } void main() {Init_INT0();while(1){working();} }查詢方式:(在中斷服務(wù)函數(shù)中標(biāo)志變量,在外部延時)
#include <reg52.h> sbit L1=P0^0; sbit L8=P0^7;void delay(unsigned int t)//延時函數(shù),注意t為int型 {while(t--);while(t--);while(t--); } void working()//L1閃爍函數(shù) {P2=0xA0;P0=0x00;P2=0x80;P0=0xFF;//關(guān)閉外設(shè)P2=0x80;L1=0;delay(60000);L1=1;delay(60000); } void Init_INT0()//初始化函數(shù),對中斷的工作狀態(tài)的初始化設(shè)置 {EA=1;//開中斷總開關(guān),允許中斷IT0=1;//外部中斷0,下降沿觸發(fā);若為低電平觸發(fā),則為IT0=0;EX0=1;//開外部中斷0 } unsigned char flag=0; void serviceINT0() interrupt 0//外部中斷服務(wù)函數(shù) {flag=1; } void LED() {if(flag==1){ L8=0;delay(60000);delay(60000);delay(60000);delay(60000);delay(60000);delay(60000);L8=1;}flag=0; } void main() {Init_INT0();while(1){working();LED();} }?
?
總結(jié)
以上是生活随笔為你收集整理的蓝桥杯单片机——中断系统(7)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python -字典生成器
- 下一篇: Windows下Tomcat安装