历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2018年12月19日 | 89c51中断系统及中断控制

2018-12-19 来源:eefocus

现代的计算机都具有实时处理功能,当外界有突发事件时,cpu能够及时的做出处理,这就是靠中断来实现的。


当CPU正在处理某一命令时,这时外部发生了某一事件(如电平的变化,或者定时器/计数器溢出时)请求CPU去处理该事件,于是CPU停止处理当前的事件,并保存当前停止时的地址,转去处理所发生的事件,处理完毕后,CPU返回原先保存的停止时的地址,继续处理原先的事件,这样的过程被称为中断。



上图即为中断过程示意图,产生中断的请求源被称为中断源,中断源向CPU提出的处理请求被称为中断请求或中断申请。CPU暂时中止当前的事件,转去处理中断请求所对应的事件称为CPU的中断响应过程,对事件的整个处理过程称为中断服务(中断处理)。处理完毕后,返回到原先被中止的地方称为中断返回。


因为有中断请求时,CPU当前执行的的程序是随机的,所以CPU在执行中断服务程序之前,除了硬件会自动把断点地址压入堆栈外,还要注意保护现场数据(相关的工作寄存器,累加器,标志位等信息),以便于在执行完中断服务程序之后恢复原先数据(称为恢复现场)。



89c51单片机的中断系统如图所示



89c51有5个中断源:


   INT0    :外部中断0请求,低电平有效。


    INT1    : 外部中断1请求,低电平有效。


    T0    : 定时/计数器0溢出中断请求。


    T1    :定时/计数器1溢出中断请求。


    TXD/RXD    : 串口中断请求,当串口发送/接受完一帧数据时,便请求中断。


其中 INT0/1是两个外部中断,T0/1,TXD/RXD是3个内部中断


中断控制


      89c51有以下4个特殊功能寄存器


定时器控制寄存器TCON(用6位);


串行口控制寄存器SCON(用2位);


中断允许寄存器IE;


中断优先级寄存器IP.


其中,TCON和SCON只有一部分位用于中断控制。通过对以上各种特殊功能寄存器的各位进行置位或复位操作,即可实现各种中断控制的功能。


1、TCON中的中断标志位



TF1 : 定时/计数器1的中断请求标志位,当定时/计数器溢出时,该位自动置1,并向CPU发出中断请求,当CPU响应中断时,硬件会自动对该位清0。当然,你也可以用“位操作指令”对TF0进行置“1”或清“0”操作。


TF0 :定时/计数器0的中断请求标志位,与TF1原理相同。


IE1 : 外部中断1的中断请求标志位,当检测到外部中断引脚上存在有效的中断请求信号时,由硬件自动使IE1置1,当CPU响应该中断请求时,由硬件自动使IE1清0。


IT1 : 外部中断1的中断触发方式控制位


       IT1 = 0 时,外部中断1为电平触发方式。CPU在每一个机器周期采样外部中断1请求引脚的输入电平,若外部中断1请求引脚为低电平,则使IE1位置1,若为高电平,则IE1清0。


        IT1 = 1 时,外部中断1为边沿触发方式。CPU如果在两个连续的机器周期采样过程中,一个为高电平。接着下一个为低电平,那么IE1则置1,直到CPU响应该中断时,才由硬件使IE1位清0。


IE0 : 外部中断0的中断请求标志位,与IE1原理相同。


IT0 : 外部中断0的中断触发方式控制位,与IT1原理相同。


2、串行控制寄存器SCON



TI : 串行口发送中断请求标志位。CPU将数据写入SBUF时,就启动发送,每发送完一帧串行数据后,硬件自动把TI位置1,但CPU响应中断时,并不清除TI,必须在中断服务程序中由软件对TI清0。


RI :串行口接收中断请求标志位,在串口允许接收时,每接收完一个串行帧,硬件自动对RI置1.同样CPU响应中断时不会清除RI位,必须用软件对其清0。


3、中断允许控制寄存器IE


89c51对中断源的开放和关闭由中断允许寄存器控制,格式如下



