




文档简介
第六章中断系统第六章中断系统 第六章中断系统第六章中断系统 第六章中断系统第六章中断系统 6.1 中断概述 6.2 中断源 6.3中断控制 6.4中断响应 6.5中断请求的撤除 6.6 中断控制编程实例 第六章中断系统第六章中断系统 6.1 中断概述中断概述 6.1.1中断概念的引入中断概念的引入 中断技术最初是为计算机处理外界随机事件而出 现的。通常计算机中只有一个CPU,但除了运行程序之 外,CPU还要面临数据输入输出以及其它随机事件的处 理。能够处理这种随机的、突发的事件就需要中断技 术。 中断技术最初是为计算机处理外界随机事件而出 现的。通常计算机中只有一个CPU,但除了运行程序之 外,CPU还要面临数据输入输出以及其它随机事件的处 理。能够处理这种随机的、突发的事件就需要中断技 术。 第六章中断系统第六章中断系统 6.1 中断概述中断概述 6.1 中断概述中断概述 6.1.1中断概念的引入中断概念的引入 6.1.2有关中断的名词有关中断的名词 当单片机的CPU正在处理某事件时,若外部发生了某一事 件(如定时器溢出、引脚上电平变化),请求CPU迅速去处理, 于是CPU就暂时中止当前的工作,转去处理所发生的事件。中 断处理完该事件后,再回到原来被中止的地方,继续执行原来 的工作,实现这种功能的部件称为中断系统。产生中断的请求 源称为 当单片机的CPU正在处理某事件时,若外部发生了某一事 件(如定时器溢出、引脚上电平变化),请求CPU迅速去处理, 于是CPU就暂时中止当前的工作,转去处理所发生的事件。中 断处理完该事件后,再回到原来被中止的地方,继续执行原来 的工作,实现这种功能的部件称为中断系统。产生中断的请求 源称为中断源中断源。中断源向CPU提出的处理请求,称为。中断源向CPU提出的处理请求,称为中断请求 或中断申请 中断请求 或中断申请。CPU暂时中断自身的事务,转去处理事件的过程, 称为CPU的 。CPU暂时中断自身的事务,转去处理事件的过程, 称为CPU的中断响应过程中断响应过程。对事件的整个处理过程,称为。对事件的整个处理过程,称为中断 服务(或中断处理) 中断 服务(或中断处理)。处理完毕,再回到原来被中止的地方,称 为 。处理完毕,再回到原来被中止的地方,称 为中断返回中断返回。 第六章中断系统第六章中断系统 6.1 中断概述中断概述 PIC16F877单片机具有实时处理功能,能对外界异常发生 的事件由中断技术作及时处理。把这种现象上升到计算机理论, 就是一个资源(CPU)面对多项任务,由于资源有限,因此就可 能出现资源竞争的局面。而中断技术就是解决资源竞争的有效 办法,采用中断方法可以使多项任务共享一个资源,所以中断 技术实质上就是一种资源共享技术。 PIC16F877单片机具有实时处理功能,能对外界异常发生 的事件由中断技术作及时处理。把这种现象上升到计算机理论, 就是一个资源(CPU)面对多项任务,由于资源有限,因此就可 能出现资源竞争的局面。而中断技术就是解决资源竞争的有效 办法,采用中断方法可以使多项任务共享一个资源,所以中断 技术实质上就是一种资源共享技术。 PIC16F87X系列单片机是芯片内部包含有外围设备模块数 量最多的单片机品种之一。例如PIC16F874和PIC16F877单片机 的芯片内部就集成了15个外围设备模块;这些外围设备模块在 启用时以及在工作过程中,都或多或少地需要CPU参与控制、 协调或交换数据等各种服务工作。由于CPU的运行速度非常高, 而各个外围设备模块的工作速度却非常低,况且这些外围设备 模块也不是频繁地要求CPU对其服务。因此,采用中断技术可 以让众多外围设备模块共享1个CPU。 PIC16F87X系列单片机是芯片内部包含有外围设备模块数 量最多的单片机品种之一。例如PIC16F874和PIC16F877单片机 的芯片内部就集成了15个外围设备模块;这些外围设备模块在 启用时以及在工作过程中,都或多或少地需要CPU参与控制、 协调或交换数据等各种服务工作。由于CPU的运行速度非常高, 而各个外围设备模块的工作速度却非常低,况且这些外围设备 模块也不是频繁地要求CPU对其服务。因此,采用中断技术可 以让众多外围设备模块共享1个CPU。 第六章中断系统第六章中断系统 6.2 中断源中断源 中断源种类中断源志位中断源屏蔽位873/ 876874/ 877870871872 外部触发中断INTINTFINTE TMR0溢出中断T0IFT0IE RB端口电平变化中断RBIFRBIE TMR1溢出中断TMR1IFTMR1IE TMR2中断TMR2IFTMR2IE CCP1中断CCP1IFCCP1IE CCP2中断CCP2IFCCP2IE 第六章中断系统第六章中断系统 6.2 中断源中断源 SCI同步发送中断TXIFTXIE SCI同步接收中断RCIFRCIE SSP中断SSPIFSSPIE SSP I2C总线碰撞中 断 BCLIFBCLIE 并行端口中断PSPIFPSPIE A/D转换中断ADIFADIE E2PROM中断EEIFEEIE 13种14种10种11种10种 第六章中断系统第六章中断系统 6.2 中断源中断源 6.2.1外部中断类外部中断类 外中断是由外部随机事件引起的,它通常用于I/O资料传送 以及掉电等外部异常事件的处理。PIC16F87X系列单片共有两 个外中断源,一个是RBO/INT引脚上的外部中断,一个是PORTB 口引脚电平变化中断。 外中断是由外部随机事件引起的,它通常用于I/O资料传送 以及掉电等外部异常事件的处理。PIC16F87X系列单片共有两 个外中断源,一个是RBO/INT引脚上的外部中断,一个是PORTB 口引脚电平变化中断。 1INT中断1INT中断 RBO/INT引脚上的外部中断由边沿触发,既可以是上升沿 触发,又可以是下降沿触发,主要由选择寄存器OPTION_REG的 D6位INTEDG决定。当INTEDG位被置1时,选用上升沿触发,如 该位被清零,则由下降沿触发。当检测到引脚上有规定的有效 边沿时,便把INTF位置1。外中断INT由中断控制位INTE设置允 许或禁止。外中断INT可以唤醒在休眠状态下的CPU。 RBO/INT引脚上的外部中断由边沿触发,既可以是上升沿 触发,又可以是下降沿触发,主要由选择寄存器OPTION_REG的 D6位INTEDG决定。当INTEDG位被置1时,选用上升沿触发,如 该位被清零,则由下降沿触发。当检测到引脚上有规定的有效 边沿时,便把INTF位置1。外中断INT由中断控制位INTE设置允 许或禁止。外中断INT可以唤醒在休眠状态下的CPU。 第六章中断系统第六章中断系统 6.2 中断源中断源 2PORTB口引脚电平变化中断2PORTB口引脚电平变化中断 在PORTB口的D7D4引脚上一旦有电平变化,就会把RBIF 置1。这个中断可以通过对RBIE置1或清零来控制该中断是否开 放。 在PORTB口的D7D4引脚上一旦有电平变化,就会把RBIF 置1。这个中断可以通过对RBIE置1或清零来控制该中断是否开 放。 6.2.2 定时中断类定时中断类 定时中断是为满足定时或计数的需要而设置的。为此,在 单片机芯片内部有三个定时器 定时中断是为满足定时或计数的需要而设置的。为此,在 单片机芯片内部有三个定时器/计数器。以对其中的技术结构进 行技术的方法,实现定时或计数功能。当技术结构发生计数溢 出时,既表明定时时间到或计数值已满,这时就以计数溢出信 号去置位溢出标志位,作为单片机接受中断请求的标志。这种 中断请求是在单片机芯片内部发生的,因此无需在芯片上设置 引入端。 计数器。以对其中的技术结构进 行技术的方法,实现定时或计数功能。当技术结构发生计数溢 出时,既表明定时时间到或计数值已满,这时就以计数溢出信 号去置位溢出标志位,作为单片机接受中断请求的标志。这种 中断请求是在单片机芯片内部发生的,因此无需在芯片上设置 引入端。 第六章中断系统第六章中断系统 6.2 中断源中断源 1TMRO中断中断 当定时器TMRO的计数器计满溢出(即由FFH变成00H)时,硬 件自动把TOIF置1。TMRO中断可以通过对TOIE置1或清零来控制 该中断是否开放。 当定时器TMRO的计数器计满溢出(即由FFH变成00H)时,硬 件自动把TOIF置1。TMRO中断可以通过对TOIE置1或清零来控制 该中断是否开放。 2TMR1中断中断 当定时器TMR1的计数器计满溢出(即由FFFFH变成0000H)时, 硬件自动把TMR1IF置1。TMR1中断可以通过对TMR1IE置1或清零 来控制该中断是否开放。 当定时器TMR1的计数器计满溢出(即由FFFFH变成0000H)时, 硬件自动把TMR1IF置1。TMR1中断可以通过对TMR1IE置1或清零 来控制该中断是否开放。 3TMR2中断中断 当定时器TMR2的计数值与PR2匹配时,硬件自动把TMR2IF置 1。TMR2中断可以通过对TMR2IE置1或清零来控制该中断是否开 放。 当定时器TMR2的计数值与PR2匹配时,硬件自动把TMR2IF置 1。TMR2中断可以通过对TMR2IE置1或清零来控制该中断是否开 放。 第六章中断系统第六章中断系统 6.3中断控制中断控制 中断控制是指提供给用户的使用中断系统的手段。 由于中断系统处于单片机芯片的内部,因此用户只能 以软件方法,通过设置状态位来使用中断系统。为 此 中断控制是指提供给用户的使用中断系统的手段。 由于中断系统处于单片机芯片的内部,因此用户只能 以软件方法,通过设置状态位来使用中断系统。为 此,PIC16F87X系列单片机设置了一些控制寄存器。与 中断控制有关的寄存器共 PIC16F87X系列单片机设置了一些控制寄存器。与 中断控制有关的寄存器共6个,即中断控制寄存器 ( 个,即中断控制寄存器 (INTCON)、选项寄存器()、选项寄存器(POTION-REG)、外围 接口中断允许寄存器 )、外围 接口中断允许寄存器1(PIE1)、外围接口中断标志 寄存器 )、外围接口中断标志 寄存器1(PIR1)、外围接口中断标志寄存器)、外围接口中断标志寄存器2 (PIR2)、外围接口中断允许寄存器2(PIE2)、外围接口中断允许寄存器2(PIE2) 第六章中断系统第六章中断系统 6.3中断控制中断控制 6.3.1中断控制寄存器中断控制寄存器 1 中断控制寄存器(1 中断控制寄存器(INTCON):中断控制寄存 器是一个可读写的 ):中断控制寄存 器是一个可读写的8位寄存器。位寄存器。 R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x GIEPEIET0IEINTERBIET0IFINTF RBI F D7 D6 D5 D4 D3 D2 D1 D0 第六章中断系统第六章中断系统 0:屏蔽所有的中断请求; 1:允许非屏蔽的中断。 0:屏蔽所有外围接口的中断请求; 1:允许非屏蔽的中断。 1:允许定时器0溢出时中断; 0:禁止定时器0溢出时中断。 1:允许响应由RB0/INT输入的外中 断; 0:禁止响应由RB0/INT 输入的外中 断。 1:允许端口RB状态变化中断; 0:禁止端口RB状态变化中断 1:TMR0溢出, 0:TMR0无溢出 0:表示RB7:RB4中没有发生 状态变化的。 1:表示RB7:RB4中有发生状 态变化的。 1:有外中断发生时, 0:无外中断发生时 B7B6B5B4B3B2B1B0 GIE PEIE T0IEINTE RBIET0IFINTFRBIF 第六章中断系统第六章中断系统 6.3中断控制中断控制 2第一外围接口中断允许寄存器第一外围接口中断允许寄存器1(PIE1) 第一外围接口中断允许寄存器第一外围接口中断允许寄存器1(PIE1)的内容是各 个外部接口中断的允许位。它是一个可读 )的内容是各 个外部接口中断的允许位。它是一个可读/写操作的写操作的8 位寄存器位寄存器 R/W -0 R/W-0 R/W -0 R/W-0 R/W-0 R/W -0 R/W -0 R/W-0 PSPIEADIERCIETXIESSPIECCP1IETMR2IETMR1IE B7 B6 B5 B4 B3 B2 B1 B0 第六章中断系统第六章中断系统 1:表示读或写操作已经发生 ; 0:没有读/写操作。 1:表示A/D转换完成, 0:表示A/D转换正在进行, 尚未完成。 1:表示USART接收缓冲器满 , :,表示接收缓冲器空。 1:表示USART发送缓冲器是 空的, 0:表示发送缓冲器满。 1:表示TMR1寄存器溢出;0 :没有产生溢出。 1:表示出现了TMR2与PR2匹 配; 0:表示未出现了TMR2 与PR2匹配; 1:表示SSP中断条件已经发 生; 0:表示没有SSP中断出现。 1:表示TMR1寄存器出现捕捉 功能, 0:表示TMR1寄存器未出现捕 捉功能, B7B6B5B4B3B2B1B0 PSPIEADIERCIETXIE SSPIECCP1IETMR2IETMR1IE 第六章中断系统第六章中断系统 6.3中断控制中断控制 3 第一外围接口中断标志寄存器第一外围接口中断标志寄存器1(PIR1) 第一外围接口中断标志寄存器第一外围接口中断标志寄存器1(PIR1)的内容是各 个外部接口有中断时的标志位。 )的内容是各 个外部接口有中断时的标志位。 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PSPIFADIFRCIFTXIFSSPIF CCP1I F TMR2IFTMR1IF B7 B6 B5 B4 B3 B2 B1 B0 第六章中断系统第六章中断系统 1:表示读或写操作已经发生 ; 0:没有读/写操作。 1:表示A/D转换完成, 0:表示A/D转换正在进行, 尚未完成。 1:表示USART接收缓冲器满 , :,表示接收缓冲器空。 1:表示USART发送缓冲器是 空的, 0:表示发送缓冲器满。 1:表示TMR1寄存器溢出;0 :没有产生溢出。 1:表示出现了TMR2与PR2匹 配; 0:表示未出现了TMR2 与PR2匹配; 1:表示SSP中断条件已经发 生; 0:表示没有SSP中断出现。 1:表示TMR1寄存器出现捕捉 功能, 0:表示TMR1寄存器未出现捕 捉功能, B7B6B5B4B3B2B1B0 PSPIFADIE F RCIFTXIF SSPIFCCP1IFTMR2IFTMR1IF 第六章中断系统第六章中断系统 6.3中断控制中断控制 4第二外围接口中断允许寄存器2(PIE2)4第二外围接口中断允许寄存器2(PIE2) 第二外围接口中断允许寄存器2(PIE2)的内容包括 CCP2外部接口中断允许位、SSP总线碰撞中断允许位、 EEPROM写操作中断允许位。 第二外围接口中断允许寄存器2(PIE2)的内容包括 CCP2外部接口中断允许位、SSP总线碰撞中断允许位、 EEPROM写操作中断允许位。 U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 保留EEIEBCLIECCP2IE B7 B6 B5 B4 B3 B2 B1 B0 第六章中断系统第六章中断系统 1:允许EEPROM写操作中断 ; 0:屏蔽EEPROM写操作中断 。 1:允许总线碰撞中断; 0:屏蔽总线碰撞中断。 1:允许CCP2中断; 0:屏蔽CCP2中断。 B7B6B5B4B3B2B1B0 保留EEIEBCLIECCP2IE 第六章中断系统第六章中断系统 6.3中断控制中断控制 5 第二外围接口中断标志寄存器第二外围接口中断标志寄存器2(PIR2) 第二外围接口中断标志寄存器第二外围接口中断标志寄存器2(PIR2)的内容为)的内容为 CCP2外部接口中断、外部接口中断、SSP总线碰撞中断允许位和总线碰撞中断允许位和 EEPROM写操作中断的标志位。写操作中断的标志位。 U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 保留EEIFBCLIFCCP2IF B7 B6 B5 B4 B3 B2 B1 B0 第六章中断系统第六章中断系统 1:表示EEPROM写操作 完成0,表示0:写操作 没有完成或没有写操作 。 1:总线发生碰撞; 1:没有碰撞。 1:在捕捉模式,表示 TMR1寄存器捕捉出现; 0:在捕捉模式,表示 TMR1寄存器未捕捉出现 。 B7B6B5B4B3B2B1B0 保留EEIFBCLIFCCP2IF 第六章中断系统第六章中断系统 6.3中断控制中断控制 6.3.2中断系统的状态设置中断系统的状态设置 在在PIC16F87X系列单片机应用中,用户通过上述 六个控制寄存器来使用中断系统,因此从使用的角度 上看,这六个寄存器就是面向用户的 系列单片机应用中,用户通过上述 六个控制寄存器来使用中断系统,因此从使用的角度 上看,这六个寄存器就是面向用户的PIC16F87X系列 单片机中断系统。对中断系统的使用是通过设置有关 寄存器有关位的状态来实现的。外部中断的状态设置 共有三项内容,即:中断总允许、外部中断允许和中 断请求方式设定。但定时 系列 单片机中断系统。对中断系统的使用是通过设置有关 寄存器有关位的状态来实现的。外部中断的状态设置 共有三项内容,即:中断总允许、外部中断允许和中 断请求方式设定。但定时/计数中断没有中断请求方式 设定,只有中断允许的设定。 计数中断没有中断请求方式 设定,只有中断允许的设定。 中断状态设置通常是在初始化程序段中进行。中断状态设置通常是在初始化程序段中进行。 第六章中断系统第六章中断系统 6.3中断控制中断控制 6.3.3中断系统控制机构中断系统控制机构 第六章中断系统第六章中断系统 6.3中断控制中断控制 (1)每一种中断源对应着1个中断标志位和1个中断屏 蔽位: (1)每一种中断源对应着1个中断标志位和1个中断屏 蔽位: 中断源产生的中断标志信号是否得以向前传递,将受控于 对应的中断屏蔽位。每一个中断标志位都对应着1个触发器。当 中断源申请CPU中断时,与之对应的中断标志触发器就由硬件 自动置位,而该触发器的清零是由用户安排程序来实现的;每 一个中断屏蔽位也对应着1个触发器。该触发器的置位和清零均 是由用户程序完成的。 中断源产生的中断标志信号是否得以向前传递,将受控于 对应的中断屏蔽位。每一个中断标志位都对应着1个触发器。当 中断源申请CPU中断时,与之对应的中断标志触发器就由硬件 自动置位,而该触发器的清零是由用户安排程序来实现的;每 一个中断屏蔽位也对应着1个触发器。该触发器的置位和清零均 是由用户程序完成的。 (2)全部14个中断源按2个梯队并列排开:(2)全部14个中断源按2个梯队并列排开: 第1梯队中只安排了3个中断源,其余的中断源全部安排到 第2梯队中。这样做是为了与早期的PIC系列单片机型号相兼容。 第1梯队中只安排了3个中断源,其余的中断源全部安排到 第2梯队中。这样做是为了与早期的PIC系列单片机型号相兼容。 第六章中断系统第六章中断系统 6.3中断控制中断控制 (3)所有的中断源都受全局中断屏蔽位(也可以称为 总屏蔽位)GIE的控制。: 3)所有的中断源都受全局中断屏蔽位(也可以称为 总屏蔽位)GIE的控制。: 第1梯队的中断源不仅受全局中断屏蔽位的控制, 还要受各自中断屏蔽位的控制;第2梯队的中断源不仅 受到全局中断屏蔽位和各自中断屏蔽位的控制,还要 额外受到1个外设中断屏蔽位PEIE的控制。 第1梯队的中断源不仅受全局中断屏蔽位的控制, 还要受各自中断屏蔽位的控制;第2梯队的中断源不仅 受到全局中断屏蔽位和各自中断屏蔽位的控制,还要 额外受到1个外设中断屏蔽位PEIE的控制。 第六章中断系统第六章中断系统 6.4中断响应中断响应 中断响应中断响应就是CPU对中断源提出的中断请求的承认 或接受。中断请求被响应后,转向相应的中断服务程 序,完成中断所要求的处理操作。 就是CPU对中断源提出的中断请求的承认 或接受。中断请求被响应后,转向相应的中断服务程 序,完成中断所要求的处理操作。 6.4.1外部中断请求采样外部中断请求采样 只有外部中断才有中断请求的采样问题。只有外部中断才有中断请求的采样问题。所谓中 断请求采样, 所谓中 断请求采样,实际上就是识别有效的外部中断请求信 号,并把它锁定在控制寄存器的相应标志位中。 实际上就是识别有效的外部中断请求信 号,并把它锁定在控制寄存器的相应标志位中。 第六章中断系统第六章中断系统 6.4中断响应中断响应 6.4中断响应中断响应 6.4.1外部中断请求采样外部中断请求采样 对于脉冲方式的RBO/INT外中断请求,若在两个相邻机器周 期采样得到的是先高后低电平(设为下降沿触发),则中断请求 有效,把INTF置1;否则,INTF继续为0。可见在脉冲方式下, 为保证中断请求有效,中断请求脉冲高低电平的持续时间应在4 个晶振周期以上。 对于脉冲方式的RBO/INT外中断请求,若在两个相邻机器周 期采样得到的是先高后低电平(设为下降沿触发),则中断请求 有效,把INTF置1;否则,INTF继续为0。可见在脉冲方式下, 为保证中断请求有效,中断请求脉冲高低电平的持续时间应在4 个晶振周期以上。 对于电平方式的外中断请求,若采得电平没有变化,表明 没有中断请求, 对于电平方式的外中断请求,若采得电平没有变化,表明 没有中断请求, INTCON寄存器的外中断请求标志位RBIF继续 为0;若一旦采得电平有变化,则中断请求有效,把RBIF置1。 寄存器的外中断请求标志位RBIF继续 为0;若一旦采得电平有变化,则中断请求有效,把RBIF置1。 对于发生在单片机芯片内部的中断请求,并直接置位相应的中 断请求标志位,因此不存在中断请求采样的问题。 对于发生在单片机芯片内部的中断请求,并直接置位相应的中 断请求标志位,因此不存在中断请求采样的问题。 第六章中断系统第六章中断系统 6.4中断响应中断响应 6.4.2中断查询中断查询 采样解决的是外中断请求的锁定问题。即把有 效的外中断请求信号锁定在各中断请求标志位中。紧 接着的问题是CPU如何知道中断请求的发生?由于中断 请求已汇集到各中断请求标志位,因此只需通过CPU对 中断请求标志位的查询。通常把这种查询称之为中断 请求标志位进行查询。如果查询到有标志位为1,则表 明有中断请求发生,因此从紧接着的一个指令周期内 开始进行中断响应。 采样解决的是外中断请求的锁定问题。即把有 效的外中断请求信号锁定在各中断请求标志位中。紧 接着的问题是CPU如何知道中断请求的发生?由于中断 请求已汇集到各中断请求标志位,因此只需通过CPU对 中断请求标志位的查询。通常把这种查询称之为中断 请求标志位进行查询。如果查询到有标志位为1,则表 明有中断请求发生,因此从紧接着的一个指令周期内 开始进行中断响应。 第六章中断系统第六章中断系统 6.4中断响应中断响应 6.4.3 中断响应中断响应 1中断响应的时间分析中断响应的时间分析 所谓中断响应时间是指从中断请求有效(中断请求标志 位置1),到CPU响应中断所需的时间。 所谓中断响应时间是指从中断请求有效(中断请求标志 位置1),到CPU响应中断所需的时间。 第六章中断系统第六章中断系统 6.4中断响应中断响应 6.4.3 中断响应中断响应 1中断响应的时间分析中断响应的时间分析 (1)从INT中断信号上升沿有效到引发中断标志位 INTIF被置位 (1)从INT中断信号上升沿有效到引发中断标志位 INTIF被置位 假设预先设定的是INT中断信号上升沿有效的话,则该 信号的上升沿将会在1个时钟周期后引发中断标志位 INTIF被置位。 假设预先设定的是INT中断信号上升沿有效的话,则该 信号的上升沿将会在1个时钟周期后引发中断标志位 INTIF被置位。 (2)INT中断信号被CPU检测(2)INT中断信号被CPU检测 每个指令周期内的第2个时钟脉冲上升沿时,该信号被 抽检1次。 每个指令周期内的第2个时钟脉冲上升沿时,该信号被 抽检1次。 (3)CPU清全局中断屏蔽位清全局中断屏蔽位GIE 第六章中断系统第六章中断系统 6.4中断响应中断响应 6.4.3 中断响应中断响应 1中断响应的时间分析中断响应的时间分析 (4)程序计数器PC被置入中断向量0004H,完成跳转。4)程序计数器PC被置入中断向量0004H,完成跳转。 在在GIE信号被清零的下一个指令周期内,程序计数器信号被清零的下一个指令周期内,程序计数器 PC被置入中断向量被置入中断向量0004H,见图,见图6-3中第中第6行。同时在 该指令周期内完成到中断服务程序的跳转,并且实现 提取该子程序的首条指令,即指令(0004H),见图6- 3中第7行。 行。同时在 该指令周期内完成到中断服务程序的跳转,并且实现 提取该子程序的首条指令,即指令(0004H),见图6- 3中第7行。 (5)执行中断服务程序(5)执行中断服务程序 在其后的在其后的1个指令周期内,正式开始执行中断服务程序 的第 个指令周期内,正式开始执行中断服务程序 的第1条指令,见图条指令,见图6-3中第中第8行。行。 第六章中断系统第六章中断系统 6.4中断响应中断响应 2中断过程中断过程 (1)中断发出申请,并建相应中断标志。(1)中断发出申请,并建相应中断标志。 (2)CPU停止当前工作,响应中断。(2)CPU停止当前工作,响应中断。 (3)断点保存,保护现,信息压场栈。(3)断点保存,保护现,信息压场栈。 (4)执行中断服务程序。(4)执行中断服务程序。 (5)恢复现场,弹栈。(5)恢复现场,弹栈。 (6)中断返回。(6)中断返回。 第六章中断系统第六章中断系统 6.4中断响应中断响应 3中断的现场保护问题中断的现场保护问题 中断现场的保护是中断技术中一个很重要的环节。 PIC单片机采用的是硬件堆栈,即在进入中断服务程序 期间,只将程序计数器PC的值被自动压入堆栈。若需 要保留其他寄存器的内容,就得由程序员另想办法。 一般是用一段用户程序来实现现场保护的功能。 中断现场的保护是中断技术中一个很重要的环节。 PIC单片机采用的是硬件堆栈,即在进入中断服务程序 期间,只将程序计数器PC的值被自动压入堆栈。若需 要保留其他寄存器的内容,就得由程序员另想办法。 一般是用一段用户程序来实现现场保护的功能。 现场保护的内容随不同的软件系统而不同。首先, 程序的执行有可能会影响到W寄存器和STATUS寄存器, 所以,首先应该把这2个寄存器保护起来,然后再去保 存其他用户认为有必要保护的寄存器。 现场保护的内容随不同的软件系统而不同。首先, 程序的执行有可能会影响到W寄存器和STATUS寄存器, 所以,首先应该把这2个寄存器保护起来,然后再去保 存其他用户认为有必要保护的寄存器。 第六章中断系统第六章中断系统 6.4中断响应中断响应 3中断的现场保护问题中断的现场保护问题 在在PIC单片机中,中断现场数据不是保留到芯片的 堆栈存储区中,而是保留在用户自己选择的一些文件 寄存器中,当然一般应该选择通用寄存器来保护现场 。 单片机中,中断现场数据不是保留到芯片的 堆栈存储区中,而是保留在用户自己选择的一些文件 寄存器中,当然一般应该选择通用寄存器来保护现场 。 下面是将W、STATUS和PCLATH寄存器的内容保存到 临时备份寄存器中的中断现场保护程序。 下面是将W、STATUS和PCLATH寄存器的内容保存到 临时备份寄存器中的中断现场保护程序。 MOVWFW_TEMP;将W内容送暂存器保存MOVWFW_TEMP;将W内容送暂存器保存 SWAPFSTATUS,W;将状态寄存器送SWAPFSTATUS,W;将状态寄存器送 CLRF STATUS;选存储体0CLRF STATUS;选存储体0 MOVWFSTATUS_TEMP;保护状态寄存器内容MOVWFSTATUS_TEMP;保护状态寄存器内容 第六章中断系统第六章中断系统 6.4中断响应中断响应 3中断的现场保护问题中断的现场保护问题 MOVF PCLATH,W;保护PCLATH内容MOVF PCLATH,W;保护PCLATH内容 MOVWFPCLATH_TEMPMOVWFPCLATH_TEMP CLRF PCLATH;选择程序存储器0页CLRF PCLATH;选择程序存储器0页 ;中断服务程序;中断服务程序 MOVF PCLATH_TEMP,W ;恢复PCLATHMOVF PCLATH_TEMP,W ;恢复PCLATH MOVWFPCLATHMOVWFPCLATH SWAPFSTATUS_TEMP;恢复状态寄存器内容SWAPFSTATUS_TEMP;恢复状态寄存器内容 MOVWFSTATUSMOVWFSTATUS SWAPFW_TEMP,FSWAPFW_TEMP,F SWAPFW_TEMP,W ;恢复W内容SWAPFW_TEMP,W ;恢复W内容 第六章中断系统第六章中断系统 6.4中断响应中断响应 4中断嵌套中断嵌套 当CPU相应的任何一个中断时,全局中断屏蔽位GIE 将会自动清0;当中断返回时它又会自动恢复为1。如 果在中断处理期间用软件将已经复位的GIE重新置位, 这时再出现中断请求,就可以形成 当CPU相应的任何一个中断时,全局中断屏蔽位GIE 将会自动清0;当中断返回时它又会自动恢复为1。如 果在中断处理期间用软件将已经复位的GIE重新置位, 这时再出现中断请求,就可以形成中断嵌套中断嵌套。也就是 说,如果在响应某一中断期间又响应了其他中断请求, 就形成了中断嵌套。 。也就是 说,如果在响应某一中断期间又响应了其他中断请求, 就形成了中断嵌套。 发生中断嵌套时,前一中断处理过程被暂停而进 入后一中断处理,当后一中断过程被处理完毕之后, 才会继续处理前一中断。照此方式,还可以形成多级 嵌套,甚至自身嵌套。不过嵌套的级数绝对不能超过 硬件堆栈的深度。 发生中断嵌套时,前一中断处理过程被暂停而进 入后一中断处理,当后一中断过程被处理完毕之后, 才会继续处理前一中断。照此方式,还可以形成多级 嵌套,甚至自身嵌套。不过嵌套的级数绝对不能超过 硬件堆栈的深度。 第六章中断系统第六章中断系统 6.5中断请求的撤除中断请求的撤除 中断响应后,中断请求应及时清除。否则,如果终 端请求仍然有效,会造成中断的重复响应。进入中断 服务程序后,程序中必须安排指令,检查发出请求的 中断源(如果同时开放多个中断源的话)。这可以通 过检查各个中断源的标志位来实现。一旦确定出发出 申请的中断源,就用软件把该中断源的标志位人为地 清零,否则,执行中断返回指令 中断响应后,中断请求应及时清除。否则,如果终 端请求仍然有效,会造成中断的重复响应。进入中断 服务程序后,程序中必须安排指令,检查发出请求的 中断源(如果同时开放多个中断源的话)。这可以通 过检查各个中断源的标志位来实现。一旦确定出发出 申请的中断源,就用软件把该中断源的标志位人为地 清零,否则,执行中断返回指令“RETFIERETFIE”。重开中断 后,由于中断标志位仍为 。重开中断 后,由于中断标志位仍为“1 1”而引起CPU重复响应同一 个中断请求。 而引起CPU重复响应同一 个中断请求。 第六章中断系统第六章中断系统 6.6 中断控制编程实例中断控制编程实例 【6-1】用定时器定时,由RB0输出2分钟的方波。已知 f 【6-1】用定时器定时,由RB0输出2分钟的方波。已知 fOSC OSC=4MHZ =4MHZ 解:要输出2分钟的方波,只要每隔1分钟使RB0求 反一次即可。但此例要求RB0输出方波的周期时间太长, 用一个定时器无法实现长时间定时,因此考虑用定时 器加软件计数的方法来实现。 解:要输出2分钟的方波,只要每隔1分钟使RB0求 反一次即可。但此例要求RB0输出方波的周期时间太长, 用一个定时器无法实现长时间定时,因此考虑用定时 器加软件计数的方法来实现。 具体做法是:用定时器TMR0定时10ms,用软件计数 实现定时一分钟。 具体做法是:用定时器TMR0定时10ms,用软件计数 实现定时一分钟。 20H单元作ms的计数单元:1s/10ms=100(64)次20H单元作ms的计数单元:1s/10ms=100(64)次 21H单元作s的计数单元:1min/1s=60(3C)次21H单元作s的计数单元:1min/1s=60(3C)次 第六章中断系统第六章中断系统 22H单元的D7位作分的计时的标志位。计时时间到后标 志位置1 22H单元的D7位作分的计时的标志位。计时时间到后标 志位置1 TMR0的计数初值为:X=TMR0的计数初值为:X=28t /(TP)=256-10000/ (1256)=D8H t /(TP)=256-10000/ (1256)=D8H 程序清单如下:程序清单如下: 第六章中断系统第六章中断系统 LISTP=16F873 INCLUDE“P16F873.INC“ MSECONDEQU20H;毫秒计时寄存器毫秒计时寄存器 SECONDEQU21H;秒计时寄存器秒计时寄存器 MINUTEEQU22H;分标志寄存器分标志寄存器 W_TEMPEQU23H;w临时寄存器临时寄存器 ORG0000H;复位矢量单元地址复位矢量单元地址 NOP;ICD必需的空操作必需的空操作 GOTOMAIN;跳转到主程序跳转到主程序 ORG0004H;中断矢量单元地址中断矢量单元地址 GOTOZD;跳转到中断程序跳转到中断程序 第六章中断系统第六章中断系统 START CLRFPORTB;清输出清输出B口口 BSFSTATUS,RP0;选择存储体选择存储体1 CLRFTRISB;设置设置B口输出口输出 MOVLW07H;设置分频器归设置分频器归TMR0,分频比分频比256 MOVWFOPTION_REG BCF STATUS,RP0;选择存储体选择存储体0 MOVLW0A0H;开中断开中断,开开TMR0中断中断 MOVWFINTCON MOVLW0D8H;赋赋TMR0初值初值,并启动并启动TMR0 MOVWFTMR0 MOVLW64H;赋毫秒计数器初值赋毫秒计数器初值 MOVWFMSECOND MOVLW3CH;设置秒计数寄存器数值设置秒计数寄存器数值; MOVWFSECOND CLRFMINUTE;清分标志位清分标志位 第六章中断系统第六章中断系统 ;-主程序主程序- MAIN BTFSSMINUTE,7;1分标志位置分标志位置1了吗?了吗? GOTOLOOP;1分钟时间未到分钟时间未到,等待等待 CLRFMINUTE;1分钟时间到分钟时间到,清分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年企业培训中心多媒体设备安装合同
- 二零二五版市政设施维修工程安全施工合同协议书
- 二零二五年度区块链技术应用股权转让担保标准合同9%
- 2025年度高端茶具批发与零售合同
- 二零二五年度内容创作者兼职劳务合同协议
- 2025版二手房装修工程验收与保修合同范本
- 麻疹与水痘的防治课件
- 二零二五年度商业厨房装修工程承包协议书
- 二零二五年度房地产项目分期付款及税收优惠政策合同
- 二零二五年度大型电子产品批发采购合同
- 2025年知识产权法律知识考试试题及答案
- 2025-2030年中国高压共轨(HPCR)燃油系统行业市场现状分析及竞争格局与投资发展研究报告
- 结直肠癌腹膜转移诊治专家共识(2025版)解读课件
- 2025年体育教师招聘考试真题及答案
- 动力能源公司试题及答案
- 钣金工放样基础知识课件
- 华为光芯片机考题库
- 中心静脉导管(CVC)的护理 课件
- 湘教版九年级下册数学1.1二次函数【课件】
- 深静脉血栓应急预案
- 2025年宪法知识竞赛题库及答案(共160题)
评论
0/150
提交评论