一个关于中断嵌套的疑问,求解答~~
时间:10-02
整理:3721RD
点击:
如下,我写的一段程序,当我在执行int1这个高优先级中断的时候,为什么我点了int0的电平开关,但是执行完高优先级中断后,直接跳回主程序而不是执行完低优先级中断再返回主程序呢?我试过修改IT0跟IT1这两个的值,发现只有当IT0=1时才会执行完低优先级在返回,这是为什么?求解答,谢谢#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint num,k;
uchar code table[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delayms(uint);
void main()
{
uchar aa=0x00,bb=0xff;
EA=1;
EX0=1;
EX1=1;
PX0=0;
PX1=1;
IT0=0;
IT1=0;
while(1)
{
num=0;
k=0;
P1=aa;
delayms(500);
P1=bb;
delayms(500);
}
}
void INT_1() interrupt 2
{
for(k=0;k<16;k++)
{
P1=table[k];
delayms(500);
}
}
void INT_0() interrupt 0
{
uchar dd=0xfe;
for(num=0;num<8;num++)
{
P1=dd;
delayms(500);
dd=_crol_(dd,1);
delayms(500);
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}这个是电路图
为啥呢?坐等解释
好像我也遇到过类似情况,我当时以为是仿真软件的问题,看了需要高手指点一下
怎么也没有高手详细解答一下啊?期待中