[疑难问答] 不能实现定时

[复制链接]
 楼主| 发表于 2016-3-23 23:05 | 显示全部楼层 |阅读模式
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;
  }
}
发表于 2016-3-25 21:26 | 显示全部楼层
楼主用的哪个芯片,初始值重装后用不用再次打开定时器中断呢
发表于 2016-3-25 21:14 | 显示全部楼层
能设断点吗,看看哪里出错了,估计是寄存器没配置对
发表于 2016-3-23 23:32 | 显示全部楼层
初始化不对吧
发表于 2016-3-23 23:24 | 显示全部楼层
看看 ,楼上几位说的都挺全了,不知道LZ问题解决了没?
发表于 2016-3-23 23:14 | 显示全部楼层
看看,好像是初始化不对吧
发表于 2016-3-23 23:13 | 显示全部楼层
你是怎么定时的?
TH0=0x3C      //装初值50ms一次中断,12M晶振,
TL0=0xB0;
再加上TR0=1。
发表于 2016-3-23 23:07 | 显示全部楼层
TH0=0xec;      //装初值50ms一次中断,12M晶振,
TL0=0x78;
 楼主| 发表于 2016-3-23 23:06 | 显示全部楼层
12兆的晶振。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

1811

帖子

1

粉丝
快速回复 返回顶部 返回列表