本文为转载文章!
在迷离与定时器计数加1对应时间的时候,看到这篇好文章,转载已方便日后查阅!感谢作者!!!
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/heiheiwocao/article/details/77506166
公式:N=65536-(Fosc/FD/(Freq));
N : 定时器16位计数器
Fosc: 晶振频率,系统频率
FD : 分频(Frequency division),通过分频可增大计数器的定时范围
Freq : 频率(Freq=1000000(微秒)/TIME(微秒),TIME:所定时间)
例:22.1184HZ晶振,T0作为定时器,定时每5ms进一次定时器,那么换算一下频率就是200HZ。
代码:
-
#define FOSC 22118400L //系统频率
-
#define T0_TIM (65536-(Fosc/1/200))
-
void tm0_init() //定时器0初始化函数
-
{
-
AUXR |=
0x80;
//定时器0为1T模式
-
// AUXR &= 0x7f; //定时器0为12T模式
-
-
TMOD =
0x00;
//设置定时器为模式0(16位自动重装载)
-
TL0 = T0_TIM%
256;
//初始化计时值
-
TH0 = T0_TIM/
256;
-
TR0 =
1;
//定时器0开始计时
-
ET0 =
1;
//使能定时器0中断
-
EA =
1;
-
}
-
void tm0_isr() interrupt 1 using 1
-
{
-
//定时器到执行这里
-
}