发布于2021-06-07 20:39 阅读(918) 评论(0) 点赞(27) 收藏(4)
中断是为使单片机具有对外部或者内部随机发生的事件实时处理而设置的。
把自己想象成单片机的CPU,你正在打王者荣耀,但是突然快递小哥给你打电话让你去拿快递(被打断心情很不爽。。。),于是你停下游戏去拿快递了。快递小哥的电话就是中断信号,告诉你有其他的事情需要先去做,然后你去拿快递就相当于中断之后要去处理的事情。
顾名思义,中断源就是产生中断的来源,在前面讲述中断的概念中,中断源就是“电话”!这就是外部世界在“干扰”你,让你不得不去处理,在单片机中抽象为“外部中断”。
除了外部中断,当然也有“内部中断”,例如,你家正在煲汤,你给自己设置一个每相隔半个小时就去看一下煲汤的情况,其余时间你都在学习,这个“中断”就相当于有了一个“定时器”,每次半小时一到达,你就得去一下厨房,没错,这个就是“定时器中断”。
当然,除此之外,8051单片机还有一个串行口中断。这个在之后实战中,我们会认识到它的原理!
8051单片机有五个中断源:
这里需要注意:定时器和中断不是一回事,定时器是单片机模块的一个资源,确确实实存在的一个模块,而中断,是单片机的一种运行机制。 很多人会误以为定时器和中断是一个东西,只有定时器才会触发中断,其实根据前面的介绍,中断有很多来源。
在这里我们继续举例子,比如我正在看电视,这个时候来电话了,我要进入接电话的“中断”程序当中去,就在接电话的同时,听到了水烧开的声音,水烧开的“中断”也发生了,我们就必须要放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。
还有一种情况,我们在看电视的时候,这个时候听到水开的声音,水开的“中断”发生了,我们要进入关煤气的“中断”程序当中,而在关煤气的同时,电话声音响了,而这个时候,我们的处理方式是先把煤气关闭,再去接听电话,最后再看电视。
从这两个过程中,我们可以得到一个结论,就是最紧急的事情,一旦发生后,我们不管当时处在哪个“程序”当中,我们必须先去处理最最紧急的事情,处理完毕后再去解决其它事情。在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念。
以下表格中最右边是8051几个优先级的情况:
中断优先级有两种,一种是抢占优先级,一种是固有优先级,关于这块这里理解一下它们的概念即可,实战中用到之时再去分析!
抢占优先级:
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。
所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。
固有优先级:
那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在上面的表格中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。从表中可以看到一共有 1~5 共 5 级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。
原文链接:https://blog.csdn.net/Neutionwei/article/details/117573725
作者:你莫说是我
链接:http://www.phpheidong.com/blog/article/89616/f5dfe7f58a2de1227862/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!