标题: 关于定时器,if为什么是50,可是初始值是50ms啊,这样会是一秒吗? [打印本页]

作者: 董亚伟    时间: 2014-12-18 21:51
标题: 关于定时器,if为什么是50,可是初始值是50ms啊,这样会是一秒吗?
#include<reg52.h>

sbit LED = P2^0;
void main()
{
        unsigned char cnt = 0;


        TMOD = 0x01;
        TH0 = 0x3Cb2;
        TL0 = 0x00;
        TR0 = 1;

        while(1)
        {
                if(1 == TF0)
                {
                        TF0 = 0;
                        TH0 = 0x3Cb2;
                        TL0 = 0x00;
                        cnt++;
                        if(cnt>=50)
                        {
                                 cnt = 0;
                                 LED = ~LED;
                        }
                               
                }
        }
}



作者: 明白    时间: 2014-12-18 22:08
TMOD = 0x01;
        TH0 = 0x3C;
        TL0 = 0xb2;
        TR0 = 1;
作者: 忠信1314    时间: 2014-12-19 01:29
如果定时器50毫秒溢出一次  那就应该是这样 if(cnt==20)
  就是让定时器溢出20次  刚好1秒
作者: 忠信1314    时间: 2014-12-19 01:42
忠信1314 发表于 2014-12-19 01:29
如果定时器50毫秒溢出一次  那就应该是这样 if(cnt==20)
  就是让定时器溢出20次  刚好1秒

如果你的晶振是11.05926  那让定时器溢出18次就行了     另3CB2=15538   65536-15538=49998   
作者: 海哥沧海一笑    时间: 2014-12-19 22:45
而且需要开总中断和启动定时器,




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1