建设个人网站用到的技术,南京 网站制作公司哪家好,商城网站的建设,深圳富通做网站目录硬知识中断概念中断系统中断结构中断优先级中断处理普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识
选自《普中51单片机开发攻略_V1.2》、《STC89C52系列单片机器件手册》
中断概念 中断是为使单片机具有对外部或内…
目录硬知识中断概念中断系统中断结构中断优先级中断处理普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识
选自《普中51单片机开发攻略_V1.2》、《STC89C52系列单片机器件手册》
中断概念 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的 中断功能的存在很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一是我们学习单片机必须要掌握的。很多初学者被困在中断中学了很久仍然不知道中断究竟是如何运作的。千万不要认为它有多难 其实只要掌握正确的学习方法没有哪个知识点是学不会的。 为了能让大家更容易理解中断概念 我们先来举一个生活事例 你打开火 烧上一壶水。然后去洗衣服在洗衣服的过程中突然听到水壶发出水开的报警声这时你停止洗衣服动作立即去关掉火然后将开水灌入暖水瓶中灌完开水后你又回去继续洗衣服。这个过程中实际上就发生了一次中断。 对于单片机来讲中断是指 CPU 在处理某一事件 A 时发生了另一事件 B 请求 CPU 迅速去处理(中断发生)CPU 暂时停止当前的工作(中断响应) 转去处理事件 B(中断服务)待 CPU 将事件 B 处理完毕后再回到原来事件 A 被 中断的地方继续处理事件 A(中断返回)这一过程称为中断。 再回来看前面讲的生活事例与单片机中断结合分析你的主任务是洗衣服 水开报警这是一个中断请求这一时刻相当于断点处你响应中断去关火然后将开水灌入暖水瓶中这一动作实际上就是处理中断程序灌完开水后再回去继续洗衣服相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注 意的是水开是随时都有可能的但是无论什么时候开只要一开你将立即去处理它处理完后再回来继续接着洗刚才那件衣服。单片机在执行程序时中断也随时有可能发生但无论何时发生只要一旦发生单片机将立即暂停当前程序赶去处理中断程序处理完中断程序后再返回刚才暂停处接着执行原来的程序。 单片机在执行程序时其程序流程图如下 引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求CPU 暂时中断原来的事务 A转去处理事件 B对事件 B 处理完毕后再回到原来被中断的地方(即断点)称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。 中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的。 随着计算机技术的应用人们发现中断技术不仅解决了快速主机与慢速 I/O 设备的数据传送问题而且还具有如下优点 ①分时操作。CPU 可以分时为多个 I/O 设备服务提高了计算机的利用率 ②实时响应。CPU 能够及时处理应用系统的随机事件系统的实时性大大增 强 ③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力从而使系统 可靠性提高。 中断系统 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求要求CPU暂停当前的工作转而去处理这个紧急事件处理完以后再回到原来被中断的地方继续原来的工作这样的过程称为中断。实现这种功能的部件称为中断系统请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源当几个中断源同时向CPU请求中断要求为它服务的时候这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队优先处理最紧急事件的中断请求源即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。 当CPU正在处理一个中断源请求的时候执行相应的中断服务程序发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序转而去处理优先级更高的中断请求源处理完以后再回到原低级中断服务程序这样的过程称为中断嵌套。这样的中断系统称为多级中断系统没有中断嵌套功能的中断系统称为单级中断系统。 STC89C52系列单片机提供了8个中断请求源它们分别是外部中断0INT0、定时器0中断、外部中断1INT1、定时器1中断、串口UART中断、定时器2中断、外部中断2INT2、外部中断3NT3。所有的中断都具有4个中断优先级。用户可以用关总中断允许位EA/IE.7或相应中断的允许位来屏蔽所有的中断请求也可以用打开相应的中断允许位来使CPU响应相应的中断申请每一个中断源可以用软件独立地控制为开中断或关中断状态每一个中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断反之低优先级的中断请求不可以打断高优先级及同优先级的中断。当两个相同优先级的中断同时产生时将由查询次序来决定系统先响应哪个中断。STC89C52系列单片机的各个中断查询次序如下表所示 通过设置新增加的特殊功能寄存器IPH中的相应位可将中断优先级设为四级如果只设置IP或XICON那么中断优先级就只有两级与传统8051单片机两级中断优先级完全兼容。 中断优先级控制寄存器IP和IPH的各位都由可用户程序置“1”和清“0。但IP寄存器可位操作所以可用位操作指令或字节操作指令更新IP的内容。而IPH寄存器的内容只能用字节操作指令来更新。STC89C52系列单片机复位后IP和IPH均为00H各个中断源均为低优先级中断。 如果使用C语言编程中断查询次序号就是中断号例如
中断结构 外部中断 外部中断0INT0、外部中断1INT1、外部中断2INT2和外部中断3INT3既可低电平触发也可下降沿触发。请求四个外部中断的标志位是位于寄存器TCON中的IE0/TCON.1、IE1/TCON.3IE2/XICON.2和IE3/XICON.5当外部中断服务程序被响应后中断请求标志位IE0IE1IE2和IE3会自动被清0TCON寄存器中的ITO/TCON.0IT1/TCON.2IT2/XICON.0和IT3/XICON.4决定了外部中断0、1、2和3是低电平触发方式还是下降沿触发方式。如果ITx 0x 0123那么系统在INTxx 0123脚探测到低电平后可产生外部中断。如果ITx 1x0123那么系统在INTxx 0123脚探测下降沿后可产生外部中断。外部中断0INT0、外部中断1INT1、外部中断2INT2和外部中断3NT3还可以用于将单片机从掉电模式唤醒。 定时器中断 定时器0和1的中断请求标志位是TF0和TF1当定时器寄存器THx/TLxx 01溢出时溢出标志位TFxx 01会被置位定时器中断发生。当单片机转去执行该定时器中断时定时器的溢出标志位TFxx01会被硬件清除。 定时器2的中断请求标志位是TF2和EXF2当定时器寄存器TH2/TL2溢出时溢出标志位TF2会被置位定时器中断发生。当单片机转去执行该定时器中断时定时器的溢出标志位TF2会被硬件清除。当EXEN21且T2EX的负跳变产生捕获或重装时EXF2置位。定时器2中断使能时EXF21也将使CPU从中断向量处执行定时器2中断子程序。 串口中断 当串行口接收中断请求标志位RI和串行口1发送中断请求标志位TI中的任何一个被置为后串行口中断都会产生。
中断优先级 STC89C52系列单片机的所有的中断都具有4个中断优先级对于这些中断请求源可编程为高优先级中断或低优先级中断可实现两级中断服务程序嵌套。一个正在执行的低优先级中断能被高优先级中断所中断但不能被另一个低优先级中断所中断一直执行到结束遇到返回指令RETI返回主程序后再执行一条指令才能响应新的中断申请。以上所述可归纳为下面两条基本规则 1低优先级中断可被高优先级中断所中断反之不能。 2任何一种中断不管是高级还是低级一旦得到响应不会再被它的同级中断所中断 当同时收到几个同一优先级的中断要求时哪一个要求得到服务取决于内部的查询次序。这相当于在每个优先级内还同时存在另一个辅助优先级结构STC89C52系列单片机各中断优先查询次序如下
中断处理
当某中断产生而且被CPU响应主程序被中断接下来将执行如下操作
当前正被执行的指令全部执行完毕PC值被压入栈现场保护阻止同级别其他中断将中断向量地址装载到程序计数器PC执行相应的中断服务程序。 中断服务程序ISR完成和该中断相应的一些操作。ISR以RETI中断返回指令结束将PC值从栈中取回并恢复原来的中断设置之后从主程序的断点处继续执行。 当某中断被响应时被装载到程序计数器PC中的数值称为中断向量是同该中断源相对应的中断服务程序的起始地址。各中断源服务程序的入口地址即中断向量为 当“转去执行中断”时引起中断的标志位将被硬件自动清零。由于中断向量入口地址位于程序存储器的开始部分所以主程序的第1条指令通常为跳转指令越过中断向量区LJMP MAIN. 注意不能用RET指令代替RETI指令 RET指令虽然也能控制PC返回到原来中断的地方但RET指令没有清零中断优先级状态触发器的功能中断控制系统会认为中断仍在进行其后果是与此同级或低级的中断请求将不被响应。 若用户在中断服务程序中进行了入栈操作则在RETI指令执行前应进行相应的出栈操作即在中断服务程序中PUSH指令与POP指令必须成对使用否则不能正确返回断点。