| 
 
| 为什么不能实现定时呢。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;
 }
 }
 | 
 |