TIM是定时器模块的简称。TIM的核心是一个16位的自由定时器(TCNT)。有8个完整的16位的捕捉/比较(IC/OC)通道。 模块运行时,16位的自由定时器按照设定的时钟频率在0x0000~0xFFFF之间循环计时。
本例通过MC9S12XS128的TIM模块的输出比较做一个简单的定时器。
以下为本例所用到的寄存器的介绍:
TIOS寄存器
TIOS 寄存器用于指定各个通道的功能,即工作于 IC还是 OC方式
当 IOSn=0 时,对应的通道 n 为输入捕捉(1C)通道
当 IOSn=1 时,通道 n为输出比较(OC)通道
OC7M寄存器
OC7 具有特殊地位,它匹配时可以直接改变其他 7 个输出引脚的状态,并覆盖各个引脚原来的匹配动作结果,寄存器 OC7M 决定哪些通道将处于 OC7 的管理之下。 OC7M 中的各位与 PORTT 口寄存器的各位一一对应。当通过TIOS 将某个通道设定为输出比较时,将 OC7M 中的相应位置 1,对应的引脚就是输出状态,与 DDR 中的对应位的状态无关。但 OC7Mn 并不改变DDR相应位的状态。 OC7M 具有更高的优先级,它优于通过 TCTL1 和 TCTL2 寄存器中的 OMn和 OLn 设定的引脚动作,若 OC7M 中某个位置 1,就会阻止相应引脚上由 OM和 OL设定的动作。
OC7D寄存器
OC7M 对于其他 OC输出引脚的管理限于将某个二进制值送到对应引脚, 这个值保存在寄存器OC7D中的对应位中。当 OC7 匹配成功后, 若某个OC7Mn=1,则内部逻辑将OC7Dn 送到对应引脚
OC7D中的各位与PORTT口寄存器的各位一一对应。 当通道7比较成功时,如果 OC7M 中的某个位为 1, OC7D中的对应位将被输出到 PORTT的对应引脚
当 OC7M 中的某个位为 1 时,通道 7 匹配成功的动作如果与通道 6-0 的动作发生在同一个周期,前者将覆盖后者。因此各个通道的动作将依赖于 OC7D中各个位的设置
TCNT寄存器
TCNT是递增计数器,它不停地对内部时钟信号计数、程序可随时读取,但在普通模式下禁止写入。TCNT应按字访问,分别访问高、低字节可能得到错误的结果
TSCR1寄存器