大家来看看我这个自己理解的中断嵌套程序

2019-07-15 23:19发布

//////主函数,让led灯依次闪烁/////
/////外部中断1打断主函数,执行数码管动态扫描////
/////又一个外部中断嵌套,让led亮/////

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar code du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar temp=0xfe;

void delay50ms(uint i)
{
        uint j;
        for(;i>0;i--)
        for(j=6245;j>0;j--);
}

void inter1()
{
        EX1=1;
        EA=1;
        IT0=0;
}

void main()
{
        inter1();
        while(1)
        {
                P2=temp;
                delay50ms(20);
                temp=_crol_(temp,1);
        }
}

void INT() interrupt 2
{
        uchar i;
        for(i=0;i<8;i++)                    //////////为什么体现不了实时性,得数码管走到尽头才能触发中断??    应该怎么改???
        {
        P1=we;
        P0=du;
        delay50ms(20);
        }
        EX0=1;
        IT0=0;
}
void INTR() interrupt 0
{
        P2=0x00;
}

我自己理解的中断嵌套是把更高级的外部中断0的开关放在外部中断1的函数体内!!不知,这样理解是否正确??
大家看看我这个程序,为什么体现不了实时性,进行二级嵌套时,必须要数码管走到7才能触发更高级的中断,为什么不能就停在那里,触发中断

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。