历史上的今天
返回首页

历史上的今天

今天是:2025年04月25日(星期五)

正在发生

2020年04月25日 | STC89C52系列单片机内部资源——中断系统

2020-04-25 来源:eefocus

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或者内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握。


首先介绍单片机中断技术的优点:

解决了快速主机与慢速I/O设备的数据传送问题;

分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。


中断的相关概念:

以下事件依次发生,这一过程称为“中断”!

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

中断响应:CPU暂时中断当前的工作;

中断服务:CPU转去处理事件B;

中断返回:待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A;


流程图如下所示:

中断系统的相关概念:

引起CPU中断的根源,称为中断源。

中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。

实现上述中断功能的部件称为中断系统。


下图为中断系统结构图:

涉及中断的其他概念——优先级:

同一时间发生两个或多个中断,优先执行哪一个中断取决于改中断所对应的优先级,优先级高的中断会优先被执行。


51单片机的中断优先级有三条原则:


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

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

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

为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。


涉及中断的其他概念——中断嵌套:

如果单片机正在处理一个中断程序,此时,又有另一个中断现象发生(新的中断优先级更高),单片机将会停止当前的中断程序,而转去执行新的中断程序,新中断程序处理完毕后再回到刚才停止的中断程序处继续执行,执行完这个中断后再返回主程序继续执行主程序。


流程图如下:

51单片机的中断系统结构

针对上图,从左至右依次介绍:


中断源:

中断请求标志(TCON的中断标志):

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


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

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

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


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


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


TR0(TCON.4):T0运行控制位。TR0置1时,T0开始工作;TR0置0时,T0停止工作。TR0由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。


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


TR1(TCON.6):T1运行控制位,其功能与TR0类同。


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


中断允许控制(IE):

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

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


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


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


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


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


EA (IE.7), CPU中断允许(总允许)位。


优先级寄存器IP:

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

硬件查询:

两个寄存器为上文“涉及中断的其他概念——优先级”中提及的寄存器。


中断响应条件:

总结上文,当且仅当满足以下三点时,CPU才有可能响应中断。


中断源有中断请求;

此中断源的中断允许位为1;

CPU开中断(即EA=1)。

如何使用中断?

你想使用的中断是哪个?选择相应的中断号;

你所希望的触发条件是什么?

你希望在中断之后干什么?

以外部中断0为例:


主程序中需要有以下代码:


EA=1;//打开总中断开关

EX0=1;//开外部中断0

IT0=0/1;//设置外部中断的触发方式

中断服务函数:


void 函数名() interrupt 中断号

{

do anything that you want

}

推荐阅读

史海拾趣

Bergquist Company公司的发展小趣事

为了进一步扩大市场份额,Bergquist Company开始积极拓展全球市场。公司先后在英国、德国、韩国等地设立了办事机构,并在30多个国家设立了销售代表处。这些举措不仅使公司的产品和服务覆盖了更广泛的地区,还为公司带来了更多的商业机会。同时,Bergquist Company还积极寻求与其他企业的合作,通过技术交流和资源共享,不断提升自身的竞争力。

晨晶电子(Chenjing Electronics)公司的发展小趣事

在追求经济效益的同时,晨晶电子也积极履行社会责任,致力于绿色环保事业。公司通过了ISO14001环境管理体系认证,严格遵守环保法规,实施清洁生产。同时,晨晶电子还积极推广环保理念,倡导绿色消费,为保护环境、促进可持续发展做出了积极贡献。

这五个故事不仅展示了晨晶电子在电子行业中的发展历程和成就,也体现了其不断创新、追求卓越的企业精神。在未来的发展中,晨晶电子将继续秉承这一精神,努力成为电子行业的佼佼者。

FUJI公司的发展小趣事

晨晶电子自成立以来,始终坚持以技术创新为核心竞争力。公司拥有一支高素质的研发团队,致力于石英晶体元器件的研发与生产。通过不断的技术创新和产品升级,晨晶电子在行业内逐渐树立了技术领先的地位。其产品广泛应用于通信、计算机、消费电子等领域,赢得了众多客户的信赖和好评。

