当前位置:首页 > 单片机 > 单片机
[导读]为了解决MCS-51系列单片机只能由IP寄存器设定两级优先级的问题,文中给出了利用软件对中断优先级进行扩展的方法,同时给出了高于两个优先级的多优先级软件扩展程序。

    摘要:为了解决MCS-51系列单片机只能由IP寄存器设定两级优先级的问题,文中给出了利用软件对中断优先级进行扩展的方法,同时给出了高于两个优先级的多优先级软件扩展程序。

    关键词:单片机;中断;优先级;寄存器

1 引言

所谓中断是指当CPU正在处理某件事情的时候,外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或定时器计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件以后,再回到原来被中止的地方继续原来的工作,这样的一个过程称之为中断。以8051为例,中断系统含有5个中断源,分别是外部中断0请求(INT0),外部中断1请求(INT1),定时/计数器0溢出中断请求(T0),定时/计数器1溢出中断请求(T1)以及串行口中断请求(Tx/Rx)。既然系统含有5个中断源,就有可能出现数个中断源同时提出中断请求的情况,这样,设计人员必须事先根据它们的轻重缓急来为每个中断源确定CPU对其的响应顺序。然而,对于中断优先级寄存器IP来说,只可能设定两级优先,即控制位为1时对应的中断源为高级中断,反之,控制位为0时对应的为低级中断。这样就出现一个问题:如果一个中断正在执行,如何才能让它响应同级甚至是低级中断请求呢?

2 中断多优先级的扩展

根据8051的结构特点,其中断系统中含有两个不可寻址的“优先级生效”触发器。一个用于指出CPU是否正在执行高优先级的中断服务程序,这个触发器为1时,系统将屏蔽所有的中断请求;另一个则指出CPU是否正在执行低优先级中断服务程序,该触发器为1时,将阻止除高优先级以外的一切中断请求。由此可见,若要响应同级甚至是低级中断请求,必须使得该“优先级生效”触发器清零。但该触发器又是不可寻址的,所以无法用软件直接清零。遍历系统所提供的111条指令,只有RETI可以达到此目的。该指令可在CPU执行该指令时,一方面清除中断响应时所置位的“优先级生效”触发器,另一方面可从当前栈顶弹出断点地址送入程序计数PC,从而返回主程序。

3 软件扩展方法

3.1 高级中断源响应低级中断源的软件设计

现以当前IE=84H(开放外部中断1及总控制位),IP=04H?设定INT1为高优先级?正在执行外部中断1服务子程序为例来进行说明。如欲响应串行口中断,也就是要实现高级中断源响应低级中断源,设计时可加入如下代码而无须改变IP寄存器的内容:

PUSH IE ;IE内容入栈保护

MOV IE , #10010000B ;开放串行口中断

CALL PP ;继续执行原中断子程序,但可

随时响应串行口中断请求

...

POP IE ;恢复原IE内容

RETI

PP: RETI

3.2 同级中断源之间的响应

上述代码体现了高级中断源(INT1)响应低级中断源(串行口)的软件实现方法。但是, 8051系统共含有5个中断源,因此必须解决同优先级中断之间的嵌套问题,具体源程序如下:

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP X0 ;INT0入口地址

ORG 000BH

LJMP T0 ;T0入口地址

ORG 0013H

LJMP X1 ;INT1入口地址

ORG 001BH

LJMP T1 ;T1入口地址

ORG 0023H

LJMP SS ;串行口入口地址

MAIN: MOV IE ,#9FH ;开放所有中断

MOV IP,#03H ;设定INT0、T0为高优先级

SJMP $

X0: PUSH DPL

PUSH DPH

MOV DPTR,#X0RL

PUSH DPL

PUSH DPH

RETI ;(PC)=X0RL,清"高优先级生效"

触发器,此时可响应其它中断请求

X0RL:· ;INT0子程序的真实入口地址

·

·

·

POP DPH

POP DPL

RETI

T0: PUSH DPL

PUSH DPH

MOV DPTR,#T0RL

PUSH DPL

PUSH DPH

RETI ;(PC)=T0RL,清"高优先级生效"

触发器,此时可响应其它中断请求

T0RL: · ;T0子程序的真实入口地址

·

·

·

POP DPH

POP DPL

RETI

X1: PUSH DPL

PUSH DPH

MOV DPTR,#X1RL

PUSH DPL

PUSH DPH

RETI ;(PC)=X1RL,清“高优先级生效”

触发器,此时可响应其它中断请求

X1RL: · ;INT1子程序的真实入口地址

·

·

·

POP DPH

POP DPL

RETI

T1: PUSH DPL

PUSH DPH

MOV DPTR,#T1RL

PUSH DPL

PUSH DPH

RETI ;(PC)=T1RL,清"高优先级生效"

触发器,此时可响应其它中断请求

T1RL: · ;T1子程序的真实入口地址

·

·

·

POP DPH

POP DPL

RETI

SS: PUSH DPL

PUSH DPH

MOV DPTR,#SSRL

PUSH DPL

PUSH DPH

RETI ;(PC)=SSRL,清"高优先级生效"

触发器,此时可响应其它中断请求

SSRL: · ;串行口子程序的真实入口地址

·

·

·

POP DPH

POP DPL

RETI

上述程序利用IP寄存器给出了两级优先级,其中INT0、T0为高优先级,INT1、T1串行口为低优先级。为使某中断能响应同级甚至低级中断,只要在中断服务子程序中用RETI指令清除相应的不可寻址的“优先级生效”触发器即可。程序一开始的两条PUSH指令的作用是对原始数据进行入栈保护(如此时DPTR中的数据不需保留,则这两条压栈指令也可不要,相应的弹栈指令也可不要),然后将其真实子程序入口地址入栈,并经RETI出栈后弹给PC指针,以便在执行完RETI后正确执行真实子程序。当该中断服务子程序执行完毕后,RETI将返回主程序断点处以继续执行原来程序。

4 结束语

本文所阐述的多优先级扩展方法是纯软件方法,该方法只需在程序中加入为数不多的相应代码,便可进行各种中断嵌套(如同优先级响应或高优先级响应低优先级等)。此方法的代价是要花费更多的中断响应时间,但相对于添加硬件扩展的方法而言,这点代价还是值得的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