打印

单片机中断问题。

[复制链接]
1214|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ji7411|  楼主 | 2012-3-5 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问,那个执行中断的时候是不是主程序就会停止呀??
但是我的程序烧进去之后为什么主程序没有停止而且还变慢了(主程序是流水灯)
求解!!
代码如下
#include<reg52.h>
#include <intrins.h>                //注意使用_crol_函数时包含的头文件
#define uint unsigned int        //宏定义,注意:宏名在前
#define uchar unsigned char
uchar temp;                //定义一个全局变量
sbit d1=P1^0;      //位定义
void delay(uint);        //延时子函数申明

void main()
{
        EA=1;//开总中断
        EX0=1;//开外部中断0
        //IT0=1;
        //TCON=0x01;
        temp=0xfe;                //改变0xfe的值能改变参加流水灯的二极管的个数
        P1=temp;                //如果把这一句解释掉流水灯就会从第二个开始
        while(1)
        {
        temp=_crol_(temp,1);        //注意_crol_函数的使用
        delay(2000);
        P1=temp;
        }
}


void delay(uint z)        //定义一个延时的子程序,带参数
{
uint x,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}


void exter0() interrupt 0                //中断服务程序
{
d1=0;
}

相关帖子

沙发
lost1421| | 2012-3-5 13:42 | 只看该作者
是不是程序不停的进中断导致主程序没有时间运行?

使用特权

评论回复
板凳
原野之狼| | 2012-3-5 13:44 | 只看该作者
中断本来就是这样子工作的

使用特权

评论回复
地板
yewuyi| | 2012-3-5 14:33 | 只看该作者
对于单核的MCU来说,在微观上看来,自然是执行这条指令的时候,其它指令就不能执行。

使用特权

评论回复
5
NE5532| | 2012-3-5 17:23 | 只看该作者
楼上是说的都是对的,提醒你,检查是边沿中断还是电平中断?中断标志需要程序清除不?稍微变慢是可能的,如果你都能感觉到,可能是一直在中断里反复进出。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

609

帖子

0

粉丝