为什么不能实现定时呢。12M晶振

[复制链接]
831|5
手机看帖
扫描二维码
随时随地手机跟帖
wangzsa|  楼主 | 2018-8-13 11:25 | 显示全部楼层 |阅读模式

变量定义略
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;
    }
}
zhuww| | 2018-8-13 14:30 | 显示全部楼层

TR0 = 1;

使用特权

评论回复
zhanglli| | 2018-8-13 14:33 | 显示全部楼层

TH0=0xec;      //装初值50ms一次中断,12M晶振,
TL0=0x78;
//========================
你是怎么定时的?
TH0=0x3C      //装初值50ms一次中断,12M晶振,
TL0=0xB0;
再加上TR0=1。

使用特权

评论回复
lium| | 2018-8-13 14:36 | 显示全部楼层

初始化不对

使用特权

评论回复
hanwe| | 2018-8-13 14:39 | 显示全部楼层

楼上几位说的都挺全了,不知道LZ问题解决了没?

使用特权

评论回复
wangzsa|  楼主 | 2018-8-13 14:41 | 显示全部楼层
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

粉丝