Believe 发表于 2012-8-8 17:25:32

关于定时器

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int    uint;
sbit LED = P1^0;

void main()
{
      uint counter = 0;
      TMOD = 0x01;                     //用的定时器T0
      TH0 = 0xB8;                           //定时器定时20毫秒,后面把20毫秒循环50次,成为一秒
      TL0 = 0x00;
      TR0 = 1;
      while (1)
      {
            if (1 == TF0 )
            {
                  counter++;
                  TH0 = 0xB8;
                  TL0 = 0x00;
                  TF0 = 0;
            }
            if (50 == counter)
         {
                  LED = ~LED;
                  counter = 0;
         }
   }
}

这是让第一个小灯亮不停的亮1秒灭1秒的闪烁,当我把TMOD = 0x01改为0x10,TH0,TL0改为TH1,TL1,即用T1定时器的时候,就不是1秒了,成亮0.44秒灭0.44秒了,两个定时器难道不一样吗?

wǒ鈊銥舊 发表于 2012-8-8 17:25:33

下面的溢出TF0也要改成TF1吧。

Believe 发表于 2012-8-8 20:16:40

wǒ鈊銥舊 发表于 2012-8-8 20:09 static/image/common/back.gif
下面的溢出TF0也要改成TF1吧。

啊呀呀,对对对,所有寄存器带0的位都要改成1,TR,TF我忘改了,哎呀,真粗心……

乘风 发表于 2012-8-12 10:47:57

TF1和TF0操作完全一样......
页: [1]
查看完整版本: 关于定时器