#include <reg52.h>
#define led P1
#define uchar unsigned char
#define uint unsigned int
sbit key=P3^2;
sbit num=P3^3;
sbit ent=P3^4;
uint n=0;
void time (int a)
{
for(;a>0;a--);
}
void main ()
EA=1;
IT0=0;
IT1=0;
EX0=1;
EX1=1;
while(ent==0)
led=0x00;
time(30000);
led=0xff;
void plus () interrupt 2
if(num==0)
time(5);
while(num==0)
break;
n=n+1;
void fla () interrupt 0
while(n>0)
n=n-1;
while(n==0)
请在main函数的最后一行,加个while(1);
从您的程序上看,如果ent不为0,退出循环,P1口全置高,灯灭掉。然后呢?
单片机的程序最后,如果没有一个死循环的话,程序计数器继续下移,后面的代码是未知的。
通常的结果就是复位,从头再为一遍。就是您观察到的现象,一直闪。
附带说下,只是现象相当于复位,比正常的复位不靠谱,细节没研究过。
所以,最后加个死循环就能正常。