为什么gnd和P3.2连接就会停止程序

2019-07-16 01:52发布

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dx=P2^6;
sbit wx=P2^7;
sbit d1=P1^0;                //定义小灯
uchar aa;
uchar code numtable[]={ 0x3f,0x06,0x5b,0x4f,
                                                0x66,0x6d,0x7d,0x07,
                                                0x7f,0x6f,0x77,0x7c,
                                                0x39,0x5e,0x79,0x71};
void delayms(uint);
void main()
{       
        EA=1;                        //开总中断
        EX0=1;                        //开外部中断0
        while(1)
                {
                if (aa==16)       
                        aa=0;        //当加到16时,从新加
                wx=1;                //开位选
                P0=0xea;        //开135位
                wx=0;                //关位选
       
                dx=1;                //开段选
                P0=numtable[aa];    //0~F
                dx=0;                //关段选
                aa++;               
                delayms(500);
                d1=1;
                }
        }
void delayms(uint z)
{
        uint i,j;
        for (i=z;i>0;i--)
                for(j=114;j>0;j--);
}
void exter0() interrupt 0
{
        d1=0;        // 灯亮
}


而且当P3.2和gnd接通时,只是变化的速度变慢而已,  程序没有真正停下!  为什么!!?  求解!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
使得此啊
1楼-- · 2019-07-16 03:35
 精彩回答 2  元偷偷看……
a583488081
2楼-- · 2019-07-16 06:45
你没有选定是哪种的中断模式啊
有低电平触发。。下降沿触发。两种
a583488081
3楼-- · 2019-07-16 12:37
a583488081 发表于 2013-3-26 09:36
你没有选定是哪种的中断模式啊
有低电平触发。。下降沿触发。两种

你这个实验的具体情况是什么的。。包括数码管的
a583488081
4楼-- · 2019-07-16 17:27
因为当你选用低电平触发是 必须保证低电平时间是2个系统周期才会被识别。。因此 。。。当你把那个接到gnd时。。。读到低电平和下一次在采集到低电平的时间是两个系统中期。。在此期间又跳到主函数中。。所以你才会看到那种现象
a583488081
5楼-- · 2019-07-16 18:04
嗯。。我补充下。。如果你中断函数里面程序运行的时间大于两系统周期。。。那就不会跳回主函数

一周热门 更多>