标题: 求助,为什么定时1ms,用cnt计数100次后led会以1s闪烁 [打印本页]

作者: liugc123    时间: 2020-1-25 08:43
标题: 求助,为什么定时1ms,用cnt计数100次后led会以1s闪烁
#include "reg52.h"

sbit led1 = P2^0;
unsigned int cnt = 0;

void Timer0Init();

void main()
{
        Timer0Init();
        while(1)
        {
               
        }
}


void Timer0Init()           //定时1ms,11.0592M
{
        TMOD = 0X01;
        TL0 = 0XCD;
        TH0 = 0XD4;
        TR0 = 1;
        TF0 = 0;
        ET0 = 1;
        EA = 1;
}


void Timer0() interrupt 1
{
        TL0 = 0XCD;
        TH0 = 0XD4;
        cnt++;
        if(cnt>=100)
        {
                cnt = 0;
                led1 = ~led1;
        }
}
作者: liugc123    时间: 2020-1-25 12:23
我知道了,我定时器T0配置错了,我把定时器时钟弄成了1T弄错了
作者: wulin    时间: 2020-1-25 14:09
楼主定时器设置错误,你这个TL0 = 0XCD;TH0 = 0XD4;接近10ms,11.0592MHz设置1ms:TL0 = 0x66;TH0 = 0xFC;
       
作者: csmyldl    时间: 2020-1-25 14:14
TL0 = 0X66; TH0 = 0XFC; 是12T的初值,TL0 = 0XCD; TH0 = 0XD4; 是1T的初值,程序中需用AUXR设置1T还是12T模式
作者: yzwzfyz    时间: 2020-1-26 21:02
定时器也就是一个加法计数器,每个CLK+1!
你要看看定时器的原理框图(书上定时器章节中找),看看CLK取自何处?它的频率是多少?一看就明白你错在哪里了。




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