資源描述:
《第4章中斷系統(tǒng)的C51編程.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第4章51單片機(jī)中斷系統(tǒng)的C51編程4.1中斷系統(tǒng)結(jié)構(gòu)與中斷控制4.2中斷優(yōu)先級與中斷函數(shù)4.3外部中斷源的C51編程4.4實(shí)驗(yàn)4.151單片機(jī)中斷系統(tǒng)結(jié)構(gòu)與中斷控制5個中斷源外部中斷:外部中斷0/INT0外部中斷1/INT1定時器/計(jì)數(shù)器溢出中斷:定時器/計(jì)數(shù)器0TF0定時器/計(jì)數(shù)器1TF1串行口中斷:串行口RI、TI中斷控制設(shè)置了4個專用寄存器用于中斷控制。。(1)定時器控制寄存器(TCON)(2)串行口控制寄存器(SCON)(3)中斷允許控制寄存器(IE)(4)中斷優(yōu)先級控制寄存器(IP)4.2中斷
2、優(yōu)先級與中斷函數(shù)優(yōu)先級排列如下(從高到低):外部中斷0定時器/計(jì)數(shù)器0溢出外部中斷1定時器/計(jì)數(shù)器1溢出串行口中斷中斷函數(shù)的結(jié)構(gòu)定義中斷服務(wù)函數(shù)的一般形式為:函數(shù)名()interrupt()n外部中斷0中斷、定時器/計(jì)數(shù)器0溢出中斷、外部中斷1中斷、定時器/計(jì)數(shù)器1溢出中斷、串行口中斷對應(yīng)的中斷類型號分別為0、1、2、3、4。4.3外部中斷源的C51編程51單片機(jī)提供了2個外部中斷源:外部中斷0請求,占用P3.2引腳,其中斷請求號為0。外部中斷1請求,占用P3.3引腳,其中斷請求號為2。外部中斷源的初始化
3、時通過設(shè)置相應(yīng)的特殊功能寄存器的相應(yīng)位來實(shí)現(xiàn)的。(1)TCON寄存器中的IT0、IT1位外部中斷0和外部中斷1的中斷觸發(fā)方式控制位。如:IT0=0;//外部中斷0為電平觸發(fā)方式IT1=1;//外部中斷1為脈沖觸發(fā)方式(2)IP寄存器中的PX0、PX1位外部中斷0和外部中斷1的中斷優(yōu)先級的設(shè)定。如:PX0=0;//設(shè)定外部中斷0為低級中斷PX1=1;//設(shè)定外部中斷1為高級中斷(3)IE寄存器中的EA、EX0、EX1位EA為中斷允許總控制位;EX0、EX1為外部中斷0中斷和外部中斷1中斷的中斷允許位。如:E
4、A=1;//開放總的中斷控制EX0=1;//允許外部中斷0中斷EX1=0;//禁止外部中斷1中斷【例4-1】初始狀態(tài)時低4位燈亮,高4位的燈滅,編程實(shí)現(xiàn)按一下S0,P1口的發(fā)光狀態(tài)發(fā)生反轉(zhuǎn)。#includevoidmain(){P1=0XF0;//高4位滅、低4位亮IT1=1;//脈沖觸發(fā)方式EA=1;EX1=1;//開放相應(yīng)的中斷while(1);//等待中斷}voidwint0(void)interrupt2//2—外1{P1=~P1;}【例4-2】利用S0按鈕控制P1口的燈,要求每
5、按一下就點(diǎn)亮一盞燈(其余的燈是滅的)。#include#include//內(nèi)部函數(shù)bitflag;//中斷標(biāo)志unsignedcharledstatus;voidwint1()interrupt2{flag=1;}voidmain(void){P1=0xff;ledstatus=0xfe;IT1=1;EA=1;EX1=1;while(1){if(flag){P1=ledstatus;ledstatus=_crol_(ledstatus,1);flag=0;}}}【例
6、4-3】當(dāng)S0動作時,P1.0端口的電平反向,當(dāng)外S1動作,P1.7端口的電平反向#includesbitLED0=P1^0;sbitLED7=P1^7;voidIS0(void)interrupt0//外部中斷0{LED0=~LED0;}voidIS1(void)interrupt2//外部中斷1{LED7=~LED7;}voidmain(){P1=0xFF;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;while(1);}修改:(1)S0控制P1.0—P1.3的燈,S1控
7、制P1.4—P1.7的燈。(2)按下S0后,點(diǎn)亮8只LED;按下S1后,變?yōu)殚W爍狀態(tài)?!纠?-4】P1口控制的燈按一定的頻率閃爍,S0動作,實(shí)現(xiàn)單燈左移,而左移3圈結(jié)束。【例4-5】首先通過P1.7口點(diǎn)亮發(fā)光二極管D1,然后外部輸入一脈沖串,則發(fā)光二極管D1亮、暗交替。#includesbitP1_7=P1^7;voidinterrupt0()interrupt0using2{P1_7=~P1_7;}voidmain(){EA=1;IT0=1;EX0=1;P1_7=0;do{}while
8、(1);}修改:如果有3個脈沖,則燈亮、暗交替一次,請編程。實(shí)驗(yàn)1按鈕型開關(guān)模擬外部中斷實(shí)驗(yàn)實(shí)驗(yàn)2外部中斷優(yōu)先級實(shí)驗(yàn)