为什么在主函中有延时情况下使用中断后就不能回到主函

2019-07-18 12:34发布

本帖最后由 南山孤樵 于 2014-11-19 17:29 编辑

我是一个初学者对protesu不是很了解,在编写有关中断的程序时发现要是主函数中有延时在使用中断后就不能回到主函数了,而要是主函数中没有延时使用中断后就能够回到主函数这是怎么回事啊  求大神指导。程序如下:
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
void delay (t)
{
        while (t--)
        {
                uint i;
                {
                        for (i=0;i<=250;i++);
                }
        }
}
void main ()
{
        P2=0xfe;
        EA=1;
        EX1=1;
        IT1=1;
        /*ET0=1;
        ET1=1;*/
        while (1)
        {        
                delay (100);
                P2=_crol_(P2,1);
        }
}
void int1() interrupt 0
{
        EX0=0;
        P2=0x0f;
        delay (100);
        P2=0xf0;
        delay (100);
        EX0=1;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
woodmice
2019-07-18 16:41
具体原因没分析出来,先给你说一下你程序的其他问题:
中断设计的初衷是帮助CPU时间更好的调整以节约CPU在各种事件之间轮询的时间,使得各种事件能够及时得到处理,但你还在中断例程中两次使用语句延时函数,简直就是浪费

评分

参与人数 1威望 +1 +1 积分 +1 收起 理由 1563661808 + 1 + 1 + 1 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

一周热门 更多>