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

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
1楼-- · 2019-07-18 16:41
具体原因没分析出来,先给你说一下你程序的其他问题:
中断设计的初衷是帮助CPU时间更好的调整以节约CPU在各种事件之间轮询的时间,使得各种事件能够及时得到处理,但你还在中断例程中两次使用语句延时函数,简直就是浪费

评分

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

查看全部评分

武力戡乱
2楼-- · 2019-07-18 22:34
不排除重载问题!这个是一大忌。晚上吧我找时间 看看。并且希望把你工程文件上传。
woodmice
3楼-- · 2019-07-18 22:49
调试下,delay 的汇编代码贴上来看下
武力戡乱
4楼-- · 2019-07-18 23:42
请把整个工程文件上传,最好在详细说明现象。
南山孤樵
5楼-- · 2019-07-19 02:01
 精彩回答 2  元偷偷看……
南山孤樵
6楼-- · 2019-07-19 02:51
武力戡乱 发表于 2014-11-18 09:23
不排除重载问题!这个是一大忌。晚上吧我找时间 看看。并且希望把你工程文件上传。 ...

谢谢你花时间来帮助我,其实我的程序就这么一点,我是一个正在自学的初学者,我发这篇帖子的目的就是想请你们帮我分析一下为什么在中函数中编入延时语句后在使用中断以后就不能回到主函数了?

一周热门 更多>