单片机中的中断系统对电子工程师来说是解决突发事件和多任务实时处理的最好方法,熟练掌握中断技术的应用是一个合格电子工程师必备的能力。
pic与51系列单片机一个显著的区别就是:pic只有一个中断入口地址(为04h),而51有多个中断源。这样对pic来说,无论发生何种中断程序将自动转移执行04h处的程序语句,为了区分到底是哪种中断发生就必须在中断服务程序中通过判断中断标志位来确定并转移到相应的中断服务程序中。在发生中断时,断点地址被首先压入硬件堆栈,而现场的一些参数须用户通过软件保存,必须保存的寄存器包括w寄存器、程序寄存器的高位字节pclath及状态标志寄存器status等,另外一些在中断服务程序和主程序中均使用到的寄存器也必须保存,否则可能会导致不可预知的错误。如果需要保存的现场参数过多就会到来两个弊端:一是造成ram资源的浪费,特别是对ram资源紧张的应用系统;二是增加了中断服务程序的运行时间而导致中断系统的实时性变差,甚至影响正常功能的实现,比如用单片机中的ccp模块实现对高速脉冲宽度的测量,则就要求中断服务程序的运行时间越短越好,否则会丢掉捕捉的机会而造成错误。因此建议在中断服务程序中尽量不要使用主程序中用到的寄存器,将中断中的寄存器设为专用,这样就省去了这些寄存器的保护和恢复程序并减少出错的几率。
另外一个注意的是,在中断服务程序中尽量避免使用有多级嵌套的子程序,本人在实际应用过程中曾遇到过此类问题,在很长一段时间内找不出问题的根源。pic中档单片机的硬件堆栈为8级,假如在主程序中调用了一个具有6级嵌套的子程序,当主程序执行到最内层的子程序时,则8級堆栈中已用去了6级,如果刚好此时发生了中断,则断点被压入堆栈,此时堆栈中保存了七个地址,又假如在中断服务程序中存在一个二级嵌套的子程序,则堆栈将发生溢出,这必将导致程序不能正确返回到原来的地址,从而导致程序跑偏。由于该情况的发生需要满足一定的条件,即主程序运行到最内层的子程序时发生中断,因而具有很大的不确定性,在产品开发开发调试阶段可能根本就没有发现有什么问题,等到产品经用户长期使用时才开始暴露出来,但此时已经给产品在用户心目中的形象造成了极坏的影响,损失已经无法挽回。因此作为开发人员应该特别注意。
还有一个问题也是值得注意的,就是在中断服务程序中避免打开全局中断允许位,因为pic单片机不支持中断嵌套,否则在执行一个中断服务程序还未结束就进入另一个中断服务程序后,上一个中断的现场参数将遭到破坏,从而导致程序产生不可预知的错误。
来源;21ic
锂聚合物电池技术参数_锂聚合物电池构造
理想2022年将推全尺寸SUV 搭载英伟达Orin芯片,支持L4级自动驾驶
华为P30系列国行价格公布 售价3988元起
中国落后的十大技术领域
详解一下跨国车企的新能源汽车如何布局
在处理PIC单片机的中断服务程序时需要注意哪些问题
关于殷瓦钢的概述和其焊接技术的步骤
区块链的拒绝服务攻击BDoS会对区块链产生哪些威胁
永磁同步直线电机硬件在环实时仿真平台
联电2022Q3财报公布,22/28纳米营收提升
介绍一种物联网智能光伏电路
人工智能如何成为复工的助手
英特尔推新款Quark芯片升级物
输出整流滤波电路
安规电容都是275v吗
SK海力士即将完成对英特尔NAND部门收购
AMAIZNGIC晶焱科技提供车载资通讯系统结合5G技术!专业ESD对策打造高可靠度车联网
华为首次实现220 GBaud超高速信号传输 刷新业界纪录
中国企业离智慧企业还有多远的距离
需求旺盛!智能座舱全产业链全景图来了【附550页报告】