STC单片机的定时器怎么计算

公式:N=65536-(Fosc/FD/(Freq));

      N      : 定时器16位计数器

      Fosc: 晶振频率,系统频率

      FD    : 分频  (Frequency division),通过分频可增大计数器的定时范围。

      Freq : 频率  (Freq=1(秒)/TIME(秒),TIME:所定时间)

例:22.1184MHZ晶振,T0作为定时器,定时每5ms进一次定时器,那么换算一下1/(5/1000)=200频率就是200HZ。

代码:

#define FOSC 22118400L          //系统频率
#define T0_TIM (65536-(Fosc/1/200))
sfr AUXR = 0x8e;                    //Auxiliary register

void tm0_init()                     //定时器0初始化函数
{
    AUXR |= 0x80;                   //定时器0为1T分频模式
//  AUXR &= 0x7f;                   //定时器0为12T分频模式

    TMOD = 0x01;                    //设置定时器为模式0(16位手动重装载)
    TL0 = T0_TIM%256;  //装载低8位计时值
    TH0 = T0_TIM/256;  //装载高8位
    TR0 = 1;                        //定时器0开始计时
    ET0 = 1;                        //使能定时器0中断
    EA = 1;
}

void tm0_isr() interrupt 1 using 1
{
   //定时器到执行这里


    TL0 = T0_TIM%256;//装载计时值
    TH0 = T0_TIM/256;
}

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值