PIC单片机基础教程课件-第六章_第1页
PIC单片机基础教程课件-第六章_第2页
PIC单片机基础教程课件-第六章_第3页
PIC单片机基础教程课件-第六章_第4页
PIC单片机基础教程课件-第六章_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

PIC单片机基础教程第六章中断系统6.1中断概述

6.2中断源

6.3中断控制

6.4中断响应

6.5中断请求的撤除

6.6中断控制编程实例

6.1中断概述6.1.1中断概念的引入中断技术最初是为计算机处理外界随机事件而出现的。通常计算机中只有一个CPU,但除了运行程序之外,CPU还要面临数据输入输出以及其它随机事件的处理。能够处理这种随机的、突发的事件就需要中断技术。

6.1中断概述6.1中断概述

6.1.1中断概念的引入6.1.2有关中断的名词当单片机的CPU正在处理某事件时,若外部发生了某一事件(如定时器溢出、引脚上电平变化),请求CPU迅速去处理,于是CPU就暂时中止当前的工作,转去处理所发生的事件。中断处理完该事件后,再回到原来被中止的地方,继续执行原来的工作,实现这种功能的部件称为中断系统。产生中断的请求源称为中断源。中断源向CPU提出的处理请求,称为中断请求或中断申请。CPU暂时中断自身的事务,转去处理事件的过程,称为CPU的中断响应过程。对事件的整个处理过程,称为中断服务(或中断处理)。处理完毕,再回到原来被中止的地方,称为中断返回。