磁联达(CND-tek)公司的发展小趣事

随着5G技术的快速发展,磁联达(CND-tek)公司意识到无线充电技术将成为未来的重要趋势。公司投入大量资源进行无线充电发射线圈的研发,经过多次试验和改进,终于成功推出了一款性能稳定、效率高的无线充电产品。这一创新不仅为公司带来了丰厚的利润,也进一步巩固了公司在行业内的领先地位。

Bombardier Inc公司的发展小趣事

除了航空领域,庞巴迪公司在铁路运输方面也取得了重要进展。其生产的CITYFLO系列自动列车控制系统在全球范围内得到了广泛应用。该系统采用了先进的电子技术和算法,实现了列车的自动驾驶和精确控制,大大提高了铁路运输的安全性和效率。此外,庞巴迪还生产了各种铁路车辆和相关电子设备,为全球铁路运输业的发展做出了重要贡献。

以上五个故事展示了庞巴迪公司在电子行业发展中的关键历程和成就。从水上飞机到现代商用喷气客机,从航空电子系统到铁路运输控制系统,庞巴迪凭借其卓越的技术实力和创新能力,在电子行业中树立了杰出的品牌形象。

Anaren Ceramics公司的发展小趣事

随着技术的不断成熟,Anaren Ceramics公司开始积极拓展市场。公司不仅在国内市场上取得了显著的成绩,还积极开拓国际市场。通过与全球知名电子企业的合作,Anaren Ceramics公司的产品逐渐进入了国际市场,赢得了众多客户的信赖和好评。这一系列的市场拓展活动不仅提升了公司的品牌影响力,也为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

DSP28027

我是刚学习DSP的新人,有问题需要请教,DSP的库文件在软件的什么地方?如何调用库??谢谢…

查看全部问答>

小姚原创---痛批3G网络监控之三点害处。[说的很到位]

(完全原创,)黄婆卖瓜要自卖自夸,但今天我就要狠批一下我们自己的“瓜”。 3G网络监控好处很多,能解决很多普通网络监控解决不了的问题,也为网络监控的安装简单了很多,如公交车实时监控,长途客车的实时监控,无线机站的实时监控,轮船的实时 ...…

查看全部问答>

Using LabVIEW, LabVIEWFPGA, & TestStandwith NI VeriStand

Using LabVIEW, LabVIEWFPGA, & TestStandwith NI VeriStand…

查看全部问答>

Winbond

请问Winbond  w78e52b-24是一个什么芯片啊,他的编程是不是跟51单片机的编程一样,两者兼容不?…

查看全部问答>

WDK怎么学啊?

我想自己编一个NDIS过滤器,搞了半天也不得要领,都说DDK过时了,学了几天WDK也没入门,大家帮帮我啊!!!…

查看全部问答>

evc下如何遍历ftp站点文件夹?

如题!现在需要用evc开发程序,远程下载ftp站点的文件夹,遍历目录,下载所有文件。 evc下不支持cftpfilefind,用findfirstfile也不能访问远程ftp站点文件夹,有没有其他好的方法?? 急啊,大虾们顶把~~~~…

查看全部问答>

TMS320LF2407 看门狗问题,请大侠帮助,谢谢

/*SPI-TLC5620 DA转换程序*/ #include \\"register.h\\" void SystemInit(); void Timer1Init(); void KickDog();   void SPI_Init(); void DA_OUT(unsigned CHANNEL,unsigned int RNG,unsigned int SPI_DATA);   ...…

查看全部问答>

CCSv4的on-chip工具的一些疑问

CCSv4的on-chip工具的一些疑问,如图所示,它的clock部分怎么是改不了的啊…

查看全部问答>

TI真有意思,还送了个抽奖工具

先来个全家福   这个抽奖工具是不是挺熟悉的~~~   内部   一个12002模块,一个10501模块,一个12001芯片和一个23610芯片   10501好小! 23610恐怖,该用什么电源给它输入呢?…

查看全部问答>