51单片机系列知识6--中断系统(1)

发布者:素心轻语最新更新时间:2019-09-04 来源: eefocus关键字:51单片机  中断系统  请求源 手机看文章 扫描二维码
随时随地手机看文章

中断系统


一、


几个概念


① 中断:教材p51


② 中断源:产生中断的请求源


③ 中断级:根据中断源(所发出的时时事件)的轻重缓急,规定的优先级别


④ 中断嵌套:CPU在处理一个中断源请求时候,响应了更高一级中断的请求,待处理完后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。


⑤ 中断系统:实现中断功能的部件。


⑥ 多级中断系统:能够实现中断嵌套的中断系统。


1、 中断源


51单片机有5个中断源:2个是INTO、INT1(P3.2、P3.3)上输入的外部中断源;3个内部中断源,定时器∕计数器T0、T1的溢出中断源和串行的发送、接受中断。


这些中断源分别所存在TCON、SCON的相应位中。TF0、TF1、TI∕RI等内部中断源的中断标志。


2、 中断控制


中断控制包括使能控制和优先级控制。对应的特殊功能寄存器分别为IE和IP。


具体阐述见教材p53-54


CPU在接受到同样优先级的几个中断请求源时,一个内部的硬件查询序列确定优先服务于哪一个中断申请


中断源                             中断优先级


外中断0                 


定时器T0中断                         降


外中断1                               低


定时器T1中断


串行口中断


CPU不会在同一时刻接受到几个中断请求(一般不会),通常中断请求源会有一个极短的产生的先后顺序,那么为什么还要提出同一优先级优先服务哪个中断请求源的解决方法了?因为CPU相应中断并不是及时的。


3、 中断响应过程及中断处理


0. 中断处理的过程可归纳为中断请求、中断响应、中断处理及中断返回四部分


从CPU的角度考虑则为:中断查询、中断响应、中断处理、中断返回。


① CPU在每个机器周期顺序检查每一个中断源,在机器周期的S6采样并按优先级处理所有被激活的中断请求,如果没有被下述条件阻止,将在下一个机器周期的状态I(S1)响应激活了的最高级中断请求。


l CPU正在处理相同的或更高优先级的中断;


l 现行的机器周期不是所执行指令的最后一个机器周期;


l 正在窒息感的指令是中断返回指令(RETI)或是对IE、IP的写操作指令(执行这些指令后至少再执行一条指令后才会响应 )


② 中断查询的丢弃:上述条件有一个存在,CPU将会丢弃中断查询结果;若一个都不存在,将在紧接着的下一个机器周期执行中断查询的结果


③ 中断响应的处理:


由硬件完成的工作:置位响应优先级状态触发器→执行一条硬件子程序调用,使控制器转移到相应入口→请“0”中断请求源申请标志(RI∕TI)除外→程序计数的内容压入堆栈(但不保护PSW)→被响应的中断服务程序的入口地址送程序计数器PC→CPU执行中断处理程序一直到RETI指令为止→清“0”响应中断时所置位的优先级状态触发器→从堆栈中弹出顶上的两字节到程序计数器PC→CPU重新执行被中断的程序。


由软件完成的工作:CPU响应中断结束后即转至中断服务程序的入口。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。不同的中断源服务的内容及要求各不相同,其处理过程也就有所区别。一般情况下,中断处理包括两部分内容:一是保护现场,二是为中断源服务。


l 关于中断源查询结果的执行与丢弃


l RI、TI由软件清零的原因是:


下面接下一页补充


4、 外中断的响应时间


外中断从产生中断请求到开始执行中断服务程序的第一条指令之间,最少需要三个完整的机器周期。原因:


INT0和INT1电平在每个机器周期的S5P2被采样锁存到IE0、IE1中,这个新置入的IE0、IE1状态等到下一个周期才被查询电路查询到。如果中断被激活且满足响应条件,


