关于51单片机外部中断

2019-07-15 22:20发布

单片机外部0中断(电平方式)中断后数码管为什么不停止,只是走的比以前变慢了,求解答下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
亚伦王
2019-07-16 06:01
fantek 发表于 2013-9-28 11:26
是不是和数码管的驱动控制电路有关啊.

如果在最下面的中断函数里面加上delay(5);就可以。不知道为什么,求解释。





#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define DataPort P0 //定义段数据端口 程序中遇到DataPort 则用P0 替换
#define SegPort  P2 //定义位数据端口
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,
                                                                   0x66,0x6d,0x7d,0x07,
                                                                   0x7f,0x6f,0x77,0x7c,
                                                                   0x39,0x5e,0x79,0x71};
unsigned char code dofly_WeiMa[]={0,1,2,3,4,5,6,7};
//分别对应相应的数码管点亮,即位码
void Delay(unsigned int t); //函数声明
sbit led0 =P1^0;
void main()
{   
    char j=0;
        EA=1;
        EX0=1;
        while(1)
      {               
           led0=1;
                   SegPort=dofly_WeiMa[0]; //取位码
                   for(j=0;j<16;j++)
                                {       
                                        DataPort=dofly_DuanMa[j]; //取显示数据,段码
                                        Delay(1000); //扫描间隙延时,时间太长会闪烁,太短会造成重影       
                                }
           }
}
void Delay(unsigned int t)
{  
    int i,k;
    for (i=t;i>0;i--)
            for(k=110;k>0;k--);
}
void intoLL()interrupt 0
        {
           led0=0;
          //Delay(5);
          

        }       

一周热门 更多>