標(biāo)題:
單片機(jī)兩外部中斷嵌套,執(zhí)行優(yōu)先級(jí)怎么設(shè)置?求代碼解讀或提示
[打印本頁]
作者:
幻想
時(shí)間:
2017-11-26 17:44
標(biāo)題:
單片機(jī)兩外部中斷嵌套,執(zhí)行優(yōu)先級(jí)怎么設(shè)置?求代碼解讀或提示
51單片機(jī)兩外部中斷嵌套,執(zhí)行優(yōu)先級(jí)怎么設(shè)置?自己的設(shè)置沒用,求代碼解讀,或提示點(diǎn)。謝謝!
作者:
zl2168
時(shí)間:
2017-11-26 19:19
先學(xué)理論,打基礎(chǔ),否則,問題多多,事倍功半。
作者:
HC6800-ES-V2.0
時(shí)間:
2017-11-27 09:19
我有一個(gè)程序,是有關(guān)這個(gè)內(nèi)容的,你看看。
//#include <STC89.H>
#include<reg52.h>
#include"LY.h"//延時(shí)函數(shù)頭文件
#include<intrins.h>
#define GPIO_LED P2
#define GPIO_DIG P0
sbit k1=P3^1;
sbit k2=P3^0;
sbit Beep = P1^5 ;
void IntConfiguration();//中斷設(shè)置子函數(shù)
void delay(unsigned int i) ;
unsigned char code DIG_CODE[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char p;
void main(void)
{
unsigned char n;
unsigned char m;
IntConfiguration();
p=0xff;
GPIO_LED=p;
while(1)
{
if(k1==0)//獨(dú)立按鍵k1
{
Delay10ms(1);
if(k1==0)
{
if(p==0xff)
{
p=0x00;
GPIO_LED=p;
}
else
{
p=0xff;
GPIO_LED=p;
}
while((m<50)&&(k1==0))
{
Delay10ms(1);
m++;
}
m=0;
}
}
if(k2==0)//獨(dú)立按鍵k2
{
Delay10ms(1);
if(k2==0)
{
if(p<0x80)
{
p=0x7f;
GPIO_LED=p;
Delay10ms(50);
for(n=0;n<7;n++)
{
p=_cror_(p,1);
GPIO_LED=p;
Delay10ms(50);
}
}
else
{
p=0xfe;
GPIO_LED=p;
Delay10ms(50);
for(n=0;n<7;n++)
{
p=_crol_(p,1);
GPIO_LED=p;
Delay10ms(50);
}
}
while((m<50)&&(k2==0))
{
Delay10ms(1);
m++;
}
m=0;
}
}
}
}
void delay(unsigned int i)//延時(shí)19.3us,主要用于發(fā)聲音
{
unsigned char j;
for(i; i > 0; i--)
for(j = 100; j > 0; j--);
}
void IntConfiguration()//中斷設(shè)置子函數(shù)
{
IT0=1;
EX0=1;
PX0=0;//低優(yōu)先級(jí)
IT1=1;
EX1=1;
PX1=1;//高優(yōu)先級(jí)
EA=1;
}
void Int0(void) interrupt 0//外部中斷0的中斷服務(wù)函數(shù)
{
unsigned int n;
n=0;
while(n<1500)
{
Beep= 1;
delay(5);
Beep= 0;
delay(5);
n++;
}
IE0=0;
}
void Int1(void) interrupt 2//外部中斷1的中斷服務(wù)函數(shù)
{
unsigned char x,i,j;
p=GPIO_LED;//保存原來的P2口值
x=25;//延時(shí)時(shí)間長短
i=0; //循環(huán)次數(shù)
j=0xe3;//點(diǎn)亮數(shù)碼管的最右位
while (i<16)
{
GPIO_LED=j;
GPIO_DIG=DIG_CODE[i];
Delay10ms(x);
if (j==0xff)
{
j=0xdf;
}
j=j+0x04;
i=i+1;
}
GPIO_DIG=0x00;
GPIO_LED=p;
IE1=0;
}
執(zhí)行效果是:
按k3(外部中斷0)響蜂鳴器,按k4(外部中斷1),顯示數(shù)碼管。
按k3后,蜂鳴器響,馬上按K4,會(huì)立即去顯示數(shù)碼管,顯示完畢,再回來繼續(xù)響蜂鳴器,說明外部中斷1優(yōu)先級(jí)高,可以打斷外部中斷0的程序。按k4顯示數(shù)碼管,再按k3,沒有反應(yīng),等顯示完畢,才響蜂鳴器,也說明外部中斷1優(yōu)先級(jí)高,不會(huì)被低優(yōu)先級(jí)的外部中斷0打斷程序。
作者:
a877997891
時(shí)間:
2017-11-27 10:54
厲害了 樓主
作者:
幻想
時(shí)間:
2017-12-2 09:11
謝謝了!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1