飞思卡尔单片机中断[精选].ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
飞思卡尔单片机中断[精选]

ECT模块的组成 8 个独立的定时器通道,每个通道具备输入捕捉和输出比较功能 4 个带有8 位缓存的脉冲累加器,也可以作为2个16 位的累加器使用 带有4 位预分频因子的16 位模数递减计数器 用户可选可抵御噪音的延迟计数器 ECT系统控制寄存器1: TSCR1 ECT系统控制寄存器2: TSCR2 ECT系统计数寄存器:TCNT 实验3:内容(1) ECT控制流水灯显示 定时器模块输入捕捉 定时器模块输入捕捉 定时器模块输入捕捉 实验3:内容(2) ECT输入捕捉控制LED灯显示 要求:利用输入捕捉0通道,对外来的信号进行下降沿捕捉,并触发中断。中断发生后用LED灯指示中断成功。 实验3:内容(2) ECT输入捕捉控制LED灯显示 定时器模块输出比较 实验3:内容(3) ECT输出比较控制 要求:利用输出比较0通道,输出方波信号。 定时器模块输出比较 TM Freescale Semiconductor Confidential and Proprietary Information. Freescale? and the Freescale logo are?trademarks?of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. ? Freescale Semiconductor, Inc. 2005. Freescale Semiconductor Confidential and Proprietary Information. Freescale? and the Freescale logo are?trademarks?of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. ? Freescale Semiconductor, Inc. 2005. TM HCS12中断 默认状态: 在进入中断服务程序时,I位自动置1,禁止其他可屏蔽中断 即使有优先级更高的中断请求,也必须等当前中断服务程序执行完以后才能响应 优先级的作用只有在多个中断源同时请求中断时在能体现 无法实现中断嵌套 如果在进入中断服务程序时,手动对I位清零: 任何其他可屏蔽中断都可以被响应,无论其优先级有多高 中断响应由时间控制,可以实现中断嵌套 对中断执行无法预测 HPRIO寄存器 写入HPRIO中的中断向量的后八位,可以改变该中断的优先级 同样,优先级的作用只有在多个中断源同时请求中断时在能体现 在CW4.6环境下,中断编程主要有两种方式: 第一种是使用“interrupt”关键字,“interrupt”关键字是一个非标准ANSI-C的关键字,因此,它不能被所有ANSI-C编译器厂商所支持。同样,对不同的编译器,interrupt”关键字的用法可能会改变。“interrupt”关键字同样会提示编译器下面的函数是一个中断服务例程。 例: void interrupt 20 SCI0_ISR(void); 其中,interrupt表示该函数为终端服务程序,后面的20表示中断号20,在这里SCI0的中断向量号就是20. 这种方法写起来非常简单,但是,在S12单片机实际使用中,中断号并没有在手册中给出,通常需要自己在中断向量表中从上往下数出来,或者根据中断向量计算得到,很容易出错。 ? 于是有了第二种方法: 在ISR程序之前,使用符号“#pragma TRAP_PROC”,TRAP_PROC 提示编译器下面的函数是中断服务例程。编译器会用一个特殊的中断返回指令来结束这个函数。 此时,中断函数的书写如下所示: #pragma TRAP_PROC void SCI0_ISR(void){??? ...}?? 这时候编译器不知道这个ISR指向那个中断向量,我们需要在链接文件即:prm文件中指定之。 使用 VECTOR命令来实现中断向量与ISR程序的连接。 例:VECTOR 0 _Startup????//这是系统默认prm文件中自带的,即复位后0号中断即复位中断的ISR为_Startup() 我们可以这样写: VECTOR 20 SCI0_ISR? //指定中断号 或者 VECTOR ADDRESS 0xFFD6 SCI0_ISR?? //直接指定中断向量地址 ? 注:使用#pragma TRAP_PROC与修改prm文件的方法,在中断服务子程序的结尾处必须要手动加入返回主程序的指令,包括取出堆栈、中断返回两

文档评论(0)

jsntrgzxy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档