《MCS-51单片机的中断系统》由会员分享,可在线阅读,更多相关《MCS-51单片机的中断系统(23页珍藏版)》请在金锄头文库上搜索。
1、微机原理及应用第4章 MCS-51单片机 的中断系统 4.1 中断的概念 中断是指在CPU正在处理某项事务的时候, 如果外界或内部发生了紧急事件,要求CPU暂 停正在运行的工作转而去处理这个紧急事件, 待处理完后再回到原来被中断的地方,继续原 来被打断了的工作的过程。中断是计算机中一 个很重要的概念,中断技术的引入使计算机的 发展和应用都大大地推进了一步。可以说:没 有中断技术,就没有目前计算机的广泛应用。 中 断 服 务 程 序主 程 序继 续 主 程 序响应中断返回低 级 中 断主 程 序继 续 主 程 序中断返回高 级 中 断中断返回 4.2 8051中断系统结构及中断控制 MCS-51
2、系列单片机有5个中断源和 其相应的控制寄存器。 1. 中断源 产生中断的请求源叫中断源。 MCS-51系列单片机的5个中断源,包括2 个外部中断源和3个内部中断源。MCS-51系列单片机能提供两个中断优先 级,实现两级中断嵌套。振荡器和时序 OSC程序存储器 4KB ROM数据存储器 4KB RAM64KB总线扩展控制器可编程I/O可编程全双工 串行口8051CPU216位 定时器/计数器外时钟源内中断外中断控制并行口串行通信外部事件计数 1 MCS-51单片机总体构框图2个外部中断源是外部中断0和外部中断1,相应的中断请求信号 输入端是INT0和INT1。3个内部中断源是定时器/计数器0溢出
3、中断,定时器/计数器1溢出中断,串行口的发送 和接收中断(TI和RI)。 外部中断请求有两种触发方式:电 平触发和边沿触发。电平触发边沿触发高低 2. TCON寄存器 TCON是定时器/计数器0和1(T0、 T1)的控制寄存器,同时也用来锁存T0 、T1的溢出中断申请标志和外部中断请 求标志。TCON (88H)D7D6 D5D4 D3D2D1D0 TF1TF0IE1 IT1 IE0 IT0定时器/计数器1 定时器/计数器0 溢出中断请求标 志,由硬件置位。INT1、INT0 请求标志, 由硬件置位。INT1、INT0触发方式控制位 ,由软件置位或复位。IT1=0 时, INT1为电平触发,
4、IT1=1为边沿触发; IT0同理(对应INT0)。 3. SCON寄存器 SCON为串行口控制寄存器,其中的 低2位用作串行口中断请求标志 。 4 . 在MCS-51单片机中断系统中,中断的允 许或禁止是由片内的中断允许寄存器IE控制 的。IE (A8H)D7 D6D5 D4D3D2D1D0EAESET1EX1 ET0 EX0CPU中断允许标志位。 EA=0时,关中断; EA=1时,开中断。串口中断允许标志位。 EA=0时,关串口中断; EA=1时,开串口中断。T1、T0溢出中断 允许标志位。 ET1=0时,关T1中断; ET1=1时,开T1中断。 ET0同理(对应T0)。外部中断允许标志位
5、。 EX1=0时,关INT1中断; EX1=1时,开INT1中断。 EX0同理(对应INT0)。例:假设允许片内定时器/计数器中断,禁 止其他中断,设置相应的IE值。MOV IE, #8AH或SETB ET0SETB ET1 SETB EA 5 . MCS-51系列单片机的中断优先级控制是由 中断优先级寄存器IP控制的。 IP (B8H)D7 D6D5 D4D3D2D1D0 PSPT1PX1PT0 PX0 串口中断T1中断外部中断1T0中断外部中断0优先级可以用软件进行设置,单片机复位 后,IP中的各位均被清0。例:设8031的片外中断为高优先级,片内 中断为低优先级,设置IP相应的值。MOV
6、 IP, #05H或SETB PX0SETB PX1CLR PSCLR PT0CLR PT1MCS-51单片机中断系统应遵循的原则: 1、低优先级中断可被高优先级中断请求所中断,反之则不能。 2、同级的中断请求不能打断已经执行的同级中断。中断源自然优先级 外部中断0最高 定时器/计数器0 外部中断1 定时器/计数器1 串行口最低中断响应条件: 必须要有中断请求 中断源的中断允许位为1(即IE中的总允许位EA 1,且IE相应的中断允许位为1) 无同级或高级中断正在服务 现行指令执行完最后一个机器周期。 4.3 中断响应过程 CPU在每个机器周期的S5P2时刻采样 各中断源的中断请求信号,并将它锁
7、存 在TCON或SCON中的相应位。在下一个 机器周期对采样到的中断请求标志进行 查询。如果查询到中断请求标志,则按 优先级高低进行中断处理,中断系统将 通过硬件自动将相应的中断矢量地址装 入PC,以便进入相应的中断服务程序。 4.4 中断响应时间 在不同的情况下CPU响应中断的时间是不同 的。以外部中断为例,INT0和INT1引脚的电平在 每个机器周期的S5P2时刻经反相锁存到TCON 的IE0和IE1标志位,CPU在下一个机器周期才 会查询到新置入的IE0和IE1,如果满足响应条 件,CPU响应中断时要用两个机器周期执行一 条硬件长调用指令“LCALL”,由硬件完成将中 断矢量地址装入程序
8、指针PC中,使程序转入中 断矢量入口。因此,从产生外部中断到开始执 行中断程序至少需要三个完整的机器周期。 4.5 中断响应后中断请求的撤除 中断源提出中断申请,在CPU响应此中断请 求后,该中断源之中断请求在中断返回之前应 当撤除,以免引起重复中断,被再次响应。 对于边沿触发的外部中断,CPU在响应中断 后由硬件自动清除相应的中断请求标志IE0和 IE1。 对于电平触发的外部中断,必须外加硬件来 撤销中断请求。 对于定时器溢出中断,CPU在响应中断后就 由硬件消除了相应的中断请求标志TF0、TF1。 对于串行口中断,CPU在响应中断后并不自 动清除中断请求标志RI或TI,因此必须在中断 服务
9、程序中用软件来清除。中断系统应用举例: 外部中断源的扩展INT0装置1装置2装置3装置48051P1.4 P1.5 P1.6 P1.7ORG 0003H LJMP INT0 INT0: PUSH PSWPUSH ACCJB P1.7, DV1JB P1.6, DV2JB P1.5, DV3JB P1.4, DV4 GB: POP ACCPOP PSWRETI DV1: AJMP GB DV2: AJMP GB DV3: AJMP GB DV4: AJMP GB 设计一个程序,能够实时显示INT0引脚上出现的负跳变信号 的累计数。 主程序: ORG 0000HAJMP MAINORG 0003H
10、AJMP IP0ORG 0030H MAIN: MOV SP, #60HSETB IT0SETB EASETB EX0MOV R7, #00HLP: ACALL DISPAJMP LP 中断服务子程序: IP0: INC R7RETI中断程序举例:例:X1、X2、X3为3个故障输入,当系统无 故障时,它们全为低 电平,3个灯不亮;当某部分出现故障时, 其对应的输入端由低 电平变为高电平,从 而引起单片机中断, 并点亮对应的发光二 极管。主程序:ORG 0000HAJMP MAINORG 0003HAJMP SERVE MAIN: ORL P1, #0FFH ;P1口设初值,灯全灭 SETB IT0 ;选择边沿触发方式SETB EX0 ;允许INT0中断SETB EA ;开CPU中断SJMP $ ;等待中断 中断服务子程序: SERVE: JNB P1.0, L1 ;若X1无故障(P1.0=0),跳到L1CLR P1.3 ;点亮LED1 L1: JNB P1.1, L2 ;若X2无故障,跳到L2CLR P1.4 ;点亮LED2 L2: JNB P1.2, L3 ;若X3无故障,跳到L3CLR P1.5 ;点亮LED3 L3: RETI