历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2021年10月25日 | 单片机的中断系统(一)

发布者:艺泉阁 来源: eefocus关键字:单片机  中断系统  cpu 手机看文章 扫描二维码
随时随地手机看文章

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


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


        图片和文字内容来自:普中科技的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


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

关键字:单片机  中断系统  cpu 引用地址:单片机的中断系统(一)

上一篇:单片机的外部中断(二)
下一篇:51单片机的定时中断(三)

推荐阅读

集微网消息 10月24日晚间,手机ODM龙头闻泰科技发布预案,计划通过发行股份及支付现金与募集配套资金的方式收购安世集团所有GP和LP份额,交易完成后,闻泰科技将间接持有安世集团的控制权。安世集团为半导体标准器件供应商,前身为恩智浦标准产品事业部,集设计、制造、封装测试于一体,其产品广泛应用于汽车、工业控制、计算机、消费电子等领域。安世集...
在第六届世界互联网大会上,银联携手60余家银行联合发布全新的“刷脸付”产品,正式进军刷脸支付市场。 当前来看,支付宝和微信支付在刷脸支付市场的争夺尤为激烈,“扫脸领红包”“补贴无上限”,巨头们在刷脸支付领域同样大手笔,用重金补贴抢夺市场。战局已然开启,刷脸支付的落地情况如何?巨头全力推广,商家、用户是否“买账”?记者在杭州、深圳两地...
日前,vivo 悄悄在国内市场推出了两款手机,分别名为 vivo Y30 和 vivo Y3s。vivo Y30vivo Y30 4G 手机配有 6.51 英寸的 LCD HD + 显示屏,内部配备了骁龙 460 移动平台,8GB LPDDR4x RAM,128 GB UFS 2.1 存储和 5,000mAh 电池,支持 18W 快速充电。其正面有一个 800 万像素的前置摄像头,背面则为 1300 万像素+ 200 ...
10月24日晚间,晶瑞电材发布公告称,2021年前三季度,公司实现营业收入13.09亿元,同比增长83.31%;归属于上市公司股东的净利润1.65亿元,同比增长167.80%;基本每股收益0.4860元。其中,第三季度实现营业收入4.46亿元,同比增长56.23%;归属于上市公司股东的净利润4995.99万元,同比增长30.54%;归属于上市公司股东的扣除非经常性损益的净利润3916.47万元...

史海拾趣

问答坊 | AI 解惑

通用异步串口实现单总线硬件控制器的研究和实现方法

常用的单总线有2大类: 1-Wire和HDQ16 1-Wire和HDQ16都采用单线数据双向通讯,特别是有些1-Wire系列器件甚至不需电源。 单总线和I2C,SPI相比接线简单,但时序要求很严格,一般采用IO模拟定时器辅助的方法. 做主机其缺点还不太明显,若作为从机设 ...…

查看全部问答∨

收集的一些C语言资料

C陷阱与缺陷.pdf C语言深度解剖.pdf C语言试题集.pdf C语言运算符优先级口诀.txt C语言中的指针.pdf itat比赛题目 …

查看全部问答∨

wince下的DM9000驱动问题

     正在调试DM9000的驱动,不过以前没有涉及过wince下的驱动,显得很费力。移植应该是成功了,开机可以加载成功,环路ping,包括ping自己的IP地址和127.0.0.1都是可以的,这说明驱动加载应该没有问题了。但是,我没有办法pin ...…

查看全部问答∨

《边干边学-Linux内核指导》这本书上的那个“设计自己的驱动程序”的例子拿来编译不知道为什么错???

书上说:采用下面的命令对vfifo.c进行编译: #gcc -c vfifo.c -D_KERNEL__ -DMODULE -O2 -g -Wall 如果没有出错的话,将会在本目录下生成一个vfifo.o文件。 可是我在redhat 9上编译出错,错误如下: In file included from /usr/include/linux ...…

查看全部问答∨

wince下如何测试驱动程序阿

我写了个极简单的驱动程序,就是在2410上挂了一个ram,然后想对这个ram进行读写操作,现在不知道如何对这个驱动写测试代码 我的驱动代码如下 哪位高手愿意帮我看看阿 # include <windows.h> # include <types.h> # include <pkfunc ...…

查看全部问答∨

内存分配存储问题

   RT,小弟做DM9000的驱动,DM9000有2个物理地址,一个是写I/O寄存器指令的,还有一个是写DATA的, 在wince6.0下分配虚拟内存的过程中,DATA物理地址一定要分配32位的才能正确读出数据,分配8位 空间的话却不行。但是一般往里面写的或 ...…

查看全部问答∨

在dos下运行FCARM.EXE,将网页文件编译成c文件出问题了。。

  我在dos环境下运行fcarm.exe文件,c:\\keil\\arm\\bin>fcarm.exe index.htm     to       web.c 那么,我的index.htm网页文件应该放在哪里?  编译之后的web.c 应该放在哪里?…

查看全部问答∨

智能手机引发3G芯片竞争加剧

随着3G在全球的日渐普及以及4G的上马,智能手机的发展进一步加大了手机芯片的竞争程度。分析机构预计明年3G芯片市场的竞争将会更加激烈。   研究机构WirelessIntelligence指出,由于智能手机及移动宽频需求量大增,全球3G用户数在今年3月中旬已 ...…

查看全部问答∨

IAP,解密用的KEY怎么存储好点?

                                 目前我使用的AES128 ECB模式加密APP程序固件,通过串口或FTP下载后解密写入APP区,防篡改目前只是使用STM32的内置C ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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