现场通常有PSW、工作寄存器、专用寄存器。如果在断服务程序中要用到这些寄存器则在进入中断服务之前应将它们的内容保护起来称保护现场,同时在中断结束,执行RET1之前恢复现场。


中断服务程序是针对中断源的具体要求进行处理。


其次,用户应注意以下几点:


a、 各中断源的入口矢量地址之间,只相隔8个单元,一般中断服务程序是容纳不下的,因而最常用的方法是在中断入口矢量地址单元存放一条无条件转移指令,二转至存储器的其他任何空间。


b、 若要执行当前中断程序前,禁止更高优先级中断,应用软件关闭CPU中断,或屏蔽更高级中断源的中断,在中断返回前再开放中断。


c、 在保护现场和恢复现场时,为了不使现场信息收到破坏或造成混乱,一般在此情况下应关CPU中断,使CPU暂不响应新的中断请求。这样就要求在编写中断服务程序时,应注意在保护现场之前要关中断,在保护现场后允许高优先级中断打断它,则应开中断。同样在恢复现场之前要关中断,恢复之后再开中断。


CPU接着执行一条硬件程序调用指令以转到相应的服务程序入口,该调用指令本身需要两个机器周期。故至少三个机器周期后才执行中断服务程序。


外中断响应:


①CPU在每一个机器周期的S5P2检查1NT0、1NT1电平→


②CPU在每一个机器周期的S6顺序检查中断源,采样并按优先级处理→


③判断中断请求是否被前面所列出的三个条件之一阻止→被阻止则转⑤,没有被阻止则转④


④ CPU执行硬件子程序调用指令→①


⑤ CPU丢弃查询结果,等待CPU下次查询→①


△等待时间分析:


对各种请求,在没有阻止时,一般等待三个机器周期。a 若CPU在执行同级或高级中断,额外等待的时间明显取决于别的中断服务程序的处理过程。b 若正在处理的指令没有执行到最后的机器周期,所需的额外等待时间不会多于3个机器周期。c 如果正在执行的指令为RETI或访问IE、IP的指令,额外的等待时间不会多于5个机器周期。


△ 是否存在,在某一中断源,进行等待时又有更高级或同级中需优先完成的中断源加入等待,那么先等待执行的中断是否需要等待更长的时间,以上的分析则在该情况下失去意义?因为CPU在每一个机器周期都顺序检查每一个中断源


外中断源触发方式的选择


关键字:51单片机  中断系统  请求源 引用地址:51单片机系列知识6--中断系统(1)

上一篇:cc2530裸机编程系列笔记1--定时器Timer1模模式的程序设计
下一篇:51单片机系列知识7--中断系统(2)

推荐阅读最新更新时间:2024-11-08 13:26

