标题: 单片机定时器程序的问题 [打印本页]

作者: adsafs    时间: 2020-8-26 16:39
标题: 单片机定时器程序的问题
11.0592M晶振,我设置的时间是1ms',但每次刷新到TF0=0用时都是71ms,求大佬帮忙解答

#include<reg52.h>

sbit led=P2^0;

int main(void)
{
                unsigned int i;
                led=0;
                TMOD=0X01;
                TH0=0XFC;
                TL0=0X67;
                TR0=1;
                while(1)
                {
                        if(TF0==1)
                        {
                                TF0=0;
                                T0=0XFC67;
                                i++;
                                if(i>=1000)
                                        {
                                                led=~led;
                                                i=0;
                                        }
                        }
                }
}
作者: xianfajushi    时间: 2020-8-26 19:48
中断函数重新赋值
作者: wulin    时间: 2020-8-26 21:11
本帖最后由 wulin 于 2020-8-27 20:18 编辑

#include<reg52.h>

sbit led=P2^0;

int main(void)
{
        unsigned int i;
        led=0;
        TMOD=0X01;
        TH0=0XFC;
        TL0=0X67;
        TR0=1;
        while(1)
        {
                if(TF0==1)
                {
                        TF0=0;
                        TH0=0XFC;
                        TL0=0X67;
                        i++;
                        if(i>=1000)
                        {
                                led=~led;
                                i=0;
                        }
                }
        }
}

作者: 塞北江南    时间: 2020-8-27 11:16
51定时器有8位与16位的,8位他最大定时是256,可以写成T0=0x00-0xff;16位最大定时是65536,由于其每个寄存器是8位的,所以将其折分成了高8位与低8位,因此你那个0XFC67,要折分成高8位TH0=0XFC;低8位TL0=0X67;最好你将视频再好好好看看,啥都明白了




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