想让我的灯闪灭五次,关闭led一会(比如1s或者1min),再闪灭五次。
可是现在情况是先闪五次,然后灯应该亮的第一次灭的,然后亮四次,之后一直这么循环。。。关闭led那段程序不能启动
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^7;
sbit jum=P3^2;
uint x;
uchar n,num,m,a;
void init()
{
num=0;
led=0;
}
void time0() interrupt 1
{
uchar m=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++; //亮灭时间判断
a++; //亮灭之后,led灭几秒钟等待时控制
if(m==0) //led亮灭
{
if(num==10) //led亮灭时灭
{
led=1;
}
if(num==20) //led亮灭时亮
{
num=0;
led=0;
n++;
}
if(n==5) //亮五次之后关闭led
{
n=0;
led=1;
m=1;
}
}
}
void main()
{
init();
TMOD=0X11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(m==1) //关闭led一段时间
{
led=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==12000)
{
a=0;
m=0;
}
}
}
} |