单片机的中断系统(一)

        想总结中断由来已久,但是总感觉一章的东西,太多,无从下手。

        前几天看到一句话“能把自己学会的东西说出来,才是真的学会”。今天,就要会一会这中断系统。

        图片和文字内容来自:普中科技的ppt,百度文库,《操作系统》,《组成原理》我整理整理。


        先不谈中断,先看看cpu可以如何处理输入输出。比如,现在我的键盘在输入,试问cpu如何知道我输入完成,以将输入的内容送入内存进行处理?最简单的是,cpu原地等待,cpu进行不断的查询,查询键盘是否输入完成。但是这样,cpu就不能去做其他事情,严重影响cpu的速度。

       此时可以引入中断的方式。cpu工作自己的。键盘输入自己的。当键盘输入完成,发出中断请求。如果cpu决定响应该中断,保存当前工作进度,去提取输入的内容。中断处理结束后,恢复原来工作现场,继续工作。这样cpu的效率就大大提高。

中断的概念:

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生)

CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);

待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。

图一

引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统

51单片机的中断系统结构

89C51/52的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套 。

图二
图三

注意:上面都是请求中断,但cpu是否响应中断?这由IE寄存器决定。

           只有IE的开关闭合(即cpu允许),当请求中断时,cpu才会响应。

中断请求标志(TCON):

1、TCON的中断标志

图四

(目前来说,只关心背景为深色的位)

IT0(TCON.0),外部中断0触发方式控制位。

        当IT0=0时,为电平触发方式。

        当IT0=1时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断0中断请求标志位。

IT1(TCON.2),外部中断1触发方式控制位(类似IT0)。

IE1(TCON.3),外部中断1中断请求标志位。

TF0(TCON.5),定时/计数器T0溢出中断请求标志位。

TF1(TCON.7),定时/计数器T1溢出中断请求标志位。

中断请求标志(SCON):

中断允许控制(IE)

CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

图六

EX0(IE.0),外部中断0允许位;

ET0(IE.1),定时/计数器T0中断允许位;

EX1(IE.2),外部中断0允许位;

ET1(IE.3),定时/计数器T1中断允许位;

ES(IE.4),串行口中断允许位;

EA (IE.7), CPU中断允许(总允许)位。(所以执行中断时,总中断必须打开)

中断优先级(中断优先寄存器--IP):

同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:

图七

这里面稍微提下中断服务程序入口。当执行中断的时候,cpu要转去执行中断程序。但是如何知道程序的入口位置?

可以把中断的程序入口放在0003H的位置,cpu将这里面存储的程序入口放入pc(每次下一步执行的指令)中。(这只是我目前的想法,不知道正确与否)

中断号:

这在后面写程序会用到。

图八

如果是外部中断0的函数,在中断函数的后面加上 interrupt 0(0为外部中断0的中断号)。

中断优先级三条原则:

CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。

正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

正在进行的低优先级中断服务,能被高优先级中断请求所中断。

为了实验上述判优,有硬件排队器;当然也可以用软件实现判优。

图九:具有屏蔽功能的排队器

上面这些优先级的设定是IP(中断优先寄存器),我没有用过,也不清楚怎么用,这里转载下其他文章关于它的介绍。

来源:http://www.sohu.com/a/191453790_99957951

P在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH,IP用来设定各个中断源属于两级中断中的哪一级,IP的基本格式如下图所示:

图十

×:无效位。

PS:串行I/O中断优先级控制位。PS=1,高优先级;PS=0,低优先级。

PTl:定时器/计数器1中断优先级控制位。PTl=1,高优先级;PTl=0,低优先级。

Pxl:外部中断1中断优先级控制位。Pxl=1,高优先级;PXl=O,低优先级。

PT0:定时器/计数器o中断优先级控制位。PT0=1,高优先级;PTO=0,低优先级。

Px0:外部中断0中断优先级控制位。Px0=1,高优先级;Px0=0,低优先级。

中断的使用:

使用中断,要熟悉中断的结构,要根据要求设置寄存器。

1、首先明确使用哪个中断。

2、接着就要设置TCON(或者SCON),中断请求标志。

3、紧接着是设置IE,中断允许标志。

当上述设置满足时,单片机运行满足条件会触发中断请求,此时中断允许,进入中断,执行中断。

引用文章:

51单片机中断控制

单片机中断系统的控制寄存器IE和IP 

51普中单片机的ppt

唐朔飞的《计算机组成原理》

猜你喜欢

转载自blog.csdn.net/sinat_38816924/article/details/84641219