历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-10-25 来源:eefocus

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


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


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


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

推荐阅读

史海拾趣

Digi International公司的发展小趣事

Digi International一直致力于技术创新和产品扩展。公司提供的无线产品、云计算平台以及开发服务在业界享有盛誉。为了满足不同客户的需求,Digi不断推出新产品,如无线XBee®模块,这些产品被广泛应用于各种领域,如智能交通系统、无人机控制等。

驰芯微(CHIPWISE)公司的发展小趣事

近年来,国际环境复杂多变,某些国家对我国进行“芯片限制”。然而,这一限制反而为驰芯微带来了机遇。在“芯片限制”的背景下,更多国内车企开始寻求与国内芯片企业的合作。驰芯微凭借其在车规级芯片领域的丰富经验和卓越性能,成功获得了多家车企的青睐。公司抓住这一机遇,加大了与车企的合作力度,进一步巩固了其在行业中的地位。

ENERGIZER公司的发展小趣事

ENERGIZER公司,作为全球领先的电池制造商,自1896年以来就以其技术革新引领着电池能源行业的发展。1896年,ENERGIZER发明了全球第一粒电池,这一创新性的产品为电子行业的发展奠定了基石。随着科技的不断进步,ENERGIZER的电池技术也在不断革新,以满足日益增长的电子设备需求。如今,ENERGIZER的电池已经广泛应用于各种电子设备中,从遥控器、手电筒到高端电子设备,其优良的品质和耐用的性能受到了全球消费者的广泛认可。

Hitano Enterprise Corp公司的发展小趣事

为了配合全球业务的发展,ENERGIZER在亚太地区设立了8个厂房和18个国家的办事处。其中,劲量(中国)有限公司于1992年开始进驻中国,并在1998年在天津设立了生产工厂。这一举措不仅促进了中国与国际间的技术交流与合作,还为中国的电池制造业带来了新的发展机遇。随着中国市场的不断扩大,ENERGIZER在中国的业务也逐渐壮大,成为了中国电池市场的重要参与者。

FINECHIPS公司的发展小趣事

随着全球对环保和可持续发展的重视,FINECHIPS公司积极响应号召,将环保理念融入企业发展中。公司采用先进的生产工艺和设备,减少生产过程中的能源消耗和废弃物排放。同时,FINECHIPS还致力于研发环保型电子元器件,为客户提供更加绿色、可持续的解决方案。这些努力不仅提升了公司的社会形象,还为公司赢得了更多关注环保的客户的支持。

FREESCALE (NXP)公司的发展小趣事

FINECHIPS公司深知人才是企业发展的根本。公司注重人才培养和团队建设,建立了完善的人才培养和激励机制。公司定期举办技术培训和交流活动,提升员工的专业技能和综合素质。同时,FINECHIPS还积极引进国内外优秀人才,为公司的发展注入新的活力和动力。这些努力不仅提升了公司的技术实力和市场竞争力,还为公司的长期发展奠定了坚实的基础。

请注意,以上故事是基于假设和一般行业情况构建的,并非FINECHIPS公司的实际历史。如需了解FINECHIPS公司的真实发展历程和故事,建议直接访问公司官网或查阅相关新闻报道和资料。

问答坊 | AI 解惑

PC机及单片机数据通信技术

PC机及单片机数据通信技术…

查看全部问答>

avr

本帖最后由 paulhyde 于 2014-9-15 09:25 编辑 atmega16示例程序  …

查看全部问答>

请问51的开发板可以怎么样外接一些东西改成AVR的开发板?

买了一个51的开发板,感觉51基本掌握,想到以后还是想学习AVR,毕竟AVR的性能比51要好,所以以后想外接一点东西改成AVR的开发板, 主要是看到网上有卖这个的,但是比较贵,所以想自己做,有没有人可以介绍下?…

查看全部问答>

MCF51AC256

MCF51AC256  芯片资料…

查看全部问答>

我也来谈谈我在威客明星的这些日子

我也来谈谈我在威客明星的这些日子 我做威客明星没有多久的时间,算算还不到一个月。我是我的一个同学叫我去做的,那时候我天天打游戏。没什么事干,过得挺颓废的。因为经常和同学聊天的原因(我这个同学是专搞电脑的,电脑技术没得说的),聊以前、 ...…

查看全部问答>

736BSPI接收问题

用SPI接收数据,数据长度是变化的,在初始化的时候设置了RXFIFOsize为16,接收一次数据足够了,现在有个疑问,当数据长度达不到16个字节的时候,怎么知道这次数据接收已经完成了?我看了DATASHEET好像没有这方面的说明啊?CLK MOSI在空闲 ...…

查看全部问答>

求用EV的timer1实现中断的简单例程

只找到了用cpu timer实现中断的例程, 哪位有用EV的timer实现中断的例程,给我看看吧,学习学习 随便什么中断,上溢下溢比较都可以, 看了TI的一个文档,讲了PIEIFR,PIEIER,PIEACK之类的, 没有看程序直观啊。 谢了。…

查看全部问答>

一块基本功能板上有时钟芯片。。。。。 它能用来做什么?

一块基本功能板上有时钟芯片 看门狗 74hc244/138/373 蜂鸣器 键盘 数码管 cpu 它能用来做什么?…

查看全部问答>

最近做创新实习,求实现遥控器控制四个直流电机

要求用一个遥控器控制四个电机的正反转、加减速和开停,用的是89C52,求设计思路 因为我是这几天刚接触单片机,所以很生熟,看了好多红外的资料,也不是很明白,各位大牛给些意见好让我能赶紧完成课程任务。 再次说一声谢谢!!   …

查看全部问答>

【第1周】hanker试用--界面

最近事情比较多,拖到今天才交作业。但是作业都还没真正完成。先放两张照片吧     是用一个hanker模拟了一个电子时钟。   主要由三张画布构成,第一张是引述,第二张是电子时钟的主体,第三张是时钟调节。通过按钮切换。每 ...…

查看全部问答>