定时器-计数器编程举例_第1页
定时器-计数器编程举例_第2页
定时器-计数器编程举例_第3页
定时器-计数器编程举例_第4页
定时器-计数器编程举例_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

定时器

计数器编程举例1定时器定时器的组成框图如图8-1所示。它有3个存储器映象寄存器:TIM、PRD和TCR。这3个寄存器在数据存储器中的地址及其说明如表8-1所示。定时器控制寄存器(TCR)位结构如图8-2所示,各控制位和状态位的功能如表8-2所示。返回首页图8-1定时器组成框图表8-1定时器的三个寄存器Timer0地址Timer1地址寄存器说明0024H0030HTIM定时器寄存器,每计数一次自动减10025H0031HPRD定时器周期寄存器,当TIM减为0后,CPU自动将PRD的值装入TIM0026H0032HTCR定时器控制寄存器,包含定时器的控制和状态位15~1211109~6543~0保留softfreePSCTRBTSSTDDR图8-2TCR位结构图表8-2定时器控制寄存器(TCR)的功能返回本节2时钟发生器2.1硬件配置PLL2.2软件可编程PLL返回首页2.1硬件配置PLL用于C541、C542、C543、C545和C546芯片。所谓硬件配置PLL,就是通过C54x的3个引脚CLKMD1、CLKMD2和CLKMD3的状态,选定时钟方式,如表8-3所示。由表8-3可见,不用PLL时,CPU的时钟频率等于晶体振荡器频率或外部时钟频率的一半;若用PLL,CPU的时钟频率等于晶体振荡器频率或外部时钟频率乘以系数N(PLL

N),使用PLL可以使用比CPU时钟低的外部时钟信号,以减少高速开关时钟所造成的高频噪声。表8-3时钟方式的配置返回本节2.2软件可编程PLL软件可编程PLL具有高度的灵活性,其时钟定标器提供各种时钟乘法器系数,并能直接接通和关断PLL。PLL的锁定定时器可以用于延迟转换PLL的时钟方式,直到锁定为止。通过软件编程,可以选用以下两种时钟方式(如表8-4~8-6、图8-3所示)。

PLL方式,其比例系数共31种。靠锁相环电路完成。分频(DIV)方式,其比例系数为1/2和1/4,在此方式下,片内PLL电路不工作以降低功耗。表8-4复位时的时钟方式(C5402)CLKMD1CLKMD2CLKMD3CLKMD寄存器时钟方式000E007H乘15,内部振荡器工作,PLL工作0019007H乘10,内部振荡器工作,PLL工作0104007H乘5,内部振荡器工作,PLL工作1001007H乘2,内部振荡器工作,PLL工作110F007H乘1,内部振荡器工作,PLL工作1110000H乘1/2,内部振荡器工作,PLL不工作101F000H乘1/4,内部振荡器工作,PLL不工作011…保留表8-5时钟方式寄存器CLKMD各位域功能表8-6比例系数与CLKMD的关系PLLNDIVPLLDⅣPLLMUL比例系数0X0~140.50X150.25100~14PLLMUL+110151110或偶数(PLLMUL+1)÷211奇数PLLMUL÷4图8-3PLL锁定时间和CLKOUT频率的关系返回本节3定时器/计数器编程举例【例8-1】设时钟频率为16.384MHz,在TMS320C5402的XF端输出一个周期为2s的方波,方波的周期由片上定时器确定,采用中断方法实现。1.定时器0的初始化(1)设置定时控制寄存器TCR(地址0026H)。(2)设置定时寄存器TIM(地址0024H)。(3)设置定时周期寄存器PRD(地址0025H)。返回首页2.定时器对C5402的主时钟CLKOUT进行分频CLKOUT与外部晶体振荡器频率(在本系统中外部晶体振荡器的频率为16.384MHz)之间的关系由C5402的三个引脚CLKMD1、CLKMD2和CLKMD3的电平值决定,为使主时钟频率为16.384MHz,应使CLKMD1=1、CLKMD2=1、CLKMD3=0,即PLL

1。3.中断初始化(1)中断屏蔽寄存器IMR中的定时屏蔽位TINT0置1,开放定时器0中断。(2)状态控制寄存器ST1中的中断标志位INTM位清零,开放全部中断。4.汇编源程序如下:.mmregs.def_c_int00STACK.usect"STACK",100ht0_cout .usect"vars",1;计数器t0_flag.usect“vars”,1;当前XF输出电平标志。t0_flag=1,则XF=1;;t0_flag=0,则XF=0TVAL .set1639;1640

10

61=1ms因中断程序中计数器初值;t0_cout=1000,所以定时时间:1ms

1000=1sTIM0 .set 0024H ;定时器0寄存器地址PRD0 .set 0025HTCR0 .set 0026H .dataTIMES .intTVAL ;定时器时间常数 .text**********************************;中断矢量表程序段_c_int00 bstart nop nopNMI rete ;非屏蔽中断

nop nop nopSINT17 .space4*16 ;各软件中断SINT18 .space4*16SINT19 .space4*16SINT20 .space4*16SINT21 .space4*16SINT22 .space4*16SINT23 .space4*16SINT24 .space4*16SINT25 .space4*16SINT26 .space4*16SINT27 .space4*16SINT28 .space4*16SINT29 .space4*16SINT30 .space4*16INT0 rsbx intm ;外中断0中断

rete nop nopINT1 rsbx intm ;外中断1中断

rete nop nopINT2 rsbx intm ;外中断2中断rete nop

nopTINT:bd timer ;定时器中断向量

nop nop nopRINT0: rete ;串口0接收中断

nop nop nopXINT0: rete ;串口0发送中断

nop nop nopSINT6 .space4*16 ;软件中断SINT7 .space4*16 ;软件中断INT3: rete ;外中断3中断

nop nop nopHPINT: rete ;主机中断

nop nop nopRINT1: rete ;串口1接收中断

nop nop nopXINT1: rete ;串口1发送中断

nop nop nop******************************************start: LD #0,DP STM #STACK+100h,SP STM #07FFFh,SWWSR STM #1020h,PMST ST #1000,*(t0_cout);计数器设置为1000(1s) SSBX INTM ;关全部中断

LD #TIMES,A READATIM0 ;初始化TIM,PRD READAPRD0 STM #669h,TCR0 ;初始化TCR0 STM #8,IMR;初始化IMR,使能timer0中断

RSBX INTM ;开放全部中断WAIT: B WAIT**************************************;定时器0中断服务子程序timer: ADDM #-1,*(t0_cout) ;计数器减1

CMPM *(t0_cout),#0 ;判断是否为0

BC next,NTC ;不是0,退出循环

ST #1000,*(t0_cout);为0,设置计数器,并将XF取反

BITF t0_flag,#1 BC xf_out,NTC SSBX XF ST #0,t0_flag B nextxf_out: RSBX XF ST #1,t0_flagnext: RSBX INTM RETE .end5.链接命令文件times.cmd如下:times.obj-otimes.out-mtimes.mapMEMORY{PAGE0:RAM1:origin=1000h,len

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论