最近做了一个项目,是用飞思卡尔的单片机MC9S12XEP100,这个单片机与之前用的很多单片机有许多不同的地方,为此笔者也被一些问题苦恼了很长时间,现在把这些经验和教训写下来供大家批评。
为叙述方便,以下的单片机都简称为HCS12
定时器的问题
为叙述方便,以下的单片机都简称为HCS12
定时器的问题
HCS12单片机有三种定时器,ECT(Enhanced Capture Timer),TIM(Standard Timer Module),PIT(Periodic Interrupt Timer)。
三种定时器的控制方式不一样。
1. ECT
static void ECT_Timer_Init(void)
{
ECT_TSCR1=0x90;//计数器使能TEN|快速清零TFFCA
ECT_TSCR2=0X85;//DIV 32->80ms 131
ECT_TCNT =0xcf2c; //
// ECT_PACTL=0X50; //PT7 PIN,PACN32 16BIT
ECT_TSCR1_TEN = 0;
}
ECT定时器的几个寄存器的定义可以查手册,上面的代码是基于主频16M写的,通过32分频,可以得到每个周期为80MS,通过设置TCNT寄存器可以设定从什么位置开始计时。
如上面代码设置了0XCF2C,那么定时的时间是(0xffff-0xcf2c)*(80/65536)=25ms.
ECT模块是一个功能非常强大的模块,可以计数,捕捉脉冲,也可以用定时中断。它的中断程序如下:
#pr