标题: 51单片机定时器怎么定100微秒 [打印本页]

作者: 最高权限    时间: 2020-3-7 20:01
标题: 51单片机定时器怎么定100微秒
51单片机,晶振是11.0592,如何隔100毫秒跳一次
作者: csmyldl    时间: 2020-3-8 00:09
用定时计数器
void Timer0Init(void)                //100微秒@11.0592MHz
{
        TMOD = 0x10;                //设置定时器1模式1
        TL1 = 0xA4;                //设置定时初值
        TH1 = 0xFF;                //设置定时初值
        TF1 = 0;                //清除TF0标志
        TR1 = 1;                //定时器0开始计时
}
检查TF1为1时就是100us
作者: wulin    时间: 2020-3-8 06:52
#include <reg51.h>

unsigned int i;

void InitTimer0(void)        //100微秒@11.0592MHz
{
        TMOD= 0x02;                        //设置定时器自动重载模式
        TL0 = 0xA4;                        //设置定时初值
        TH0 = 0xA4;                        //设置定时重载值
        TR0 = 1;                        //定时器0开始计时
    EA = 1;                                //开总中断
    ET0 = 1;                        //开定时器0中断
}

void main(void)
{
        i=0;
        j=0;
    InitTimer0();
        while(1);
}

void Timer0Interrupt(void) interrupt 1
{
        i++;       //100um
        if(i==1000)//100ms
        {
                i=0;
                P1=~P1;//100毫秒翻转一次
        }
}

作者: suuy79    时间: 2020-3-8 20:22
如果用51定时器,要想在11.0592MHz的频率下产生0.1S的时间,据我所知,目前好像不能实现。
当然,如果将晶振频率降到6MHz是可以通过定时器一步实现的。
如果只是希望0.1S执行一次某的代码,那办法就比较多了,软件定时,定时器计数等方法都可以完成。
作者: 我叫小大打    时间: 2020-3-10 10:55
stc烧录软件可以调用定时器、延时器程序的


void InitTimer0(void)        //100微秒@11.0592MHz
{
        TMOD= 0x02;                        //设置定时器自动重载模式
        TL0 = 0xA4;                        //设置定时初值
        TH0 = 0xA4;                        //设置定时重载值
        TR0 = 1;                        //定时器0开始计时
    EA = 1;                                //开总中断
    ET0 = 1;                        //开定时器0中断
}




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