12M晶振
变量定义略
void main(void)
{
TMOD=0x01;//设置定时器0为工作方式1
TH0=0xec; //装初值50ms一次中断
TL0=0x78;
ET0=1;//开定时器0中断
EA=1; //打开总中断
while(1)
{
if(set==1) //如果没set按钮按下,打开主motor,压力motor
{
delay1ms(10);
if(set==1)
delay1ms(10);
t3=0;
if(Bdelay2s==1) //定时2S,开主motor
{
mainmotor=cMotoron;
}
t2=0;
if(Bdelay10s==1) //再定时10S,开压力motor
{
downmotor=cMotoron;
}
if(upsensor==0) //如果顶部sensor到位,关提升motor,开左移motor 开5S时间
{
delay1ms(10); //延时去抖
if(upsensor==0) //判断是不是真的顶部sensor
{
leftmotor=cMotoron;
}
t1=0; //清除变量
if(Bdelay5s==1) 左移motor 开5S时间到关
{
leftmotor=cMotoroff;
}
}
}
}
//*****************************中断定时子函数********************************//
void T0_time(void) interrupt 1
{
TH0=0xec;
TL0=0x78;
t1++;
t2++;
t3++;
if(t1==100) //定时5s
{
t1=0;
Bdelay5s=1;
}
if(t2==200) //定时10s
{
t2=0;
Bdelay10s=1;
}
if(t3==40) //定时2s
{
t3=0;
Bdelay2s=1;
}
} |