定时器0和1会不会冲突了,定时器1的时间变得很快

2019-07-15 17:46发布

我在写一个室温调控的程序同时用到了定时器0和1。定时器1用的是工作方式1,定时器0用的是工作方式2,(初始化不启动定时器1,在程序后边在启动定时器1,         ET1=1;TR1=1;)。可是定时器1,溢出时间变快了 ,好像是        TMOD=0x10;        TMOD=0x02;冲突了?怎么回事啊?我把TMOD=0x10;删了,结果还是不变。
实在弄不明白了 请大神指教。
        EA=1;
        TMOD=0x10;//定时器T1初始化
        TH1=0x3c;
        TL1=0xb0;

        TMOD=0x02;
        TH0=0x00;        //定时器T0初始化
        TL0=0x00;
        ET0=1;
        TR0=1;
室温调控.zip 下载积分: 积分 -1 分
70.24 KB, 下载次数: 24, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
joinking
2019-07-16 23:49
本帖最后由 joinking 于 2015-3-5 14:26 编辑
  1. TMOD |= 0x20;//定时器T1初始化
  2.         TH1=0x06;
  3.         TL1=0x06;
  4.         EA=1;

  5.         TMOD |= 0x02;
  6.         TH0=0x00;        //定时器T0初始化
  7.         TL0=0x00;
  8.         ET0=1;
  9.         TR0=1;
  10. 。。。。。。。。。


  11. void dsq_t1() interrupt 3
  12. {      
  13.         us_250++;
  14.         if(us_250==4000)
  15.         {
  16.                 us_250=0;
  17.                 miao++;        
  18.                 if(miao==60)
  19.                 {
  20.                         miao=0;
  21.                         fen++;
  22.                 }
  23.         }
  24. }
复制代码

主要是你的定时器1的工作方式你以为是你写的TMOD = 0X20工作方式2,其实在下面定时0那里TMOD=0x02你就把定时器1的工作方式改变了,TMOD第5位和第6位的值变成了0,定时器1的工作方式就被你改变为工作方式0,13位定时器了

一周热门 更多>