51单片机存储程序和数据
初学51总是会有这样的疑问,从电脑下载程序到开发板后,程序去哪了? C51中,用户或应用程序,系统程序和数据都是存放在哪的? 51单片机从物理结构上,可分为片内,片外程序存储器,片内片外数据存储器。 51单片机从功能上,有程序存储器,片内数据存储器,特殊功能寄存器,位地址空间,片外数据存储器。 程序存储器 51单片机的程序存储器用于存储代码和一些固定表格常数。 可寻址的程序存储器空间为64KB。 51单片机的从物理角度上可分为:片内,片外程序存储器,作为编址空间,编址规律是:先片内,后片外,片内片外连续,不重叠。 如图:为51单片机程序存储器编址图。 单片机如何执行指令? 如图: 无论片内程序存储器,还是片外程
[单片机]
<font color='red'>51单片机</font>存储程序和数据
51单片机-按键部分(2)
程序功能:数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。按下第二个时计时开始,按下第三个是计数值清零。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 7
[单片机]
基于51单片机的热释电红外检测报警器程序
两种模式:一种紧急报警模式,另一种布防报警模式。 三个LED指示灯:红色为报警指示灯(检测到有人报警时闪亮)、绿色为布防指示灯(等待布防时1s一闪、进入布防状态时常亮)、黄色为传感器信号指示灯(有信号就亮,否则灭)。 按下布防键,系统计时20秒进入布防状态(此时绿色的led灯闪烁),20秒后系统进入布防状态(此时绿色的led亮长亮),此时当有人靠近时,黄色信号灯亮,红外热释电传感器将信号输送给单片机,单片机接收到信号蜂鸣器响,红色led灯亮,实现声光报警。 当遇到特殊情况时,按下按键1(紧急报警键),系统马上报警。 红外热释电传感器感应人体,当感应到人输出高电平,没感应到人输出低电平。 四个按键:按键1
[单片机]
51单片机(AT89C52)串口收发程序
#include reg52.h #define uchar unsigned char uchar rtemp,sflag; void SerialInit() //11.0592M晶振,波特率9600 { TMOD=0x20; //设置定时器1工作方式为方式2 TH1=0xfd; TL1=0xfd; TR1=1; //启动定时器1 SM0=0; //串口方式1 SM1=1; REN=1; //允许接收 PCON=0x00; //关倍频 ES=1; //开串口中断 EA=1; //开总中断 } void SerialServi
[单片机]
<font color='red'>51单片机</font>(AT89C52)串口收发程序
8051单片机-中断唤醒
生活上有很多东西都搭载着单片机而进行工作的,而且有相当一部分的设备、仪器、产品都是靠蓄电池来提供电源的,往往这些靠蓄电池供电的设备、仪器、产品都能够用上一大段时间。例如我们经常接触到的遥控器,假若MCU一直不停地运行,不出一段时间,电池的能量会很快耗光。当然在8051系列单片机搭载的系统中,不光有单片机需要耗电,同时还有其他外围部件耗电的,因此,我们在适当的时候关闭设备的运行同时将8051系列单片机的运行模式进入空闲模式或者掉电模式,以节省不必要的能源,达到低功耗的目的。 平时8051系列单片机正常工作的电流为4毫安~7毫安;当8051系列单片机进入掉电模式下,它的工作电流小于1微安。由此可见,低功耗设备的功耗控制很有必要在适
[单片机]
51单片机模拟I2C总线的C语言实现
电路原理图     EEPROM为ATMEL公司的AT24C01A。单片机为ATMEL公司的AT89C51。   软件说明   C语言为Franklin C V3.2。将源程序另存为testi2c.c,用命令 C51testi2c.c L51TESTI2C.OBJ OHS51TESTI2C 编译,连接,得到TESTI2C.HEX文件,即可由编程器读入并进行写片,实验。 3.源程序 #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned
[单片机]
<font color='red'>51单片机</font>模拟I2C总线的C语言实现
51单片机双向跑马灯的实现
#include REGX51.H void delay(void) //延时函数 { unsigned char i, j; for(i=0;i 200;i++) { for(j=0;j 200;j++); } } void main(void) { while(1) { unsigned char i = 0; unsigned d = 0x80; for(i = 1; i 8; i++) //从右跑到左 { P0=~d; d = d 1; delay(); //延时 } //d = 0x01; for(i = 1; i 8; i++) // 从左跑到右 { P0= ~d; d = d 1; delay()
[单片机]
51单片机教程:单片机并行口结构
看一下图1,它是8031单片机管脚的说明,在P1.0旁边有P1.1,P1.2….P1.7,它们是否都能让灯亮呢?除了以P1开头的外,还有以P0,P2,P3开头的,数一下,一共是32个管脚,前面我们以学过7个管脚,加上这32个这39个了。它们都以P字开头,只是后面的数字不一样,它们是否有什么联系呢?它们能不能都让灯亮呢?在我们的实验板上,除了P10之外,还有P11 - P17都与LED相连,下面让我们来做一个实验,程序如下: MAIN: MOV P1,#0FFH LCALL DELAY MOV P1,#00H LCALL DELAY LJMP MAIN DELAY:MOV R7,#250 D1: MOV R6,#250
[单片机]
<font color='red'>51单片机</font>教程:单片机并行口结构
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved