打印
[51单片机]

单片机的外部中断的电平触发,触发中断,为什么数码还能动?

[复制链接]
1527|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lantian510|  楼主 | 2013-9-15 17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序很简单就是P0口控制数码管从0到F,加了一个中断控制LED灯,这是一个电平触发
我想问的是当我用指拨开关使P3.2置低电平,那么这个程序应该只在中断程序运行数码管应该不会在改变,可实际上数码管却在缓慢从0到F变化,这是问什么???

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
void main()
{


   uchar i;
   uchar code temp[]={
                       0x3f,0x06,0x5b,0x4f,
                       0x66,0x6d,0x7d,0x07,
                       0x7f,0x6f,0x77,0x7c,
                       0x39,0x5e,0x79,0x71,
                        };  
    EA=1;
   EX0=1;
   IT0=0;                                                              
   wela=1;
   P0=0xf0;
   wela=0;
   for(i=0;i<16;i++)
   {
      d1=1;
      dula=1;
      P0=temp[i];
      dula=0;
      delay(82);
   }
}
void delay(uint a)
{
    uint x,y;
    for(x=500;x>0;x--)
      for(y=a;y>0;y--);
}
void exter0() interrupt 0
{
   d1=0;
}

相关帖子

沙发
cjseng| | 2013-9-15 17:36 | 只看该作者
中断退出后必须再执行一条指令才能再次中断。

使用特权

评论回复
板凳
李伟1991| | 2013-9-17 15:12 | 只看该作者
低电平的时候单片机的确是进入了中断,但是执行完中断之后会退出,你的P3.2一直是低电平。其实是有一次中断执行了。但是退出后就没有再次进入。原因是中断是一个负跳变,就是从高电平到底电平。但是你的P3.2一直是低电平,你觉得它会一直执行中断吗?肯定不会呀!

使用特权

评论回复
地板
yangfan19641964| | 2013-9-18 15:20 | 只看该作者
电平为0,进入中断。你在中断中又没有等待变为高电平再退出的语句,所以中断会正常退出。由于管脚一直为低电平,所以会紧接着再次进入中断。也就是说,会连续不断的进入中断。改成IT0=1设置为下降沿触发方式就没有你说的问题了。

使用特权

评论回复
5
林志财| | 2013-9-18 22:24 | 只看该作者
对外部中断理解错了,加个标志位就解决了

使用特权

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

本版积分规则

19

主题

42

帖子

1

粉丝