Freescale单片机原理与设计-TPM模块应用编程-实验解释.docVIP

Freescale单片机原理与设计-TPM模块应用编程-实验解释.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华中科技大学 实验报告 班级: 姓名:学号 实验项目 TPM编程应用 【实验目的】 1、理解HCS08的定时器/PWM模块TPM(Timer/Pulse-Width Modulator)模块原理 2、学会TPM模块设计 3、进一步认识“对MCU外部管脚/内部模块的控制正是通过Regs的控制来实现” 【实验原理】 MC9S08AW60系列中的定时器系统包括两个独立的TPM:一个6通道的TPM1和一个2通道的TPM2。TPM模块管脚和I/O管脚复用。定时器系统总共8个通道,每一个通道都可作为输入捕捉、输出比较、或带缓冲的边缘对齐PWM。每一个TPM的所有通道都可以配置成为带缓冲的中心对齐脉宽调制CPWM(buffered, center-aligned pulse-width modulation)。每一个TPM预分频器的时钟源都可以独立选择总线时钟、固定系统时钟或外部管脚对每个TPM,每个通道一个中断,还有一个计数中止中断。 定时器系统的内部结构为:两个独立的TPM每个TPM都由1个16位的计数器与n n 6 or 2 个输入/输出通道组成;每一个通道都可作为输入捕捉、输出比较、或带缓冲的边缘对齐PWM。 TPM模块自由计数定时核心是一个16位的计数器。三种时钟源之一经过分频之后的脉冲即作为定时器的计数脉冲;每过一个计数脉冲,Counter便自动+1,Counter加到FFFF后翻转到$0000,同时置溢出标志位TOF为1,然后重新开始计数;溢出时若TOIE为1,还会产生中断请求。Fbus和分频比的不同可以产生不同的溢出时间间隔;但是这种自由计数定时方式定时有限。只读的16位TPM计数寄存器由两个字节寄存器TPMxCNTH和TPMxCNTL构成。 TPM预置计数定时:向16位模数计数寄存器TPMxMODH:TPMxMODL写入一个确定的数值,则计数器每进行一次计数都会将计数和模数计数寄存器的值进行比较,如果相同就产生溢出,同时置溢出标志位TOF为1,然后重新开始计数,溢出时若TOIE为1,还会产生中断请求。   TPM每个自由计数器包含三个寄存器:一个8位状态控制寄存器(TPMxSC),一个16位计数器(TPMxCNTH:TPMxCNTL,一个16位模数寄存器(TPMxMODH:TPMxMODL)。其中,x 1/2 (1)定时器x状态控制寄存器(TPMxSC)如下图: 其中,TOF为溢出标志位为 定时器x状态控制寄存器(TPMxSC)CLKS[B:A]与PS2:0]功能如下图 (3)定时器x模数寄存器(TPMxMODH:TPMxMODL)。可读/写的TPM模数寄存器中包含TPM计数器的模数值。当TPM计数器到达这个模数值后,TPM计数器在下一个时钟要么重新从0x0000开始计数(CPWMS 0),要么从这个模数值往下减1计数(CPWMS 1),同时溢出标志TOF(Timer Overflow Flag)变为1。只写TPMxMODH或者TPMxMODL其中的一个会抑制住TOF和溢出中断直到些另外一个字节也被写为止,因此两个寄存器一定都要写,不能只写一个而不管另一个。复位会使TPM模数寄存器为0x0000,相当处于自由运行定时器计数模式(模数禁止)。如下图: 【实验装置】 Freescale HC08单片机⑴利用TPM,编程实现下列功能:利用两个七段数码管,实现00-59秒显示:自动从00开始,每一秒钟,数字加1;加到59之后,自动回到00,重复开始; ⑵外接IRQ按键,平时00-59自动加数显示,按IRQ按键一次后,加数显示停止,再按一次IRQ按键,继续加数显示。 【结果分析】 实验(1)最终实现了用TPM2模块精确定时半秒,再利用半秒产生秒的各位和十位,并把秒的各位和十位送到两位数码管上显示。数码管采用动态扫描的方式显示。TPM2_ISR每隔ms清零一次对秒钟的高地位进行加处理IRQ按键FLAG计数加1,然后取FLAG的最低位。若最低位为0,则停止秒计时,数码管显示时间保持不变;若最低位为1,则正常计时、显示。这样就实现了按IRQ按键一次后,加数显示停止,再按一次IRQ按键,继续加数显示。 【实验代码】 (1) INCLUDE MC9S08AW60.INC; 包含头文件 ORG $0070 Half_Sec DS 1;半秒时间变量 SEG_Select DS 1;数码管位选变量Second_L DS 1;秒钟低位 Second_H DS 1;秒钟高位 NUM DS 1 COUNT DS 1 ORG $1860 LED_Table: DC.B $c0,$f9,$a4,$b0,$99,$92,$82,$f8 DC.B $80,$90 recycle: MOV #70t,NUM ;软件延时 DBNZ NUM,

文档评论(0)

知识宝库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档