关于51单片机外部中断

2019-07-15 22:20发布

单片机外部0中断(电平方式)中断后数码管为什么不停止,只是走的比以前变慢了,求解答下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
fantek
1楼-- · 2019-07-16 01:52
是不是和数码管的驱动控制电路有关啊.
亚伦王
2楼-- · 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);
          

        }       

fantek
3楼-- · 2019-07-16 09:02
如果用74LS164作显示驱动,要提供稳定的时钟.否则,显示会异常.中断服务程序处理时间应匹配数码管刷新时间.
亚伦王
4楼-- · 2019-07-16 14:27
 精彩回答 2  元偷偷看……
fantek
5楼-- · 2019-07-16 14:37
本帖最后由 fantek 于 2013-9-28 15:59 编辑

中断服务程序可以加一段类似按健消抖的程序,DELAY(5)就起这个作用,应该再判断中断引脚的信号是否为高电平或低电平.用示波器看一下中断信号是否不太好啊,是用按键作中断源吗?按键按下时,是有抖动的,所以显示不停止,造成多次中断,就是你说的不停止的现象.P37脚控制573的11脚C锁存使能输入,程序中没有用到啊.138的E3脚有接到单片上吗?DELAY(1000)可根据人眼视觉特点计算.主要还是程序的问题.
亚伦王
6楼-- · 2019-07-16 18:58
fantek 发表于 2013-9-28 12:49
中断服务程序可以加一段类似按健消抖的程序,DELAY(5)就起这个作用,应该再判断中断引脚的信号是否为高电平或 ...

是用杜邦线连的,我开发板上74hc573用跳冒直接接的vcc,138的那个接的vcc,不过刚又试了下,有不对了,加上delay(5)耶不成功了,明明上午还可以的啊,数码管一直再走,也不变慢了,改用下降沿触发灯耶不闪了,呜呜呜呜呜呜

一周热门 更多>