第5章 STC15F2K60S2单片机中断系统ppt课件.ppt_第1页
第5章 STC15F2K60S2单片机中断系统ppt课件.ppt_第2页
第5章 STC15F2K60S2单片机中断系统ppt课件.ppt_第3页
第5章 STC15F2K60S2单片机中断系统ppt课件.ppt_第4页
第5章 STC15F2K60S2单片机中断系统ppt课件.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章STC15F2K60S2单片机中断系统 5 1中断的概念5 2STC15F2K60S2单片机的中断系统结构5 3中断允许及其优先级管理5 4单片机中断处理过程5 5中断的应用举例 5 1中断的概念 在单片机应用系统中 中断技术主要用于实时监测与控制 能对外界发生的事件进行及时的处理 中断系统是为使CPU具有对外界紧急事件的处理能力而设置的 当中央处理器CPU正在处理某件事的时候外界发生了紧急的事件请求 要求CPU暂停当前的工作 转而去处理这个紧急事件 处理完以后 再回到原来被中断的地方 断点 继续原来的工作 这样的过程称为中断 实现这种功能的部件称为中断系统 请求CPU中断的请求源称为中断源 单片机的中断系统有多个中断源 当几个中断源同时向CPU请求中断时 系统会根据其优先级来处理 即先响应中断优先级高的中断源 再响应优先级低的中断源 例如 若规定按键扫描处理优先于显示器输出处理 则CPU在处理显示内容的过程中 可以被按键的动作打断 转而处理键盘扫描问题 待扫描结束后再继续进行显示器处理过程 图5 1中断响应和处理过程 5 2STC15F2K60S2单片机的中断系统结构 5 2 1中断源STC15F2K60S2单片机中断系统共有14个中断源 分别为外部中断0 INT0 定时器T0中断 外部中断1 INT1 定时器T1中断 串口1中断 A D转换中断 低压检测中断 LVD CCP PWM PCA中断 串口2中断 SPI中断 外部中断2 外部中断3 定时器T2中断 外部中断4 除外部中断2 外部中断3 定时器T2中断 外部中断4 等4个中断源固定为最低优先级中断外 其它的中断源都具有2个中断优先级 可实现2级中断服务程序嵌套 STC15F2K60S2单片机中断系统结构示意图如图5 2所示 这些中断源与特殊功能寄存器TCON SCON S2CON CCON PCON ADC CONTR IE IE2 INT CLKO IP等有关 下面首先介绍与中断源有关的寄存器功能 STC15F2K60S2单片机中断系统结构示意图 5 2 2中断源标志寄存器1 TCON寄存器TCON寄存器为定时 计数器T0 T1的控制寄存器 该寄存器包括了T0和T1的溢出中断请求标志位TF0和TF1 也包括了外部中断0 INT0 和外部中断1 INT1 的中断请求标志位IE0和IE1 以及外部中断0和外部中断1的中断源的触发方式 TCON寄存器的字节地址为88H 可位寻址 其格式如下 TF1 定时 计数器T1的溢出中断标志位 当启动T1计数后 从初值开始计数 当产生溢出后由硬件将TF1置1 向CPU请求中断 一直保持到CPU响应中断时 才由硬件清0 TF1也可由软件清0 TR1 定时 计数器T1的运行控制位 当TR1为1时运行 为0时停止运行 TF0 定时 计数器T0溢出中断标志 其功能与TF1类似 TR0 定时 计数器T0的运行控制位 其功能与TR1类似 IE1 外部中断1请求源 INT1 P3 3 标志位 IE1为1时 外部中断1向CPU请求中断 当CPU响应该中断时由硬件将IE1清0 IT1 外部中断1中断触发方式选择位 当IT1为0时 INT1 P3 3引脚上的上升沿或下降沿均可触发外部中断1 IT1为1时 为下降沿触发方式 IE0 外部中断0请求源 INT0 P3 2 标志位 与IE1功能类似 IT0 外部中断0中断触发方式选择位 功能与IT1类似 2 SCON和S2CON寄存器SCON为串行口1控制寄存器 包括了串行口发送和接收中断的请求标志位TI和RI SCON寄存器的字节地址为98H 可位寻址 其格式如下 RI 串行口1接收中断标志 若串行口1允许接收且以方式0工作 则每当接收到第8位数据时置1 若以方式1 方式2或方式3工作且SM2 0时 则每当接收到停止位的中间时置1 当串行口以方式2或方式3工作且SM2 1时 则仅当接收到的第9位数据RB8为1后 同时还要接收到停止位的中间时置1 RI为1表示接收器已接收到一帧数据 串行口1正向CPU申请中断 接收中断 RI必须由用户的中断服务程序清0 TI 串行口1发送中断标志 串行口1以方式0发送时 每当发送完8位数据 由硬件置1 若以方式1 方式2或方式3发送时 在发送停止位的开始时置1 TI为1表示串行口已发送一帧数据 串行口1正在向CPU申请中断 发送中断 值得注意的是 CPU响应发送中断请求 转向执行中断服务程序时并不将TI清0 TI必须由用户在中断服务程序中清0 SCON寄存器的其他位与中断无关 将在后续相关章节介绍 S2CON为串行口2控制寄存器 字节地址为9AH S2CON中各位功能与串口1控制寄存器SCON类似 其中S2TI和S2RI为串口2的发送和接收中断标志位 S2RI 串行口2接收中断标志 若串行口2允许接收且以方式0工作 则每当接收到第8位数据时置1 若以方式1 方式2或方式3工作且SM2 0时 则每当接收到停止位的中间时置1 当串行口2以方式2或方式3工作且S2SM2 1时 则仅当接收到的第9位数据S2RB8为1后 同时还要接收到停止位的中间时置1 S2RI为1表示串行口2已接收到一帧数据 正向CPU申请中断 接收中断 S2RI必须由用户的中断服务程序清0 S2TI 串行口2发送中断标志 串行口2以方式0发送时 每当发送完8位数据 由硬件置1 若以方式1 方式2或方式3发送时 在发送停止位的开始时置1 S2TI 1表示串行口2已发送完一帧数据 正在向CPU申请中断 发送中断 值得注意的是 CPU响应发送中断请求 转向执行中断服务程序时并不将S2TI清0 S2TI必须由用户在中断服务程序中清0 3 ADC CONTR寄存器ADC CONTR为A D转换控制寄存器 字节地址为BCH ADC POWER ADC电源控制位 当ADC POWER为0时 关闭ADC电源 当ADC POWER为1时 打开ADC电源 ADC FLAG ADC转换结束标志位 可用于请求A D转换的中断 当A D转换完成后ADC FLAG置1 要用软件清0 不管是A D转换完成后由该位申请产生中断 还是由软件查询该标志位A D转换是否结束 当A D转换完成后 ADC FLAG为1 一定要软件清0 ADC START ADC转换启动控制位 设置为1时 开始转换 转换结束后为0 A D转换控制寄ADC CONTR中的其他位与中断无关 将在后续相关章节介绍 4 PCON寄存器PCON为电源控制寄存器 与低压检测中断有关 PCON格式如下 LVDF 低压检测标志位 同时也是低压检测中断请求标志位 在正常工作和空闲工作状态时 如果内部工作电压VCC低于低压检测门槛电压 该位自动置1 与低压检测中断是否被允许无关 即在内部工作电压VCC低于低压检测门槛电压时 不管有没有允许低压检测中断 该位都自动为1 该位要用软件清0 清0后 如内部工作电压VCC继续低于低压检测门槛电压 该位又被自动设置为1 在进入掉电工作状态前 如果低压检测电路未被允许可产生中断 则在进入掉电模式后 该低压检测电路不工作以降低功耗 如果被允许可产生低压检测中断 则在进入掉电模式后 该低压检测电路继续工作 在内部工作电压VCC低于低压检测门槛电压后 产生低压检测中断 可将MCU从掉电状态唤醒 5 CCON寄存器CCON寄存器是可编程计数器阵列 PCA 模块控制寄存器 地址为D8H 可位寻址 CCON寄存器格式如下 CF PCA计数器阵列溢出标志位 当PCA计数器溢出时 CF由硬件置1 如果CMOD寄存器的ECF位置1 则CF标志可用来产生中断 CF位可通过硬件或软件置1 但只可通过软件清0 CR PCA计数器阵列运行控制位 该位为1时 启动PCA计数器阵列计数 该位为0时 关闭PCA计数器 CCF2 PCA模块2中断标志 当出现匹配或捕获时该位由硬件置1 该位必须通过软件清0 CCF1 PCA模块1中断标志 与CCF2功能类似 CCF0 PCA模块0中断标志 与CCF2功能类似 6 SPSTAT寄存器SPSTAT寄存器是SPI状态寄存器 地址为CDH SPIF SPI传输完成标志 当一次串行传输完成时 SPIF置1 此时 如果SPI中断被打开 ESPI 1 EA 1 则产生中断 当SPI处于主模式且SSIG 0时 如果为输入并被驱动为低电平 SPIF也将置1 表示 模式改变 SPIF标志通过软件向其写入1而清0 WCOL SPI写冲突标志 在数据传输的过程中如果对SPI数据寄存器SPDAT执行写操作 WCOL将置1 WCOL标志通过软件向其写入1而清0 使用单片机的外部中断0和外部中断1 当外部中断0发出中断请求后点亮蓝色LED灯 当外部中断1发出中断请求后点亮黄色LED灯 如果在信号同时到达的条件下 需要指定那个LED灯先亮 如何实现 如果两个中断的请求信号同时到达单片机 哪个LED灯先点亮 5 3中断允许及其优先级管理 STC15F2K60S2单片机的中断允许控制及优先级控制分别由中断允许寄存器IE IE2 INT CLKO AUXR2 以及中断优先级控制寄存器IP IP2等控制 5 3 1中断允许寄存器STC15F2K60S2单片机中的各中断源是否开放或禁止 是由内部的中断允许寄存器IE IE2 INT CLKO控制 中断采用两级控制方式 即总中断和各中断源分别独立控制 EA CPU的总中断允许控制位 EA 1 CPU开放总中断 EA 0 CPU屏蔽所有的中断申请 EA的作用是使中断允许形成两级控制 即各中断源首先受EA控制 其次还受各中断源自己的中断允许控制位控制 ELVD 低压检测中断允许位 ELVD 1 允许低压检测中断 ELVD 0 禁止低压检测中断 EADC A D转换中断允许位 EADC 1 允许A D转换中断 EADC 0 禁止A D转换中断 1 IE寄存器IE寄存器主要负责总中断允许控制和外部中断0 外部中断1 定时器T0 定时器T1 串口1 A D转换 低压检测等中断源中断允许控制 IE的字节地址为A8H 可位寻址 ES 串行口1中断允许位 ES 1 允许串行口1中断 ES 0 禁止串行口1中断 ET1 定时 计数器T1的溢出中断允许位 ET1 1 允许T1中断 ET1 0 禁止T1中断 EX1 外部中断1中断允许位 EX1 1 允许外部中断1中断 EX1 0 禁止外部中断1中断 ET0 定时 计数器T0的溢出中断允许位 ET0 1 允许T0中断 ET0 0禁止T0中断 EX0 外部中断0中断允许位 EX0 1 允许外部中断0中断 EX0 0禁止外部中断0中断 ET2 定时器T2中断允许位 ET2 1时 允许T2中断 ET2 0 禁止T2中断 ESPI SPI中断允许位 ESPI 1 允许SPI中断 SPI 0 禁止SPI中断 ES2 串行口2中断允许位 ES2 1 允许串行口2中断 ES2 0 禁止串行口2中断 STC15F2K60S2单片机复位以后 IE和IE2被清0 所有的中断被禁止 若要开放某些中断源 则可通过程序把IE和IE2中的相应控制位置1 同时还必须把总中断EA置1 2 IE2寄存器IE2寄存器主要负责定时器T2 SPI和串口2等中断源的中断允许控制 地址为AFH 其格式如下 EX4 外部中断4 中断允许位 EX4 1时允许外部中断4中断 EX4 0时 禁止外部中断4中断 外部中断4只能下沿触发 EX3 外部中断3 中断允许位 EX3 1时允许外部中断3中断 EX3 0时 禁止外部中断3中断 外部中断3只能下沿触发 EX2 外部中断2 中断允许位 EX2 1时允许外部中断2中断 EX2 0时 禁止外部中断2中断 外部中断2只能下沿触发 T2CLKO T1CLKO T0CLKO是时钟输出控制位 与中断无关 将在后续章节中介绍 3 INT CLKO寄存器INT CLKO AUXR2 为外部中断2 外部中断3 外部中断4中断允许和时钟输出控制寄存器 地址为8FH 其格式如下 5 3 2中断优先级管理寄存器STC15F2K60S2单片机中除了外部中断2 外部中断3 外部中断4 定时器T2中断等4个中断源固定为最低优先级中断外 其它中断源 外部中断0 定时器T0中断 外部中断1 定时器T1中断 串口1中断 A D转换中断 低压检测中断 LVD CCP PWM PCA中断 串口2中断 SPI中断等 都具有两个中断优先级 即高优先级和低优先级 可实现两级中断服务程序嵌套 中断源的优先级由特殊功能寄存器IP和IP2中相应的位进行设置 下面分别介绍这两个优先级管理寄存器 PPCA PCA中断优先级控制位 PPCA 0时 PCA中断为低优先级中断 优先级0 PPCA 1时 PCA中断为高优先级中断 优先级1 PLVD 低压检测中断优先级控制位 PLVD 0时 低压检测中断为低优先级中断 优先级0 PLVD 1时 低压检测中断为高优先级中断 优先级1 PADC A D转换中断优先级控制位 PADC 0时 A D转换中断为低优先级中断 优先级0 PADC 1时 A D转换中断为高优先级中断 优先级1 PS 串口1中断优先级控制位 PS 0时 串口1中断为低优先级中断 优先级0 PS 1时 串口1中断为高优先级中断 优先级1 1 IP寄存器IP为中断优先级控制寄存器 地址为B8H 可位寻址 PT1 定时器1中断优先级控制位 PT1 0时 定时器1中断为低优先级中断 优先级0 PT1 1时 定时器1中断为高优先级中断 优先级1 PX1 外部中断1优先级控制位 PX1 0时 外部中断1为低优先级中断 优先级0 PX1 1时 外部中断1为高优先级中断 优先级1 PT0 定时器0中断优先级控制位 PT0 0时 定时器0中断为低优先级中断 优先级0 PT0 1时 定时器0中断为高优先级中断 优先级1 PX0 外部中断0优先级控制位 PX0 0时 外部中断0为低优先级中断 优先级0 PX0 1时 外部中断0为高优先级中断 优先级1 PSPI SPI中断优先级控制位 PSPI 0时 SPI中断为低优先级中断 优先级0 PSPI 1时 SPI中断为高优先级中断 优先级1 PS2 串口2中断优先级控制位 PS2 0时 串口2中断为低优先级中断 优先级0 PS2 1时 串口2中断为高优先级中断 优先级1 2 IP2寄存器IP2为中断优先级控制寄存器 主要对串行口2 SPI中断源的中断优先级设置 地址为B5H 其格式如下 中断优先级控制寄存器IP IP2的各位都可由用户程序置1和清0 但IP寄存器可位操作 所以可用位操作指令或字节操作指令更新IP的内容 而IP2寄存器的内容只能用字节操作指令来更新 STC15F2K60S2单片机复位后IP IP2均为00H 各个中断源均为低优先级中断 STC15F2K60S2单片机高优先级的中断请求可以打断低优先级的中断 反之 低优先级的中断请求不可以打断高优先级及相同优先级的中断 当两个相同优先级的中断同时产生时 将由查询次序来决定系统响应哪个中断 STC15F2K60S2单片机的各个中断的向量地址 查询次序 优先级 请求标志及中断允许位如表5 1所示 表5 1STC15F2K60S2单片机中断向量地址 优先级 请求标志 允许位 当单片机系统中有多个中断源同时向CPU请求中断时 CPU在响应中断源的中断请求时 必须遵循以下基本原则 1 不同优先级中断源同时申请中断时 先高后低 当多个中断源同时发出中断请求时 优先级高的中断将首先被响应 只有优先级高的中断服务程序执行完毕后 才能响应低优先级的中断 2 同一优先级的多个中断源同时申请中断时 CPU则按自然优先级从高到低依次响应 其自然优先级顺序如下 3 一个正在执行的低优先级可被高优先级中断请求所中断 待高优先级中断处理完毕后再返回低优先级中断 实现中断的嵌套 而高优先级中断不能被低优先级中断所中断 5 4单片机中断处理过程 5 4 1中断的响应条件当中断源向CPU发出中断请求时 如果中断的条件满足 CPU将进入中断响应周期 STC15F2K60S2单片机响应中断的条件 1 中断源有请求 相应的中断标志位为1 2 CPU开放总中断 EA 1 3 中断允许寄存器相应的中断允许位置1 4 无同级或高级中断正在处理 满足以上条件 CPU一般会响应中断 单片机CPU在每个指令周期的最后一个时钟周期按优先顺序查询各中断标志 如果查到某个中断标志为1 将在下一个指令周期按优先级的高低顺序进行处理 在程序运行过程中 并不是任何时刻都可以响应中断 如出现下面情况之一时 单片机不响应中断请求 1 CPU正在处理同级或高优先级中断 2 正在执行的指令尚未执行完毕 即当前指令不能执行一半就响应中断 3 正在执行的指令是中断返回指令RETI或是访问专用寄存器IE或IP的指令时 必须在执行完该指令后还要再执行一条指令才能响应中断 5 4 2中断的处理过程1 中断响应 1 将相应的优先级状态触发器置1 阻断其他同级或低级的中断请求 2 执行一条硬件LCALL指令 即程序计数器PC的值压入堆栈保存 再将中断服务子程序的入口地址送入PC 2 中断处理执行相应的中断服务程序 3 中断返回执行完中断服务程序后 把中断响应时入堆栈保存的断点地址从堆栈栈顶弹出送回PC CPU返回原来的断点继续往下执行程序 5 4 3中断请求的撤除STC15F2K60S2单片机的14个中断源中有的中断标志可以由硬件自动撤消 有的必须由软件清除 中断源向CPU发出中断请求后 中断请求信号分别锁存在TCON SCON S2CON ADC CONTR CCON PCON SPSTAT等特殊功能寄存器中 当某个中断源的请求被CPU响应后 应将相应的中断请求标志位及时清除 否则CPU会再一次响应该中断 硬件自动清除中断标志位 外部中断0 外部中断1 外部中断2 外部中断3 外部中断4 定时器T0 定时器T1 定时器T2的中断请求标志位在响应中断后 硬件会自动清0 用户无须关心 需软件清除中断标志位 串行口1中断标志位TI和RI 串行口2中断标志位S2TI和S2RI ADC中断标志位ADC FLAG SPI中断标志位SPIF PCA中断标志位CF CCF0 CCF1 CCF2 低压检测中断标志位LVDF 需要在中断服务程序中用软件将其清0 注意 对于STC15F2K60S2单片机外部中断来说 由于系统每个时钟对外部中断引脚采样1次 所以为了确保被检测到 输入信号应该至少维持2个时钟 不管是下降沿触发还是上升沿触发 要求必须在相应的引脚维持高电平和低电平至少1个时钟以上 才能确保该下降沿或上升沿被CPU检测到 5 5中断的应用举例 5 5 1中断处理程序的编写中断处理程序一般包括中断控制程序和中断服务程序 函数 两部分组成 1 中断控制程序中断控制程序主要完成中断的初始化 一般放在主程序即可 主要完成以下几个任务 1 根据需要设定相关变量或寄存器的初始值 2 根据需要在IP IP2寄存器中设定中断优先级 3 在IE IE2寄存中把相应中断源的对应位置1 开放相应的中断 4 CPU开放总中断EA 2 中断服务程序 函数 中断服务程序完成对具体中断源的处理 不同的应用系统的中断服务程序 函数 有所不同 一般包括以下几个内容 1 根据需要选择需要保护和恢复现场当CPU进入中断服务程序后 如果使用与主程序相同的寄存器时 必定会破坏该单元中原来的数据 如果不加以保护 则中断返时将导致主程序的混乱 因此 在进行中断服务程序后 应根据需要保护现场 中断返回前恢复现场 在C51语言编程中 则在中断函数中声明局部变量 也可以选择不同的寄存器组 保护和恢复现场不需要过多考虑 2 根据需要清除中断请求标志位 有的标志位不能通过硬件自动清除 如RI和TI等 因此 要在中断服务程序中用软件清除相应的标志位 以免造成CPU再次响应中断 采用C51编写中断函数 其一般格式如下 返回值类型函数名 形式参数表 interruptn usingn 其中 interrupt关键字后的n为对应中断源编号 告诉编译器中断程序的入口地址 using是可选项 其后面的n为选择寄存器组 可以是0 1 2 3 分别对应RAM中的4个寄存器组 STC15F2K60S2单片机各个中断源所对应的中断服务程序入口地址及中断号如表5 2所示 如果使用C语言编程中断函数时 则以中断号来区分每一个中断 例如 voidINT0 ISR void interrupt0 外部中断0中断函数 voidT0 ISR void interrupt1 定时器T0中断函数 voidINT1 ISR void interrupt2 外部中断1中断函数 voidT1 ISR void interrupt3 定时器T1中断函数 voidUART1 ISR void interrupt4 串行通信中断函数 voidADC ISR void interrupt5 ADC中断函数 voidLVD ISR void interrupt6 ADC中断函数 voidPCA ISR void interrupt7 PCA中断函数 voidUART2 ISR void interrupt8 串行通信2中断函数 voidSPI ISR void interrupt9 SPI中断函数 voidINT2 ISR void interrupt10 外部中断2中断函数 voidINT3 ISR void interrupt11 外部中断3中断函数 voidT2 ISR void interrupt12 定时器T2中断函数 voidINT4 ISR void interrupt16 外部中断4中断函数 5 5 2中断应用举例 例5 1 如图5 3所示 当按键K1按下时 P1口的8个LED灯闪烁5次 采用中断方式实现 试编程实现 分析 由于按键K1连接在INT0 P3 2口 采用外部中断0实现 LED灯闪烁一次 即亮一下又熄灭 共循环5次 在中断函数中实现 include 包含头文件voiddelay unsignedinti 延时函数 while i 0 voidmain 主函数 EX0 1 开放外部中断0IT0 1 设定外部中断0为下降沿触发方式EA 1 开放总中断while 1 等待 voidINT0 ISR interrupt0 外部中断0函数 unsignedchari for i 0 i 5 i 循环5次 P1 0 x00 delay 1000 P1 0 xff delay 1000 C51参考程序如下 例5 2 如图5 4所示 按键K1接在P3 2口 按键K2接在P3 3口 当无按键按下时 LED灯闪烁 当K1按下时 使LED灯左循环两遍 当K2按下时 使LED灯右循环两遍 要求K2执行的优先权高于K1 即当K1按下时 如果此时K2按下 则先执行K2 K2执行完后再继续执行K1功能 试编程 分析 K1 K2分别接在外部中断0和外部中断1 根据题意 外部中断1的优先级要高于外部中断0的优先级 这就是中断源的嵌套 由于低优先级可被高优先级中断 但高优先级不能被低优先级中断 系统采用两个中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论