中断允许寄存器IE对中断的开放和关闭实现两级控制,所谓的两级控制就是有一个总的开关中断控制位EA,当EA=0时,屏蔽所有的中断申请,及任何中断申请都不接受,当EA=1时,CPU开放中断,但5个中断源还有由其所对应的控制位的状态进行中断的允许控制。


EA : 中断允许总控制位。 EA = 0 时,屏蔽所有的中断请求,EA = 1时,CPU开放中断,对于中断源的请求是否允许还要取决于各中断源的中断允许控制位的状态。


ES : 串行口中断允许控制位。ES = 0时,禁止串行口中断,ES = 1时,允许串行口中断。


ET1  ;定时/计数器1的溢出中断允许控制位。ET1 = 0时,禁止T1中断,ET1 = 1时,允许T1中断。


EX1 : 外部中断1中断允许控制位。EX1 = 0时,禁止外部中断1中断,EX1 = 1时,允许外部中断1中断。


ET0 :  定时/计数器0的溢出中断允许控制位。ET0 = 0时,禁止T0中断,ET0 = 1时,允许T0中断。


EX0 : 外部中断0中断允许控制位。EX0 = 0时,禁止外部中断0中断,EX0 = 1时,允许外部中断0中断。


4、中断优先级控制寄存器


89c51有两个中断优先级,每一个中断请求源均可编程为高优先级中断和低优先级中断。



PS : 串行口中断优先级控制位,置1时,为高优先级,置0时,为低优先级。


PT1 : 定时/计数器1中断优先级控制位,控制方法同上。


PX1 : 外部中断1中断优先级控制位,控制方法同上。


PT0 : 定时/计数器0中断优先级控制位,控制方法同上。


PX0 : 外部中断0中断优先级控制位,控制方法同上。


当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件的查询顺序,如下图所示



当CPU正在处理一个中断请求时,又出现了一个优先级比它高的中断请求时,这时CPU会暂时中止对低优先级中断源的处理,保护当前断点,转去响应优先级更高的中断请求。



89c51中断优先控制的基本原则:


高优先级的中断可以中断正在响应的低优先级的中断,反之则不能


同优先级中断不能互相中断


同一中断优先级中,若有多个中断源同时请求中断,则CPU先响应优先权高的中断,后响应优先权低的中断。

推荐阅读

史海拾趣

Einfochips公司的发展小趣事

为了满足不断增长的ASIC和嵌入式服务需求,Einfochips公司决定在印度孟买附近的Pune设立一家新的设计中心。该设计中心将为亚洲和北美客户提供服务,主要涉及存储网络、无线通信和消费多媒体等领域。这一举措不仅加强了Einfochips在亚洲和北美市场的地位,还为其未来的发展奠定了坚实基础。

Don Connex Electronics Co Ltd公司的发展小趣事

Don Connex Electronics始终将研发创新作为公司的核心竞争力。公司每年将大量资金投入到新技术、新产品的研发中,不断推出具有市场竞争力的产品。同时,公司还积极与高校、科研机构合作,引进高端人才,加强技术研发力量。这些举措使Don Connex Electronics在激烈的市场竞争中始终保持领先地位。

Ethertronics公司的发展小趣事

近年来,随着环保意识的提高,Don Connex Electronics积极响应绿色发展的号召,将环保理念融入产品设计和生产过程中。公司采用环保材料、节能减排的生产工艺,确保产品在使用过程中对环境的影响降到最低。同时,公司还积极参与环保公益活动,推动电子行业的绿色发展。

BEKA Associates Ltd公司的发展小趣事

人才是企业发展的核心竞争力。BCD Semi(Diodes)非常重视人才队伍的建设和培养。公司积极引进国内外优秀的研发、生产和销售人才,为他们提供良好的工作环境和职业发展机会。同时,公司还注重员工的培训和提升,定期组织各类培训活动和技术交流会议,帮助员工不断提升自身的专业技能和综合素质。通过这些措施,BCD Semi成功打造了一支高素质、专业化的人才队伍,为公司的持续发展提供了有力的人才保障。

