




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PIC中档单片机的中断总结 这篇PIC中档单片机的中断总结的关键词是PI,IC,C中,中档,档单,单片,片机,机的,的中,中断,断总,总结,结, 与51或者其他系列的单片机相比,PIC 单片机的中断机制有其特殊之处,针对我们一些初学者存在的一些问题和疑惑,我在此做一个个人总结,不当的地方,请站友们指正。 先摘引三个对PIC中断理解的回帖,然后我再对中断活动的过
2、程、应该注意的事项、及一个疑惑进行较详细的总结和解释。 - john frank :关于pic中断有些不明白的地方 借用大虾的程序; ;* 中断服务代码 btfss INTCON,T0IE 判断是否为T0中断 goto other_int
3、btfss INTCON,T0IF it s the time of T0 int goto other_int bcf INTCON,T0IF
4、0;是T0中断,清除中断标志 movlw 0x10 微秒的高位字节加上定时时间 256x16分频=4096=0x1000的高位(0x10) addwf us+1 goto end
5、_int other_int 可添加其他中断服务代码 nop other
6、160;isr code can be added ;* end_int 恢复现场 = 假如又有新的中断正好在这段程序中间产生 btfss INTCON,T0IF goto
7、0; other_int bcf INTCON,T0IF 程序岂不是要出错跑飞了 john frank:谢谢你的关注。 我讲一下自己的理解,权做回答,不当之处,还请站友们指点。 pic中档单片机系列没有“硬件中断优先级别”(请允许我这样说),含义是指:当内核正在处理当前的中断服务A时,在这个期间里,其他任何中断的产生,只能使其标志位xxIF置1,不能剥夺当前中断服务对CPU的占用权(反应在PC指针不
8、能被新的中断改变指向),必须等到当前中断服务处理A完毕,然后,根据goto other_int语句的转向,依次判断。若新发生的中断处理代码在中断服务A之后(前、后指代码在ROM中地址顺序,越大越后),则进行新发生的中断处理;若恰好新发生的中断服务代码在刚被处理完毕的中断服务A代码之前,则将不予理会,(即程序指针PC不会在中断处理代码空间中又返回到0004H的入口),等到执行到retfie 后返回主程序,然后再次进入中断入口0004H. 之所以说其无“硬件中断优先级别”是与“软件中断优先级别”对应的,通过中断服务代码对中断标志和IE的检测的
9、先后,可设立优先级。 当然,准确地说,这是一种顺序,而非级别,呵呵。 如果了解一下51的中断系统,相信你能更好地理解PIC的中断的级别: 将会出现你说的情况,当优先级更高的中断来临时,内核将暂时停止当前中断服务,保存当前中断服务的现场,执行优先级更高的中断服务,处理完成后,恢复现场,执行未处理完成的中断服务.,最后,返回主程序。 小弟讲得有点烦琐,并不形象,可能还有纰漏和谬误之处,请大家指正,相信john frank在仔细看书之后,应该可以
10、形成自己的正确看法。 zdtdl :小弟说两句 简单地说,当系统响应一个中断时,GIE位将被自动清零以禁止其他的中断,在执行中断返回指令RETFIE后系统再自动置GIE位1开放中断。只要不在中断程序中对GIE置1,就不会产生反复进入中断的现象,靠查询方式决定响应谁。PIC也有中断嵌套,可以形成多级嵌套,甚至自身嵌套,不过嵌套的级数绝对不能超过硬件堆栈的深度。 - PIC中档单片机的中断总结正文 一、中断活动的过程 对于PIC单片机来说,一次中断的过程大致有下列阶段: 为了使得说明形象和直观,本文采用一些诙谐的语句
11、来比喻说明: 中断请求-比喻成申请买经济适用房的请求 中断标志-一份申请书 本中断使能xxIE-本单位领导 PEIE-户口办公室主任 GIE-银行的管理信贷的科长 1. 中断请求:房子太少,儿子要结婚了,得买房了,可资源和财力有限,不能卖商品房, 只好按特殊情况处理,写一份申请书(中断标志位IF置1); 2. 本单位领导xxIE看了之后, 如果给你盖了一个戳:(即该中断使能位IE=1),那么恭喜你,这份申请书可以提交到更高一级的部门;如果没盖(xxIE=0),那么对不起,先放我这里吧,等我们研究研究好后再说
12、。如果你不开心,要拿回申请书撕掉,呵呵,那么IF=0;你的购房请求之梦破灭; 3. xxIE领导将根据户口,将这些请求书给分类,一类是外地迁来的户口,提交给户口办公室PEIE主任审查,PEIE主任如果给你盖了个戳(PEIE=1),那么,他将会把申请书提交给银行的GIE科长批准,否则就是放在这里再研究研究或者你要回来撕毁;一类是本地户口,可直接提交给银行的GIE科长批准,然后你将申请书带到GIE科长的办公室。 4. GIE科长盖了章之后(GIE=1),然后,你就可以拿着申请书去找房地产商要房子了(此时PC指针=0004H),因为
13、GIE科长有很多事情要做,所以他每盖了一次戳之后(注意是一次不是一个,因为也许有多个中断同时发生,也就是说有其他地方的人来请GIE盖戳),就在办公室门外挂了个牌子:请勿打扰。他自己则休息去了,直到接到RETFIE的电话或者有人打他的手机。 5. 房地产商准备给房子了,不过你最好得先把各项手续给填好,叫5w押金,另外协议阿,合同阿,都得自己搞定,这叫“保护现场”。 6. 房地产商开始上班了,于是挨个查“申请书”是谁提交的,以便给你安排你预定的房子。这个叫“中断查询”。 7. 查到是你的后,然后打
14、电话让你过来,带你去看房子,把钥匙给你。这个交“中断处理”。 8. 钥匙交给你之后,房子你是到手了,不过这份申请书就失效了,房地产商将该申请书销毁。这个叫“清除中断标志”。 9. 好啦,现在你可以去房地产商自己去要回以前交的押金,身份证啊等等。这个叫“恢复现场”。 10. 最后,房地产商办完了,让RETFIE小姐打个电话给GIE科长(执行RETFIE指令),GIE科长才起来,把“请勿打扰”的牌子取下,让其他的带着申请书的人进来。当然,如果你的事情还没搞定,GIE科长的关系户打了他的手机(你在办
15、事时处理中断时,若有GIE被置1),他也会开门取下“请勿打扰”的牌子,让关系户进来,给他盖好章。这下就对不起了,人家有关系,所以你的事情要马上停下来,先等关系户办完他的事情之后,再给你办你的事情。这个叫“中断嵌套”,要注意GIE科长有8个关系户(硬件堆栈的深度为8级)哦。 二、需要注意的问题: 1. 中断现场的保护(可以参考以前的帖子,在xieyubing版主的指点下,有恰当的例子); 2. 初次上电复位、电源跌落复位和其他情况下的复位,均使得全局中断位GIE和其他中断使能位xxIE=0; 3. 中断标志位的状态与该中断源是否被屏蔽无关,与全局中断使能位GIE也无
16、关。 4. 当开放某一中断源时,该中断源就是通过中断标志向CPU申请中断的,无论什么原因,只要标志位IF置1(可以用软件强行置1),均会产生中断请求。 5. 当中断标志位为1,如果该中断被屏蔽或者被禁止了,只要不清除标志位,那么该中断请求会被潜伏下来,一旦屏蔽解除,立即产生中断响应。反之,如果在屏蔽/禁止条件解除之前清除了该标志位,那么则无中断请求。 6. 当CPU响应任一中断时,全局中断使能位GIE会自动清零;当中断返回时,它有自动置1。如果在中断处理期间,用软件将已经清零的GIE位又重新置位,这个时候若再出现中断请求,就可以形成了中断嵌套。即:在处理某一中断期
17、间又响应了其他中断请求,就形成了中断嵌套,此时,前一中断处理过程会被暂停而进入新的中断处理,当新中断处理完毕后,才会继续处理前一个被搁置的中断。此方式可以形成多级嵌套,但不能超过硬件堆栈的深度8级,以免造成堆栈溢出而不能正常返回。 7. 如果同时发生多个中断请求,则中断处理的顺序取决于中断程序中的检查中断源的顺序。 8. 若要防止中断请求被丢失:则要注意下面两种情况:如果同一中断源的中断发生间隔时间大于该中断服务的处理时间,则可能出现中断事件被忽略(体现在中断服务的过程中,标志位被连续发生来两次置位),例如:中断事件发生的时间间隔为30ms,中断服务处理加上跳转判断的时间为
18、50ms,则情况将会如下所示: 中断次数-1中断次数-2中断次数-3中断次数-4 处理次数-1处理次数-2处理次数-4 如果在中断处理一开始就清除IF,那么如上图所示,中断事件3、4 在处理次数2的过程中发生来两次,那么即使IF清除发生在中断次数3发生之前,也将丢失第三次中断。 另外,即使中断出现的时间间隔大于中断服务的时间间隔,如果清除中断标志位的指令安排在中断服务子程序的尾部,就有可能造成丢失该中断请求(即两次中断标志置位的事件只对应一条清除指令和一次中断处理。 9. 在进行查表操作时必须禁止CPU
19、响应中断,以避免中断返回时跳转到不希望的地址上去。 三、一个疑惑 一个疑问:一些书上提到:如果对寄存器INTCON进行“读-改-写”操作的时候,要事先将GIE清0,再对INTCON进行操作,然后将GIE恢复为1 即BCF INTCON,GIE BSF INTCON,XX BSF INTCON,GIE 所提到的理由是:当CPU正在执行一条对INTCON寄存器进行“读-改-写”操作的指令时,如果恰好发生了中断请求,则中断服务程序会被执行两次。这是因为当中断请求发生后INTCON寄存器的GIE寄存器会被硬件自动清零(屏蔽所
20、有中断),并且程序转入中断例程入口(0004h)。当GIE被清零后,这时如果CPU正在执行一条对INTCON“读-改-写”的指令时,则GIE位还会被写会操作重新置1,这样就会造成CPU两次进入中断服务程序。 该段解释晦涩难懂,根据中断发生过程的时序(PICmicro中档单片机系列参考手册的第8-2页):在第n个指令周期里,CPU检测到IF标志位为1,则在n+1个周期内将自动使得GIE=0,该周期内既不取指也不执行指令,然后在n+2个指令周期里,0004h指针装入PC指针,该周期也不运行其他指令,只完成0004H->(PC)的取指过程,第n+3个指令周期里,CPU执行0004h地址的指令码
21、,并同时取0005h的指令码。 显然,作者提到的“当GIE被清零后,这时如果CPU正在执行一条对INTCON“读-改-写”的指令时,则GIE位还会被写会操作重新置1,这样就会造成CPU两次进入中断服务程序。”的解释存在下面的问题:GIE被硬件自动清零时的那个周期,是一个空运行周期,CPU并不执行指令,下一个周期也是空运行周期,不过是完成将0004h地址中的代码取指操作。然后就开始了0004h地址的代码的执行操作和0005h地址代码的取指过程。那么GIE在被硬件自动清零后要想置会1,只有两种方法:RETFIE指令使GIE自动置1;通过软件指令对GIE人为置1。显然,如果对GIE人为置1的指令执行在对该标志位清零前,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村苗木回收合同标准文本
- 出售实木柜台合同样本
- 出租包车服务合同标准文本
- 公司雇用项目经理合同标准文本
- ktv设计合同标准文本
- 公寓底价出售合同样本
- 与美甲店合同样本
- 住建部勘察设计 合同标准文本
- 健身器材合同标准文本110网
- 仓管聘用合同标准文本
- NB-T47023-2012长颈对焊法兰
- 预制混凝土剪力墙吊装施工技术讲解
- 2024年浙江长征职业技术学院单招职业技能测试题库含答案解析
- 杉篙架搭设安全技术交底
- 四年级下册数学-口算题-(加法交换律和结合律)-1000题
- 《电化学储能电站监控系统技术规范》
- 新型电力系统简介
- 一、中国经典话剧艺术赏析(引言)
- 施工现场常见问题解决的协调沟通技巧与有效方案研究
- 四年级英语 Lesson 14 Are You Short or Tall 全省一等奖
- 遵义会议精神宣讲
评论
0/150
提交评论