实验四定时器中断实验.docVIP

  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文档。上传文档
查看更多
实验四定时器中断实验

实验四:定时器中断实验 一、实验目的 1. 学习定时器中断的设计方法 2. 熟悉在汇编和C语言条件下如何编写中断服务程序; 3. 掌握长时间间隔的定时器的处理。 二、实验内容 控制核心板上的指示灯闪烁,频率为1Hz。使用DSP芯片的定时器0,定时周期为10ms,中断100次后,对指示灯的状态改变一次。 三、实验原理 中断指的是当某个事件发生时,暂停当前的操作,转向中断服务程序,执行完后再返回继续原来的操作。这使得DSP能够处理多个任务。DSP有许多中断源,可以设置中断控制寄存器来确定响应哪些中断而不理会哪些中断。本实验介绍最常用的定时器中断的使用方法,并介绍中断向量表和中断向量指针。Vc5416片上有一个可编程的定时器,总共包含有三个可由用户设置的寄存器,并可以申请主机的中断。这3个寄存器分别为TIM、PRD、TCR。 时间寄存器(TIM)是一个16的存储器映像寄存器,它的值由周期寄存器来进行装载,并且做减一操作。 周期寄存器(PRD)是一个16的存储器映像寄存器,它是用来重装时间寄存器(TIM)的值的。 定时器控制寄存器(TCR)是一个16的存储器映像寄存器,包含了定时器的控制和状态信息。 定时中断周期=CLKOUT×(TDDR+1)×(PRD+1) 四、实验步骤 (1)使用定时器首先要对它初始化,基本步骤如下: 1、#include vc5416.h #include usr.h //载入头文件 unsigned int count=0,temp=0; main() { system_init(); //系统初始化 timer0_init(); //定时器0初始化,使定时器每10ms中断一次 while(1) { if(count==0x0064) { ST1=sbit_reverse(ST1,b13_msk); //改变XF引脚的状态,使指示灯闪烁 count=0x0000; //对计数值清0 } } } /*interrupt serve program*/ void interrupt tint0() //中断服务程序,每次中断到来时对计数值加一 { count++; } /*定时器0初始化*/ void timer0_init() { TCR=sbit1(TCR,b4_msk); PRD=0x2710; TCR=0x003f; TCR=sbit0(TCR,b4_msk); /*定时器0提供系统时钟,10ms per tick */ } /*系统初始化*/ void system_init() { PMST=0x00e0; /*中断向量指向0080单元*/ asm ( ssbx INTM ); IFR=0xffff; IMR=0x0089; //使能定时器0中断 asm ( rsbx INTM ); BSCR=0x6002; } (2)中断向量表 中断向量表是DSP程序的重要组成部分,当有中断发生并且处于允许状态时,程序指针跳转到中断向量表中对应的中断地址。由于中断服务程序一般较长,通常中断向量表存放的是一个跳转指令,指向实际的中断服务程序。下面是5416中断向量表的一个范例,可以作为模板,使用时稍作修改就行: .sect .vectors .ref _c_int00 .ref _tint0 .align 0x80 ; must be aligned on page boundary RESET: ; reset vector BD _c_int00 ; branch to C entry point STM #200,SP ; stack size of 200 nmi: RETE ; enable interrupts and return from one nmi NOP NOP NOP ; software interrupts sint17 .space 4*16 ;软件中断使用较少,简单起见用0填充 sint18 .space 4*16 sint19

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档