6.1中断概述PIC16F877单片机具有实时处理功能,能对外界异常发生的事件由中断技术作及时处理。把这种现象上升到计算机理论,就是一个资源(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√√

√SSPI2C总线碰撞中断BCLIFBCLIE√√

√并行端口中断PSPIFPSPIE

A/D转换中断ADIFADIE√√√√√E2PROM中断EEIFEEIE√√√√√

13种14种10种11种10种6.2中断源6.2.1外部中断类外中断是由外部随机事件引起的,它通常用于I/O资料传送以及掉电等外部异常事件的处理。PIC16F87X系列单片共有两个外中断源,一个是RBO/INT引脚上的外部中断,一个是PORTB口引脚电平变化中断。1.INT中断

RBO/INT引脚上的外部中断由边沿触发,既可以是上升沿触发,又可以是下降沿触发,主要由选择寄存器OPTION_REG的D6位INTEDG决定。当INTEDG位被置1时,选用上升沿触发,如该位被清零,则由下降沿触发。当检测到引脚上有规定的有效边沿时,便把INTF位置1。外中断INT由中断控制位INTE设置允许或禁止。外中断INT可以唤醒在休眠状态下的CPU。

6.2中断源2.PORTB口引脚电平变化中断在PORTB口的D7~D4引脚上一旦有电平变化,就会把RBIF置1。这个中断可以通过对RBIE置1或清零来控制该中断是否开放。6.2.2定时中断类定时中断是为满足定时或计数的需要而设置的。为此,在单片机芯片内部有三个定时器/计数器。以对其中的技术结构进行技术的方法,实现定时或计数功能。当技术结构发生计数溢出时,既表明定时时间到或计数值已满,这时就以计数溢出信号去置位溢出标志位,作为单片机接受中断请求的标志。这种中断请求是在单片机芯片内部发生的,因此无需在芯片上设置引入端。

6.2中断源1.TMRO中断当定时器TMRO的计数器计满溢出(即由FFH变成00H)时,硬件自动把TOIF置1。TMRO中断可以通过对TOIE置1或清零来控制该中断是否开放。2.TMR1中断当定时器TMR1的计数器计满溢出(即由FFFFH变成0000H)时,硬件自动把TMR1IF置1。TMR1中断可以通过对TMR1IE置1或清零来控制该中断是否开放。3.TMR2中断当定时器TMR2的计数值与PR2匹配时,硬件自动把TMR2IF置1。TMR2中断可以通过对TMR2IE置1或清零来控制该中断是否开放。

6.3中断控制

中断控制是指提供给用户的使用中断系统的手段。由于中断系统处于单片机芯片的内部,因此用户只能以软件方法,通过设置状态位来使用中断系统。为此,PIC16F87X系列单片机设置了一些控制寄存器。与中断控制有关的寄存器共6个,即中断控制寄存器(INTCON)、选项寄存器(POTION-REG)、外围接口中断允许寄存器1(PIE1)、外围接口中断标志寄存器1(PIR1)、外围接口中断标志寄存器2(PIR2)、外围接口中断允许寄存器2(PIE2)

6.3中断控制6.3.1中断控制寄存器

1中断控制寄存器(INTCON):中断控制寄存器是一个可读写的8位寄存器。

R/W-0R/W-0R/W-0R-1R-1R/W-xR/W-xR/W-xGIEPEIET0IEINTERBIET0IFINTFRBIFD7D6D5D4D3D2D1D00:屏蔽所有的中断请求;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:无外中断发生时B7B6B5B4B3B2B1B0GIEPEIET0IEINTERBIET0IFINTFRBIF6.3中断控制2第一外围接口中断允许寄存器1(PIE1)第一外围接口中断允许寄存器1(PIE1)的内容是各个外部接口中断的允许位。它是一个可读/写操作的8位寄存器R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0PSPIEADIERCIETXIESSPIECCP1IETMR2IETMR1IE

B7B6B5B4B3B2B1B01:表示读或写操作已经发生;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寄存器未出现捕捉功能,B7B6B5B4B3B2B1B0PSPIEADIERCIETXIESSPIECCP1IETMR2IETMR1IE6.3中断控制3第一外围接口中断标志寄存器1(PIR1)第一外围接口中断标志寄存器1(PIR1)的内容是各个外部接口有中断时的标志位。

R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0PSPIFADIFRCIFTXIFSSPIFCCP1IFTMR2IFTMR1IF

B7B6B5B4B3B2B1B01:表示读或写操作已经发生;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寄存器未出现捕捉功能,B7B6B5B4B3B2B1B0PSPIFADIEFRCIFTXIFSSPIFCCP1IFTMR2IFTMR1IF6.3中断控制4第二外围接口中断允许寄存器2(PIE2)第二外围接口中断允许寄存器2(PIE2)的内容包括CCP2外部接口中断允许位、SSP总线碰撞中断允许位、EEPROM写操作中断允许位。

U-0R/W-0U-0R/W-0R/W-0U-0U-0R/W-0—保留—EEIEBCLIE——CCP2IE

B7B6B5B4B3B2B1B01:允许EEPROM写操作中断;0:屏蔽EEPROM写操作中断。1:允许总线碰撞中断;0:屏蔽总线碰撞中断。1:允许CCP2中断;0:屏蔽CCP2中断。B7B6B5B4B3B2B1B0—保留—EEIEBCLIE——CCP2IE6.3中断控制5第二外围接口中断标志寄存器2(PIR2)第二外围接口中断标志寄存器2(PIR2)的内容为CCP2外部接口中断、SSP总线碰撞中断允许位和EEPROM写操作中断的标志位。

U-0R/W-0U-0R/W-0R/W-0U-0U-0R/W-0—保留—EEIFBCLIF——CCP2IFB7B6B5B4B3B2B1B01:表示EEPROM写操作完成0,表示0:写操作没有完成或没有写操作。1:总线发生碰撞;1:没有碰撞。1:在捕捉模式,表示TMR1寄存器捕捉出现;0:在捕捉模式,表示TMR1寄存器未捕捉出现。B7B6B5B4B3B2B1B0—保留—EEIFBCLIF——CCP2IF6.3中断控制6.3.2中断系统的状态设置在PIC16F87X系列单片机应用中,用户通过上述六个控制寄存器来使用中断系统,因此从使用的角度上看,这六个寄存器就是面向用户的PIC16F87X系列单片机中断系统。对中断系统的使用是通过设置有关寄存器有关位的状态来实现的。外部中断的状态设置共有三项内容,即:中断总允许、外部中断允许和中断请求方式设定。但定时/计数中断没有中断请求方式设定,只有中断允许的设定。中断状态设置通常是在初始化程序段中进行。

6.3中断控制6.3.3中断系统控制机构6.3中断控制(1)每一种中断源对应着1个中断标志位和1个中断屏蔽位:

中断源产生的中断标志信号是否得以向前传递,将受控于对应的中断屏蔽位。每一个中断标志位都对应着1个触发器。当中断源申请CPU中断时,与之对应的中断标志触发器就由硬件自动置位,而该触发器的清零是由用户安排程序来实现的;每一个中断屏蔽位也对应着1个触发器。该触发器的置位和清零均是由用户程序完成的。(2)全部14个中断源按2个梯队并列排开:

第1梯队中只安排了3个中断源,其余的中断源全部安排到第2梯队中。这样做是为了与早期的PIC系列单片机型号相兼容。

6.3中断控制(3)所有的中断源都受全局中断屏蔽位(也可以称为总屏蔽位)GIE的控制。:

第1梯队的中断源不仅受全局中断屏蔽位的控制,还要受各自中断屏蔽位的控制;第2梯队的中断源不仅受到全局中断屏蔽位和各自中断屏蔽位的控制,还要额外受到1个外设中断屏蔽位PEIE的控制。

6.4中断响应

中断响应就是CPU对中断源提出的中断请求的承认或接受。中断请求被响应后,转向相应的中断服务程序,完成中断所要求的处理操作。6.4.1外部中断请求采样只有外部中断才有中断请求的采样问题。所谓中断请求采样,实际上就是识别有效的外部中断请求信号,并把它锁定在控制寄存器的相应标志位中。

6.4中断响应6.4中断响应6.4.1外部中断请求采样对于脉冲方式的RBO/INT外中断请求,若在两个相邻机器周期采样得到的是先高后低电平(设为下降沿触发),则中断请求有效,把INTF置1;否则,INTF继续为0。可见在脉冲方式下,为保证中断请求有效,中断请求脉冲高低电平的持续时间应在4个晶振周期以上。对于电平方式的外中断请求,若采得电平没有变化,表明没有中断请求,

INTCON寄存器的外中断请求标志位RBIF继续为0;若一旦采得电平有变化,则中断请求有效,把RBIF置1。对于发生在单片机芯片内部的中断请求,并直接置位相应的中断请求标志位,因此不存在中断请求采样的问题。

6.4中断响应6.4.2中断查询采样解决的是外中断请求的锁定问题。即把有效的外中断请求信号锁定在各中断请求标志位中。紧接着的问题是CPU如何知道中断请求的发生?由于中断请求已汇集到各中断请求标志位,因此只需通过CPU对中断请求标志位的查询。通常把这种查询称之为中断请求标志位进行查询。如果查询到有标志位为1,则表明有中断请求发生,因此从紧接着的一个指令周期内开始进行中断响应。6.4中断响应6.4.3中断响应1.

中断响应的时间分析所谓中断响应时间是指从中断请求有效(中断请求标志位置1),到CPU响应中断所需的时间。

6.4中断响应6.4.3中断响应1.

中断响应的时间分析(1)从INT中断信号上升沿有效到引发中断标志位INTIF被置位假设预先设定的是INT中断信号上升沿有效的话,则该信号的上升沿将会在1个时钟周期后引发中断标志位INTIF被置位。(2)INT中断信号被CPU检测每个指令周期内的第2个时钟脉冲上升沿时,该信号被抽检1次。(3)CPU清全局中断屏蔽位GIE

6.4中断响应6.4.3中断响应1.

中断响应的时间分析(4)程序计数器PC被置入中断向量0004H,完成跳转。在GIE信号被清零的下一个指令周期内,程序计数器PC被置入中断向量0004H,见图6-3中第6行。同时在该指令周期内完成到中断服务程序的跳转,并且实现提取该子程序的首条指令,即指令(0004H),见图6-3中第7行。(5)执行中断服务程序在其后的1个指令周期内,正式开始执行中断服务程序的第1条指令,见图6-3中第8行。

6.4中断响应2.中断过程(1)中断发出申请,并建相应中断标志。(2)CPU停止当前工作,响应中断。(3)断点保存,保护现,信息压场栈。(4)执行中断服务程序。(5)恢复现场,弹栈。(6)中断返回。6.4中断响应3.中断的现场保护问题

中断现场的保护是中断技术中一个很重要的环节。PIC单片机采用的是硬件堆栈,即在进入中断服务程序期间,只将程序计数器PC的值被自动压入堆栈。若需要保留其他寄存器的内容,就得由程序员另想办法。一般是用一段用户程序来实现现场保护的功能。现场保护的内容随不同的软件系统而不同。首先,程序的执行有可能会影响到W寄存器和STATUS寄存器,所以,首先应该把这2个寄存器保护起来,然后再去保存其他用户认为有必要保护的寄存器。

6.4中断响应3.中断的现场保护问题在PIC单片机中,中断现场数据不是保留到芯片的堆栈存储区中,而是保留在用户自己选择的一些文件寄存器中,当然一般应该选择通用寄存器来保护现场。下面是将W、STATUS和PCLATH寄存器的内容保存到临时备份寄存器中的中断现场保护程序。MOVWF W_TEMP ;将W内容送暂存器保存SWAPF STATUS,W ;将状态寄存器送CLRF STATUS ;选存储体0MOVWF STATUS_TEMP ;保护状态寄存器内容6.4中断响应3.中断的现场保护问题MOVF PCLATH,W ;保护PCLATH内容MOVWF PCLATH_TEMP CLRF PCLATH ;选择程序存储器0页… ;中断服务程序MOVF PCLATH_TEMP,W ;恢复PCLATHMOVWF PCLATHSWAPF STATUS_TEMP ;恢复状态寄存器内容MOVWF STATUS SWAPF W_TEMP,FSWAPF W_TEMP,W ;恢复W内容 6.4中断响应4.中断嵌套当CPU相应的任何一个中断时,全局中断屏蔽位GIE将会自动清0;当中断返回时它又会自动恢复为1。如果在中断处理期间用软件将已经复位的GIE重新置位,这时再出现中断请求,就可以形成中断嵌套。也就是说,如果在响应某一中断期间又响应了其他中断请求,就形成了中断嵌套。发生中断嵌套时,前一中断处理过程被暂停而进入后一中断处理,当后一中断过程被处理完毕之后,才会继续处理前一中断。照此方式,还可以形成多级嵌套,甚至自身嵌套。不过嵌套的级数绝对不能超过硬件堆栈的深度。

6.5中断请求的撤除

中断响应后,中断请求应及时清除。否则,如果终端请求仍然有效,会造成中断的重复响应。进入中断服务程序后,程序中必须安排指令,检查发出请求的中断源(如果同时开放多个中断源的话)。这可以通过检查各个中断源的标志位来实现。一旦确定出发出申请的中断源,就用软件把该中断源的标志位人为地清零,否则,执行中断返回指令“RETFIE”。重开中断后,由于中断标志位仍为“1”而引起CPU重复响应同一个中断请求。

6.6中断控制编程实例【6-1】用定时器定时,由RB0输出2分钟的方波。已知fOSC=4MHZ

解:要输出2分钟的方波,只要每隔1分钟使RB0求反一次即可。但此例要求RB0输出方波的周期时间太长,用一个定时器无法实现长时间定时,因此考虑用定时器加软件计数的方法来实现。具体做法是:用定时器TMR0定时10ms,用软件计数实现定时一分钟。20H单元作ms的计数单元:1s/10ms=100(64)次21H单元作s的计数单元:1min/1s=60(3C)次22H单元的D7位作分的计时的标志位。计时时间到后标志位置1TMR0的计数初值为:X=28—t/(T×P)=256-10000/(1×256)=D8H程序清单如下:

LISTP=16F873 INCLUDE"P16F873.INC"MSECONDEQU20H ;毫秒计时寄存器SECONDEQU21H ;秒计时寄存器MINUTEEQU22H ;分标志寄存器W_TEMPEQU23H;w临时寄存器ORG0000H;复位矢量单元地址NOP ;ICD必需的空操作GOTOMAIN;跳转到主程序ORG0004H;中断矢量单元地址GOTOZD;跳转到中断程序START CLRFPORTB ;清输出B口

BSF STATUS,RP0 ;选择存储体1 CLRFTRISB ;设置B口输出

MOVLW07H ;设置分频器归TMR0,分频比256 MOVWFOPTION_REG BCF STATUS,RP0 ;选择存储体0 MOVLW 0A0H ;开中断,开TMR0中断

MOVWF INTCON MOVLW 0D8H ;赋TMR0初值,并启动TMR0 MOVWF TMR0 MOVLW 64H ;赋毫秒计数器初值

MOVWF MSECOND MOVLW 3CH ;设置秒计数寄存器数值; MOVWF SECOND CLRF MINUTE ;清分标志位;------------------------主程序--------------------------------------MAIN BTFSS MINUTE,7 ;1分标志位置1了吗?

GOTO LOOP ;1分

温馨提示

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

评论

0/150

提交评论