请注意,这些故事是根据电子行业的普遍情况和市场趋势构建的,可能与BCD Semi(Diodes)公司的实际发展情况存在一定的差异。如需了解该公司更详细的发展故事,建议查阅公司官方网站、相关新闻报道或行业分析报告等权威渠道获取更准确的信息。

AINFO Inc公司的发展小趣事

AINFO Inc公司在初创期便明确了其在电子行业中的技术发展方向和市场定位。公司注重技术积累,投入大量资源进行研发,逐步在某一领域取得了技术突破。同时,公司对市场进行了深入调研,确定了目标客户群体和市场需求,为后续的产品开发和市场推广打下了坚实基础。

General Magnetics Inc公司的发展小趣事
确保输入电压稳定且符合电子变压器的额定电压范围。

问答坊 | AI 解惑

监视电视系统防雷防护技术方案简介

一、 闭路监视电视系统简介:     CCTV系统结构:     电视监控系统(Closed Circuit Television,简称CCTV),一般由以下三部分组成:     前端部分:     主要由黑白(彩色)摄像机、镜头、云台、防 ...…

查看全部问答>

高人可以帮我看下我的这个拨码开关程序老有点小我问题,,十万火急

process(clk_a) VARIABLE cnt_a : std_logic_vector(7 downto 0):=\"11111111\"; begin   if (clk_a\'event and clk_a=\'1\') then    if cnt_a=\"11111111\" then     cnt_a:=d;     full_a…

查看全部问答>

Altium Designer 使用

Altium Designer 使用 —— 快速制作原理图封装当制作引脚数比较多的器件的原理图封装时,可以使用AD提供的“smart grid insert”功能快速制作原理图封装库。本文以制作K9F1G08为例,进行简单说明。K9F1G08的引脚分布如图1所示:1. 打开 excel ,按 ...…

查看全部问答>

新建一个wince 的mfc exe,怎么在对话框中添加一个ie控件,浏览一个url(本地页面),thanks

新建的时候,选择,WCE MFC appWizard[exe] ,然后再选择Dialog base, 怎么样在该Dialog上添加一个ie控件,然后去浏览一个本地url? thanks…

查看全部问答>

最新cadence(allegro)视频教程

本人从朋友那里得到一份cadence(allegro)视频教程15.5板本,是一个培训班的内部视频讲义,清晰度很高,很具体详细,是自学的好资料。如果您没时间看书或者想很快学会allegro的话就请联系:13783696474   或者QQ:20247125    ...…

查看全部问答>

新人报道

我是刚刚来到的新人,刚刚接触WINCE。现在跟老师做着一个项目,需要将一个PC上的一个写好的软件移植到wince6.0下面,平台在mini的6410上搭建,还需要搞好一个ccd摄像头的驱动(有可二次开发的开发包),想问问,如果要入门,那么我应该先看拿些书籍 ...…

查看全部问答>

f2812 SCI RS485 调试

1.最近我用sci调试RS485的时候遇到一个怪现象: 有时候(不是全部,重新加载程序的时候一般都是)cpu明明有数据发出来,SCIRX,SCITX波形正常,可是485驱动芯片出来的两线信号发不出来,示波器只能看到负半波.只要我把与其通信的人机界面的通讯口拔出来 ...…

查看全部问答>

proteus仿真出现问题

proteus仿真出现问题,如下图,不知怎么回事?…

查看全部问答>

时钟的触发时序执行时间?

最近在学习FPGA方面知识,对时钟触发有了了解,但有好多问题有些不明白。希望大虾解释 如: always(posedge CLK) begin //执行任务块 end 假如时钟的周期为50nS,占空比50%;所执行的任务块比较耗时间,超过50nS,而此时任务块尚未完全执行完 ...…

查看全部问答>

在PCB中设计WIFI时候注意事项

各位大神,在PCB中设计WIFI时候注意事项有哪些?你们有什么经验?…

查看全部问答>