通过TIM输出比较做一个定时器

本文详细介绍了如何利用MC9S12XS128单片机的TIM模块,通过设置TIM寄存器如TIOS、OC7M、OC7D、TCNT等实现输出比较定时器。讲解了各个寄存器的功能,如TIOS用于指定通道为输入捕捉或输出比较,OC7M控制其他通道状态,TCNT为递增计数器。并通过举例展示了如何计算时钟周期和输出比较时间,以实现特定时长的定时任务。
摘要由CSDN通过智能技术生成

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寄存器

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值