一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置
一、任务描述 1.对煤矿安全监测系统进行实时处理及检测。 2.列写工作计划表。 3.列写自查表,确定并完善实施方案;选择适合的检测工具。 4.对于监测系统的处理及检测工作进行清晰、完整、规范的记录。 返回
二、任务分析 煤矿监控系统的实时性主要体现在对数据采集的实时处理能力。严格地讲,由于监测系统对各测点是巡回检测的,不可能做到对给一个测点都是完全连续地进行,因此实时监测只是相对的;当有突发事件:如瓦斯超限时,监控系统必须立即发出高强度声光报警,提醒工作人员离开工作面;煤矿安全监测数据存储的重要性不言自明,每个用户都十分关心,已在多次事故分析中发挥作用;在计算监测数据平均值、最大值、最小值时,都要涉及是哪段时间的数据,即时间间隔。对历史数据,国际上常用10min或15min间隔取平均值。本任务就中断技术在实时、多任务处理中的应用加以详细说明。 返回
三、任务演示 返回
四、相关知识 (一)MCS-51的中断系统 (二)中断源和中断标志 (三)中断处理过程 (四)定时/计数器控制 返回
(一)MCS-51的中断系统 1、中断的概念 中断是通过硬件来改变CPU的运行方向。计算机在执行程序的过程中,当出现CPU以外的某种情况,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。
“中断”之后所执行的相应的处理程序通常称之为中断服务或中断处理子程序,原来正常运行的程序称为主程序。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的;而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。
2、中断的特点 (1)分时操作 中断可以解决快速的CPU与慢速的外设之间的矛盾,使CPU和外设同时工作。CPU在启动外设工作后继续执行主程序,同时外设也在工作,每当外设做完一件事就发出中断申请,请求CPU中断它正在执行的程序,转去执行中断服务程序(一般情况是处理输入输出数据),中断处理完之后,CPU恢复执行主程序,外设也继续工作。这样,CPU可启动多个外设同时工作,大大地提高了CPU的效率。
(2)实时处理 在实时控制中,现场的各种参数、信息均随时间和现场而变化。这些外界变量可根据要求随时向CPU发出中断申请,请求CPU及时处理,如中断条件满足,CPU马上就会响应进行相应的处理,从而实现实时处理。 (3)故障处理 针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理
3、MCS-51中断系统的结构框图 中断过程是在硬件基础上再配以相应的软件而实现的,不同的计算机其硬件结构和软件指令是不完全相同的,因此,中断系统也是不相同的。MCS-51中断系统的结构框图如图6-2所示
图6-2 MCS-51中断系统内部结构示意图
由图可知,与中断有关的寄存器有4个,分别为中断源寄存器TCON和SCON、中断允许控制寄存器IE和中断优先级控制寄存器IP。有中断源5个,分别为外部中断请求、外部中断1请求、定时器T0溢出中断请求TF0、定时器T1溢出中断请求TF1和串行中断请求RI或TI。5个中断源的排列顺序由中断优先级控制寄存器IP和顺序查询逻辑电路共同决定,5个中断源分别对应5个固定的中断入口地址。
(二)中断源和中断标志 1、中断源------通常,计算机的中断源有如下几种: (1)一般的输入输出设备。如键盘、打印机等,它们通过接口电路向CPU发出中断请求。 (2)实时时钟及外界计数信号。如定时时间或计数次数一到,则向CPU发出中断请求。 (3)故障源。当采样或运算结果溢出或系统掉电时,可通过报警、掉电等信号向CPU发出中断请求 (4)为调试程序而设置的中断源。调试程序时,为检查中间结果或寻找问题所在,往往要求设置断点或进行单步工作(一次执行一条指令),这些人为设置的中断源的申请与响应均由中断系统来实现。
MCS-51的5个中断源详述如下: (1) :外部中断0请求,由P3.2脚输入。通过IT0脚(TCON.0)来决定是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并建立IE0标志。 (2) :外部中断1请求,由P3.3脚输入。通过IT1脚(TCON.2)来决定是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并建立IE1标志。 (3)TF0:定时器T0溢出中断请求。当定时器T0产生溢出时,定时器T0中断请求标志位(TCON.5)置位(由硬件自动执行),请求中断处理。 (4)TF1:定时器T1溢出中断请求。当定时器T1产生溢出时,定时器T1中断请求标志位(TCON.7)置位(由硬件自动执行),请求中断处理。 (5)RI或TI:串行中断请求。当接收或发送完一串行帧时,内部串行口中断请求标志位RI(SCON.0)或TI(SCON.1)置位(由硬件自动执行),请求中断。
2、中断标志 TCON寄存器中的中断标志;TCON为定时器T0和T1的控制寄存器,同时也锁存T0和T1的溢出中断标志及外部中断和的中断标志等。与中断有关位如下: (1)TCON.7 TF1:T1的溢出中断标志。 (2)TCON.5 TF0:T0溢出中断标志。其操作功能与TF1相同。 (3)TCON.3 IE1:中断标志。IE1 = 1,外部中断1向CPU申请中断。 (4)TCON.2 IT1:中断触发方式控制位。当IT1 = 0,外部中断1控制为电平触发方式。 (5)TCON.1 IE0:中断标志。其操作功能与IE1相同。 (6)TCON.0 IT0:中断触发方式控制位。其操作功能与IT1相同。
3、SCON寄存器中的中断标志 SCON是串行口控制寄存器,其低2位TI和RI锁存串行口的接收中断标志和发送中断标志。 (1)SCON.1 TI:串行发送中断标志。CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。但CPU响应中断时并不清除TI,必须由软件清除。 (2)SCON.0 RI:串行接收中断标志。在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。同样,CPU在响应中断时不会清除RI,必须由软件清除。 8051系统复位后,TCON和SCON均清0,应用时要注意各位的初始状态。
4、IE寄存器中断的开放和禁止标志 MCS-51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE用于控制CPU对各中断源的开放或屏蔽。IE寄存器各位定义如下: (1)IE.7 EA:总中断允许控制位。EA = 1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA = 0,禁止所有中断。 (2)IE.4 ES:串行口中断允许位。ES = 1,允许串行口中断;ES = 0禁止串行口中断。
(3)IE.3 ET1:定时器T1中断允许位。ET1 = 1,允许T1中断;ET1 = 0,禁止T1中断。 (4)IE.2 EX1:外部中断1()中断允许位。EX1 = 1,允许外部中断1中断;EX1 = 0,禁止外部中断1中断。 (5)IE.1 ET0:定时器T0中断允许位。ET0 = 1,允许T0中断;ET0 = 0,禁止T0中断。 (6)IE.0 EX0: 外部中断0()中断允许位。EX0 = 1,允许外部中断0中断;EX0 = 0,禁止外部中断0中断。 8051单片机系统复位后,IE中各中断允许位均被清0,即禁止所有中断。
5、IE寄存器中断优先级标志 8051单片机有两个中断优先级,每个中断源都可以通过编程确定为高优先级中断或低优先级中断,因此,可实现二级嵌套。同一优先级别中的中断源可能不止一个,也有中断优先权排队的问题。 (1)IP.4 PS:串行口中断优先控制位。PS = 1,设定串行口为高优先级中断;PS = 0,设定串行口为低优先级中断。 (2)IP.3 PT1:定时器T1中断优先控制位。PT1 = 1,设定定时器T1中断为高优先级中断;PT1 = 0,设定定时器T1中断为低优先级中断。 (3)IP.2 PX1:外部中断1中断优先控制位。PX1 = 1,设定外部中断1为高优先级中断;PX1 = 0,设定外部中断1为低优先级中断。 (4)IP.1 PT0:定时器T0中断优先控制位。PT0 = 1,设定定时器T0中断为高优先级中断;PT0 = 0,设定定时器T0中断为低优先级中断。
(5)IP.0 PX0:外部中断0中断优先控制位。PX0 = 1,设定外部中断0为高优先级中断;PX0 = 0,设定外部中断0为低优先级中断。 如果几个同一优先级的中断源同时向CPU申请中断,CPU 通过内部硬件查询逻辑,按自然优先级顺序确定先响应哪个中断请求。自然优先级由硬件形成,排列如下: 中断源 同级自然优先级 外部中断0 最高级 定时器T0中断 外部中断1 定时器T1中断 串行口中断 最低级
(三)中断处理过程 1、中断系统的功能 (1)实现中断响应和中断返回 当CPU 收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。CPU中断响应过程如下:首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保留下来,这称为保护断点,由硬件自动执行。然后,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成。保护断点和现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。
恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。中断示意图如图6-3所示。 图6-3 中断响应过程流程图 图6-4 中断嵌套流程图
(2)实现优先权排队 通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个中断源规定了优先级别,称为优先权。这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断处理结束后才能响应优先权低的中断。计算机按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。
(3)实现中断嵌套 当CPU响应某一中断时,若有优先权高的中断源发出中断请求,则CPU能中断正在进行的中断服务程序,并保留这个程序的断点(类似于子程序嵌套),响应高级中断,高级中断处理结束以后,再继续进行被中断的中断服务程序,这个过程称为中断嵌套,其示意图如图6-4所示。如果发出新的中断请求的中断源的优先权级别与正在处理的中断源同级或更低时,CPU不会响应这个中断请求,直至正在处理的中断服务程序执行完以后才能去处理新的中断请求。
2.中断处理过程 中断处理过程可分为中断响应、中断处理和中断返回三个阶段。不同的计算机因其中断系统的硬件结构不同,因此,中断响应的方式也有所不同。这里,仅以8051单片机为例进行叙述。 (1)中断响应 中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。CPU并非任何时刻都响应中断请求,而是在中断响应条件满足之后才会响应。
1)中断响应条件 CPU响应中断的条件有: a.有中断源发出中断请求。 b.中断总允许位EA = 1。 c.申请中断的中断源允许。 满足以上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。 a.CPU正在响应同级或高优先级的中断。 b.当前指令未执行完。 c.正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。 若存在上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询,否则,CPU在下一机器周期响应中断。
2)中断响应过程 中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。首先,中断系统通过硬件自动生成长调用指令(LACLL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW和其它寄存器的内容),然后,将对应的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。
MCS-51系列单片机各中断源的入口地址由硬件事先设定,分配如下: 中断源 入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H 使用时,通常在这些中断入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断服务程序的起始地址上去。
3.中断处理 中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令“RETI”为止,一般包括两部分内容,一是保护现场,二是完成中断源请求的服务。 通常,主程序和中断服务程序都会用到累加器A、状态寄存器PSW及其它一些寄存器,当CPU进入中断服务程序用到上述寄存器时,会破坏原来存储在寄存器中的内容,一旦中断返回,将会导致主程序的混乱,因此,在进入中断服务程序后,一般要先保护现场,然后,执行中断处理程序,在中断返回之前再恢复现场。
4.中断返回 中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执行原来的程序。中断返回由中断返回指令RETI来实现。该指令的功能是把断点地址从堆栈中弹出,送回到程序计数器PC,此外,还通知中断系统已完成中断处理,并同时清除优先级状态触发器。特别要注意不能用“RET”指令代替“RETI”指令。
中断处理过程如图6-5所示 图6-5 中断处理过程流程图
5.中断请求的撤除 MCS-51各中断源中断请求撤消的方法各不相同,分别为: (1)定时器中断请求的撤除 对于定时器0或1溢出中断,CPU在响应中断后即由硬件自动清除其中断标志位TF0或TF1,无需采取其它措施。 (2)串行口中断请求的撤除 对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,必须在中断服务程序中用软件将其清除。 (3)外部中断请求的撤除 外部中断可分为边沿触发型和电平触发型。
6.中断响应时间 中断响应时间是指从中断请求标志位置位到CPU开始执行中断服务程序的第一条指令所持续的时间。CPU并非每时每刻对中断请求都予以响应,另外,不同的中断请求其响应时间也是不同的,因此,中断响应时间形成的过程较为复杂。以外部中断为例,CPU在每个机器周期的S5P2期间采样其输入引脚或端的电平,如果中断请求有效,则置位中断请求标志位IE0或IE1,然后在下一个机器周期再对这些值进行查询,这就意味着中断请求信号的低电平至少应维持一个机器周期。
(四)定时/计数器控制 1、 定时/计数器工作方式寄存(TMOD) TMOD是特殊功能寄存器区中的一个寄存器,地址为89H,其功能是对T0和T1的功能、工作方式及启动方式进行控制,其各位的定义见表6-6,高4位对T1进行控制,低4位对T0进行控制,高4位与低4位的作用相同。 表6-6 TMOD寄存器 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0
(1) GATE――门控位 (2) ――功能选择位 当 =0时,为定时功能。当=1时,为计数功能 (3) M0M1――工作方式选择位 表6-7 定时/计数器工作方式选择 M0 M1 工作方式 功能描述 1 1 1 方式0 方式1 方式2 方式3 13位计数器 16位计数器 自动重装初值8位计数器 T0:分成两个独立的8位计数器 T1:停止计数
2、定时/计数器控制寄存器(TCON) TCON在特殊功能寄存器区中的地址为88H,可位寻址,其功能是对定时/计数器的启动、停止,计数溢出中断请求及外部中断请求和外部中断触发方式进行控制。其中高4位是对定时/计数器进行控制,低4位是对外部中断进行控制(在本模块的课题一中已经介绍过)。高4位中各位的定义如下: 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 位符号 SM0 SM1 SM2 R EN TB8 RB8 TI RI
(1)TF1――T1溢出标志位 当T1计数满溢出时,由硬件将TF1置“1”。当采用中断方式进行计数溢出处理时(中断开放),由硬件查询到TF1为1时,产生定时器中断,进行定时器中断服务处理,在中断响应后由硬件自动将TF1清“0”。当采用查询方式进行计数溢出处理时(中断关闭),由程序查询到TF1为1时,进行定时器溢出处理,在程序中用指令将TF1清“0”。 (2)TR1――T1运行控制位 当TR1=1时,T1开始计数。当TR1=0时,T1停止计数。 (3)TF0――T0溢出标志位 其功能及操作与TF1相同。 (4) TR0――T0运行控制位 其功能及操作与TR1相同
3、定时/计数器工作方式 51系列单片机定时/计数器共有四种工作方式。工作在方式0、方式1和方式2时,定时/计数器0和定时/计数器1的工作原理完全一样,现以定时/计数器0为例进行讲解。 (1) 方式0 方式0是13位计数长度的工作方式,由TH0的8位和TL0的低5位构成,TL0高3位未用。 (2) 方式1 方式1是16位计数长度的工作方式,由TH0的8位和TL0的8位构成。其结构和工作原理与方式0完全相同,所不同的只是计数器的位数。 方式1的定时时间为:
(3) 方式2 方式2为具有初值重装功能的8位计数器。 (4) 方式3 1)T0工作于方式3 =0 =1 中断 中断 TF0 TL0 (3) 方式2 方式2为具有初值重装功能的8位计数器。 (4) 方式3 1)T0工作于方式3 =0 =1 TF0 TL0 12分频 晶体振荡器 T0(P3.4) TR0 GATE 中断 TF1 TH0 12分频 晶体振荡器 TR1 中断
2)T0工作于方式3时的T1 (a)T1工作方式1(或工作方式0) (b)T1工作方式2 图6-9 T0工作于方式3时的T1结构 ==0 T1(P3.5) TH1 (高8位) TL1 (8位或5位) 12分频 晶体振荡器 ==0 ==1 串行口 (a)T1工作方式1(或工作方式0) ==0 = =1 TH1 TL1 12分频 晶体振荡器 T0(P3.5) 串行口 重 装 入 (b)T1工作方式2 图6-9 T0工作于方式3时的T1结构
查询方式实现信号灯循环点亮的原理 流程图 汇编源程序
查询方式实现信号灯循环点亮的原理 8051单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。 现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。对于这20次我们就可以采用软件的方法来统计了。
因此,我们设定TMOD=00000001B,即TMOD=01H 下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出 TH0=(216-50000) / 256 TL0=(216-50000) MOD 256 当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。
流程图
汇编源程序 ORG 0000H CONT: MOV R2,#07H MOV A,#0FEH NEXT: MOV P1,A ACALL DELAY RL A DJNZ R2,NEXT MOV R2,#07H NEXT1: MOV P1,A RR A DJNZ R2,NEXT1 SJMP CONT DELAY: MOV R3,#14H;置50ms计数循环初值
LP2: MOV TH1,#3CH ;重新置定时器初值 MOV TMOD,#10H ;设定时器1为方式1 MOV TH1,#3CH ;置定时器初值 MOV TL1,#0B0H SETB TR1 ;启动T1 LP1: JBC TF1,LP2 ;查询计数溢出 SJMP LP1 ;未到50ms继续计数 LP2: MOV TH1,#3CH ;重新置定时器初值 DJNZ R3,LP1 ;未到1s继续循环 RET ;返回主程序 END 返回
五、任务布置 1.写出MCS-51的中断系统的概念及特点。 2.绘制MCS-51中断系统的结构框图 3.写出中断系统的功能。 4.画出中断处理及响应过程流程图。 5.列出定时/计数器工作方式寄存器和定时/计数器控制寄存器中各位的作用。 6.写出定时/计数器四种工作方式及各种工作方式的工作特点。 7.写出采用查询方式实现信号灯循环点亮的程序及调试步骤 。 8.列写所需参考资料清单。 9.列写工作计划表、学生自查表、学生团队互评表、学生自评表。 返回