飞思卡尔单片机中断

飞思卡尔单片机中断

ID:21917232

大小:1.33 MB

页数:26页

时间:2018-10-21

飞思卡尔单片机中断_第1页
飞思卡尔单片机中断_第2页
飞思卡尔单片机中断_第3页
飞思卡尔单片机中断_第4页
飞思卡尔单片机中断_第5页
资源描述:

《飞思卡尔单片机中断》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、FreescaleHCS12微控制器MC9S12DG128HCS12中断默认状态:在进入中断服务程序时,I位自动置1,禁止其他可屏蔽中断即使有优先级更高的中断请求,也必须等当前中断服务程序执行完以后才能响应优先级的作用只有在多个中断源同时请求中断时在能体现无法实现中断嵌套如果在进入中断服务程序时,手动对I位清零:任何其他可屏蔽中断都可以被响应,无论其优先级有多高中断响应由时间控制,可以实现中断嵌套对中断执行无法预测HPRIO寄存器写入HPRIO中的中断向量的后八位,可以改变该中断的优先级同样,优先级的作用只有在多个中断源同时请求中断时在能体现在CW4.6环境下,中断编程主要

2、有两种方式:第一种是使用“interrupt”关键字,“interrupt”关键字是一个非标准ANSI-C的关键字,因此,它不能被所有ANSI-C编译器厂商所支持。同样,对不同的编译器,interrupt”关键字的用法可能会改变。“interrupt”关键字同样会提示编译器下面的函数是一个中断服务例程。例:voidinterrupt20SCI0_ISR(void);其中,interrupt表示该函数为终端服务程序,后面的20表示中断号20,在这里SCI0的中断向量号就是20.这种方法写起来非常简单,但是,在S12单片机实际使用中,中断号并没有在手册中给出,通常需要自己在中断

3、向量表中从上往下数出来,或者根据中断向量计算得到,很容易出错。于是有了第二种方法:在ISR程序之前,使用符号“#pragmaTRAP_PROC”,TRAP_PROC提示编译器下面的函数是中断服务例程。编译器会用一个特殊的中断返回指令来结束这个函数。此时,中断函数的书写如下所示:#pragmaTRAP_PROCvoidSCI0_ISR(void){   ...}这时候编译器不知道这个ISR指向那个中断向量,我们需要在链接文件即:prm文件中指定之。使用VECTOR命令来实现中断向量与ISR程序的连接。例:VECTOR0_Startup    //这是系统默认prm文件中自带的

4、,即复位后0号中断即复位中断的ISR为_Startup()我们可以这样写:VECTOR20SCI0_ISR //指定中断号或者VECTORADDRESS0xFFD6SCI0_ISR  //直接指定中断向量地址注:使用#pragmaTRAP_PROC与修改prm文件的方法,在中断服务子程序的结尾处必须要手动加入返回主程序的指令,包括取出堆栈、中断返回两个步骤。在S12单片机中,可以写作asm{   pula;rti;}尾注:两种方法所写的中断服务子程序必须被放在非分页存储区内,即non_blankedcodeseg.其中一种常用的方法是在服务子程序前声明://下面代码放在NO

5、N_BANKED区#pragmaCODE_SEGNON_BANKED在中断程序后声明://下面内容按默认放置#pragmaCODE_SEGDEFAULTHCS12默认中断处理机制运行运行运行等待运行等待中断A中断B程序低优先级高优先级中断A请求中断B请求等待人人平等在可屏蔽中断服务程序中EnableInterrupts运行运行运行等待运行运行等待中断A中断B程序低优先级高优先级中断B请求中断B被挂起中断A请求长幼不分采用中断优先处理机制运行运行等待运行运行等待中断A中断B程序低优先级高优先级中断A请求中断B请求中断B返回运行等级森严中断优先处理机制在中断服务程序中,首先对I

6、为清零,即EnableInterrupts选择优先级更高的中断源可以进入响应中断设置优先等级两级一个中断源为低优先级,其他为高优先级在低优先级中断服务程序中,对I位清零在高优先级中断服务程序中,不清零多级利用局部的中断屏蔽位比如TimerChannel0的中断屏蔽位TIE_C0I优先机制-两级例如:中断向量地址$FFF0–FFF1为低优先级其他的中断为高优先级在$FFF0–FFF1中断服务程序中,EnableInterrupts(I位清零)其他的中断包括自己都可以在中断服务程序执行时,被响应在其他的中断服务程序中,I位不清零(默认)只有当前中断服务程序执行完后,才能响应其他

7、的中断请求当同时有多个中断源请求中断时,中断向量地址最靠近$FFFF的,将会首先被响应优先机制–多级自定义优先级中断向量地址中断源CCR屏蔽位局部屏蔽位HPRIO1中$FFEE,$FFEFECT通道0ITIE_C0I$EE0低$FFEC,$FFEDECT通道1ITIE_C1I$EC2高$FFEA,$FFEBECT通道2ITIE_C2I$EA要求:在低优先级的中断服务程序中,高优先级的中断请求可以被响应HPRIO=0xEA:ECT0,1,2同时请求中断时,CPU将会首先响应通道2默认时,CPU将会首先响应通道0优先机

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。