STC89C52中斷系統(tǒng)
80C51的中斷系統(tǒng)有5個(gè)中斷源(80C52有6個(gè)),2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套。
根據(jù)它的原理圖就可以看出,80C51一共有4個(gè)寄存器(TCON,SCON,IE,IP),附件有她們的詳細(xì)的寄存器示例圖。
如果想產(chǎn)生一個(gè)中斷請(qǐng)求,首先要做的就是打開IE里的EA標(biāo)志位,因?yàn)镮E寄存器的地址是0xA8,所以可以對(duì)其位進(jìn)行操作。而EA標(biāo)志位是整個(gè)中斷系統(tǒng)的總開關(guān),這一步必不可少。接著還要將你要產(chǎn)生的中斷號(hào)對(duì)位的IE中的相應(yīng)位置高電平,包括EX0(0號(hào)外部中斷),ET0(0號(hào)定時(shí)器中斷),EX1(1號(hào)外部中斷),ET1(1號(hào)定時(shí)器中斷),ES(串口中斷);上面的就是IE中的一些特殊位。下一步就是要指定是電平觸發(fā)還是脈沖觸發(fā)了,此步是要操作TCON寄存器,將IT0置1表示脈沖觸發(fā),置0表示是電平觸發(fā),此處操作是0號(hào)外部中斷的一些基本設(shè)置,其它中斷設(shè)置參照原理圖便可得,此處不再重復(fù)。
接下來(lái)就可以拿出板子進(jìn)行試驗(yàn)了,注意因?yàn)槭请娖接|發(fā),所以要將P32引腳接地,也就是變?yōu)榈碗娖郊纯桑瑏?lái)產(chǎn)生一個(gè)中斷請(qǐng)求。下面附上我的一個(gè)示例程序, 產(chǎn)生的效果是:蜂鳴器將不間斷的發(fā)出響聲,注:程序?yàn)槭謱?,沒(méi)調(diào)試過(guò),不能保證一定能調(diào)通
#includesbitbeep=P3^2;inti,j;voiddelay(unsignedchar);//聲明延遲函數(shù)voidmain(){EA=1;//打開中斷系統(tǒng)總開關(guān)EX0=1;//產(chǎn)生0號(hào)外部中斷IT0=0;//采用電平觸發(fā)方式觸發(fā)while(1){beep=0;delay(100);//延遲函數(shù)interupt();//調(diào)用中斷函數(shù)}}//延遲函數(shù)voiddelay(unsignedchart){for(i=0;i<50000;i++)for(j=0;j