本文主要是介绍CH549/CH548学习笔记4 - Timer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1. 时钟频率选择
2. 初始化
3. 中断
CH549/CH548和标准52内核一样,拥有T0,T1和T2三个定时器。
1. 时钟频率选择
默认的情况下,时钟频率为Fsys / 12,然后通过T2MOD配置时钟频率。
最快的时钟频率是Fsys,即bTMR_CLK = 1,bTn_CLK = 1(n = 0, 1, 2)。最慢的就是默认的时钟配置。对于48M应用,最慢的一般也够用了。
2. 初始化
以T0为例:
void timerInit(uint8_t ms)
{TMOD &= 0xF0;TMOD |= 0x01; //set timer0 as mode1 (16-bit)gTimerMS = (uint16_t)(65536 - FOSC / 12 / (1000 / ms));TL0 = gTimerMS; //initial timer0 low byteTH0 = gTimerMS >> 8; //initial timer0 high byteTR0 = 1; //timer0 start runningET0 = 1; //enable timer0 interruptEA = 1; //open global interrupt switch
}
TMOD的低4位配置T0,TL0和TH0设置计数时间。这里采用默认的12分频计数。
3. 中断
3个定时器的中断编号分别为1,3,5。以T0为例:
void timer0Isr() interrupt 1
{TL0 = gTimerMS; //reload timer0 low byteTH0 = gTimerMS >> 8; //reload timer0 high byte//Timer handle}
定时器中断中需要把TL0和TH0重新初始化以启动下次中断。
这篇关于CH549/CH548学习笔记4 - Timer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!