中断处理方法及微控制器的制作方法

文档序号:6339040阅读:136来源:国知局
专利名称:中断处理方法及微控制器的制作方法
技术领域
本发明涉及微控制器技术领域,特别涉及一种中断处理方法及微控制器。
技术背景
目前,计算机都具有实时处理功能,依靠中断技术,计算机能够对外界随机发生的 事件做出及时处理。当CPU正在处理某件事情的时候,外部发生的某一事件请求CPU迅速 去处理,例如一个电平的变化、一个脉冲沿的发生或定时器计数溢出等,于是CPU暂时中 止当前的工作,转去处理发生的事件。CPU处理完该事件以后,再回到原来被中止的地方,继 续原来的工作。这样的过程就是中断。
传统的8051微控制器采用12个时钟周期为一个机器周期,一个机器周期由6个 状态组成,每个状态由两个时钟周期组成,一条指令的执行时间为1到2个机器周期,执行 一条指令的时间为12个或M个时钟周期。CPU在每个机器周期的S5P2状态,各中断源被 采样并设置相应的中断标志,在每个机器周期的S6P2状态,按优先级顺序查询中断源的中 断标志,并处理请求的中断源,且在下一个机器周期的Sl状态,响应最高级的中断请求。
通常,单片机一旦响应中断,根据相应的中断优先级,由硬件执行一条长调用指令 LCALL,将PC (Program Counter,程序指针)当前的值压入堆栈,以保护断点,再将相应的中 断服务程序的入口地址送入PC,8051微控制器接着从中断服务程序入口处开始执行。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题
传统的8051微控制器的长调用指令LCALL需要M个时钟周期,指令运行速度比 较慢,响应中断的时间较长,中断处理的效率不高。发明内容
本发明的实施例提供一种中断处理方法及微控制器,能够减少响应中断的时间, 提高中断处理的效率。
本发明实施例采用的技术方案为
一种中断处理方法,包括
当具有所响应的中断程序时,执行长调用指令,其中,所述长调用指令包括7个时 钟周期;
将程序指针当前的值压入堆栈,以保护断点;
在所述长调用指令的第2和第4个时钟周期,将相应的中断入口地址送入程序总 线.一入 ,
在所述长调用指令的倒数第2个时钟周期,将所述中断入口地址从程序总线送入 程序指针,以使所述中断程序执行完后,从所述中断入口地址处执行下一条指令。
一种微控制器,包括
执行模块,用于当具有所响应的中断程序时,执行长调用指令,其中,所述长调用 指令包括7个时钟周期;
压入模块,用于将程序指针当前的值压入堆栈,以保护断点;
第一处理模块,用于在所述长调用指令的第2和第4个时钟周期,将相应的中断入 口地址送入程序总线;
第二处理模块,用于在所述长调用指令的倒数第2个时钟周期,将所述中断入口 地址从程序总线送入程序指针,以使所述中断程序执行完后,从所述中断入口地址处执行 下一条指令。
本发明实施例提供的中断处理方法及微控制器,当具有所响应的中断程序时,执 行包括7个时钟周期的长调用指令,将程序指针当前的值压入堆栈,以保护断点,在所述长 调用指令的第2和第4个时钟周期,将相应的中断入口地址送入程序总线,在所述长调用指 令的倒数第2个时钟周期,将所述中断入口地址从程序总线送入程序指针,以使所述中断 程序执行完后,从所述中断入口地址处执行下一条指令。与现有技术相比,长调用指令只需 要7个时钟周期,指令运行速度较快,能够减少响应中断的时间,提高中断处理的效率。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述 中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些 实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附 图获得其它的附图。
图1为本发明实施例一提供的中断处理方法流程图2为本发明实施例二提供的微控制器结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它 实施例,都属于本发明保护的范围。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说 明。
实施例一
本实施例提供一种中断处理方法,在本实施例中,以8051微控制器为例进行说明。
如图1所示,所述方法包括
101、在每条指令的最后一个时钟周期进行中断仲裁,判断是否会阻塞中断响应, 若没有阻塞中断响应,则进入中断响应的处理。
具体地,中断定时模块在每条指令执行的最后一个时钟周期,也就是SL = 1时,进 行中断仲裁,当发现能够响应某一中断时,中断标志位拉高,引起在下个时钟周期中断请求 信号变高,表示进入中断响应的处理。由于在SL状态进行中断仲裁之前已经读取了下一条 指令,因此先将读取的下一条指令执行完,在读取的下一条指令的S2L状态,由中断请求信 号屏蔽程序存储器取指信号。
其中,所述中断仲裁具体可以包括
判断取进来的下一条指令是否为RETI (中断返回指令),或者对IE (中断允许寄存 器)、IP (中断优先级寄存器)进行读写的指令,若当前指令为RETI,或者对IE、IP进行读 写的指令,则会阻塞中断响应。
其中,在每条指令的倒数第一个状态,取进来下一条指令,如果取进来的指令为 RETI指令,则Reti_deCOde信号为1,在最后一个状态进行中断仲裁时,Reti_deCOde为1将 阻止中断请求信号intack变高,从而不会响应中断。
当IE、IP寄存器选中信号ie_sel或ip_sel有效时,将复位ieip为1,否则在cllib 的上升沿每条指令的Sl状态将ieip置为0。Ieip为高电平时表示当前指令是对IE、IP寄 存器操作的指令。当ieip有效时,屏蔽中断响应信号intack将其拉低,从而不会响应中断。
进一步的,所述中断仲裁还可以包括
如果发现能够响应当前监测到的中断,便把confirm信号置1,表示要进入中断响 应操作;
当处理同级中断时,根据中断优先级的自然顺序进行处理;
当有高级中断正在响应时,优先处理高优先级的中断;
当出现中断嵌套时,也就是说,在执行中断的过程中出现高优先级的中断时,优先 执行高优先级的中断,直到高优先级执行完再返回原来中断程序的断点继续执行。
102、当8051微控制器接收到中断请求信号intack之后,在当前执行的指令的最 后一个时钟周期,将用于控制程序存储器中的数据写入程序总线的控制信号置为无效,以 暂停将程序存储器中的数据写入程序总线。
103、在程序总线上放入长调用指令LCALL的操作码,由于此时没有从程序存储器 中读取操作码,因此程序指针不能发生变化,在中断请求信号intack有效且在当前指令的 倒数第2个时钟周期暂停PC (程序指针)值的改变,直到执行长调用指令LCALL使程序指 针跳到中断入口地址。
其中,长调用指令LCALL包括7个时钟周期,这里采用Si、S2、S3、S4、S5、S2L、SL 分别表示该长调用指令LCALL执行时所处的7个时钟周期。
104、执行长调用指令LCALL,将程序指针当前的值压入堆栈,以保护断点。
105、在长调用指令LCALL的第2和第4个时钟周期,将中断程序的入口地址放在 程序总线上。
106、在所述长调用指令LCALL的倒数第2个时钟周期,将所述中断入口地址从程 序总线送入程序指针,以使所述中断程序执行完后,8051微控制器接着从所述中断入口地 址处执行下一条指令。
本发明实施例提供的中断处理方法,当具有所响应的中断程序时,执行包括7个 时钟周期的长调用指令,将程序指针当前的值压入堆栈,以保护断点,在所述长调用指令的 第2和第4个时钟周期,将相应的中断入口地址送入程序总线,在所述长调用指令的倒数第 2个时钟周期,将所述中断入口地址从程序总线送入程序指针,以使所述中断程序执行完 后,从所述中断入口地址处执行下一条指令。与现有技术相比,长调用指令只需要7个时钟 周期,指令运行速度较快,能够减少响应中断的时间,提高中断处理的效率。
实施例二
本实施例提供一种微控制器,如图2所示,所述微控制器包括
执行模块201,用于当具有所响应的中断程序时,执行长调用指令,其中,所述长调 用指令包括7个时钟周期;
压入模块202,用于将程序指针当前的值压入堆栈,以保护断点;
第一处理模块203,用于在所述长调用指令的第2和第4个时钟周期,将相应的中 断入口地址送入程序总线;
第二处理模块204,用于在所述长调用指令的倒数第2个时钟周期,将所述中断入 口地址从程序总线送入程序指针,以使所述中断程序执行完后,从所述中断入口地址处执 行下一条指令。
进一步的,如图3所示,所述微控制器还可以包括
设置模块205,用于当接收到中断请求信号后,在当前指令的最后一个时钟周期, 将用于控制程序存储器中的数据写入程序总线的控制信号置为无效,以暂停将程序存储器 中的数据写入程序总线;
放入模块206,用于向程序总线上放入所述长调用指令的操作码。
进一步的,如图3所示,所述微控制器还可以包括
中断仲裁模块207,用于在当前指令的最后一个时钟周期,进行中断仲裁,判断是 否会阻塞中断响应;
若没有阻塞中断响应,则进入中断响应的处理。
进一步的,所述中断仲裁模块207,具体用于判断取进来的下一条指令是否为中断 返回指令RETI,或者对中断允许寄存器IE、中断优先级寄存器IP进行读写的指令;
若当前指令为RETI,或者对IE、IP进行读写的指令,则会阻塞中断响应。
进一步的,所述中断仲裁模块207,具体用于当有同级中断正在响应时,根据中断 优先级的自然顺序进行处理;当有高级中断正在响应时,优先处理高优先级的中断;当在 执行中断的过程中出现高优先级的中断时,先执行高优先级的中断,然后再返回原中断程 序的断点继续执行。
本发明实施例提供的微控制器,当具有所响应的中断程序时,执行包括7个时钟 周期的长调用指令,将程序指针当前的值压入堆栈,以保护断点,在所述长调用指令的第2 和第4个时钟周期,将相应的中断入口地址送入程序总线,在所述长调用指令的倒数第2个 时钟周期,将所述中断入口地址从程序总线送入程序指针,以使所述中断程序执行完后,从 所述中断入口地址处执行下一条指令。与现有技术相比,长调用指令只需要7个时钟周期, 指令运行速度较快,能够减少响应中断的时间,提高中断处理的效率。
本发明实施例提供的微控制器可以实现上述提供的方法实施例。本发明实施例提 供的中断处理方法及微控制器可以适用于8051微控制器的中断处理,但不仅限于此。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以 通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质 中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为 磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(RandomAccess Memory, RAM)等。
以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应 涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种中断处理方法,其特征在于,包括当具有所响应的中断程序时,执行长调用指令,其中,所述长调用指令包括7个时钟周期;将程序指针当前的值压入堆栈,以保护断点;在所述长调用指令的第2和第4个时钟周期,将相应的中断入口地址送入程序总线; 在所述长调用指令的倒数第2个时钟周期,将所述中断入口地址从程序总线送入程序 指针,以使所述中断程序执行完后,从所述中断入口地址处执行下一条指令。
2.根据权利要求1所述的方法,其特征在于,还包括当接收到中断请求信号后,在当前指令的最后一个时钟周期,将用于控制程序存储器 中的数据写入程序总线的控制信号置为无效,以暂停将程序存储器中的数据写入程序总 线.一入 ,向程序总线上放入所述长调用指令的操作码。
3.根据权利要求1或2所述的方法,其特征在于,还包括在当前指令的最后一个时钟周期,进行中断仲裁,判断是否会阻塞中断响应; 若没有阻塞中断响应,则进入中断响应的处理。
4.根据权利要求3所述的方法,其特征在于,所述进行中断仲裁,判断是否会阻塞中断 响应包括判断取进来的下一条指令是否为中断返回指令RETI,或者对中断允许寄存器IE、中断 优先级寄存器IP进行读写的指令;若当前指令为RETI,或者对IE、IP进行读写的指令,则会阻塞中断响应。
5.根据权利要求3所述的方法,其特征在于,所述进行中断仲裁,判断是否会阻塞中断 响应包括当有同级中断正在响应时,根据中断优先级的自然顺序进行处理; 当有高级中断正在响应时,优先处理高优先级的中断;当在执行中断的过程中出现高优先级的中断时,先执行高优先级的中断,然后再返回 原中断程序的断点继续执行。
6.一种微控制器,其特征在于,包括执行模块,用于当具有所响应的中断程序时,执行长调用指令,其中,所述长调用指令 包括7个时钟周期;压入模块,用于将程序指针当前的值压入堆栈,以保护断点;第一处理模块,用于在所述长调用指令的第2和第4个时钟周期,将相应的中断入口地 址送入程序总线;第二处理模块,用于在所述长调用指令的倒数第2个时钟周期,将所述中断入口地址 从程序总线送入程序指针,以使所述中断程序执行完后,从所述中断入口地址处执行下一 条指令。
7.根据权利要求6所述的微控制器,其特征在于,还包括设置模块,用于当接收到中断请求信号后,在当前指令的最后一个时钟周期,将用于控 制程序存储器中的数据写入程序总线的控制信号置为无效,以暂停将程序存储器中的数据 写入程序总线;放入模块,用于向程序总线上放入所述长调用指令的操作码。
8.根据权利要求6或7所述的微控制器,其特征在于还包括中断仲裁模块,用于在当前指令的最后一个时钟周期,进行中断仲裁,判断是否会阻塞 中断响应;若没有阻塞中断响应,则进入中断响应的处理。
9.根据权利要求8所述的微控制器,其特征在于,所述中断仲裁模块,具体用于判断取进来的下一条指令是否为中断返回指令RETI,或 者对中断允许寄存器IE、中断优先级寄存器IP进行读写的指令;若当前指令为RETI,或者对IE、IP进行读写的指令,则会阻塞中断响应。
10.根据权利要求8所述的微控制器,其特征在于所述中断仲裁模块,具体用于当有同级中断正在响应时,根据中断优先级的自然顺序 进行处理;当有高级中断正在响应时,优先处理高优先级的中断;当在执行中断的过程中 出现高优先级的中断时,先执行高优先级的中断,然后再返回原中断程序的断点继续执行。
全文摘要
本发明实施例公开了一种中断处理方法及微控制器,所述中断处理方法包括当具有所响应的中断程序时,执行长调用指令,其中,所述长调用指令包括7个时钟周期;将程序指针当前的值压入堆栈,以保护断点;在所述长调用指令的第2和第4个时钟周期,将相应的中断入口地址送入程序总线;在所述长调用指令的倒数第2个时钟周期,将所述中断入口地址从程序总线送入程序指针,以使所述中断程序执行完后,从所述中断入口地址处执行下一条指令。本发明适用于微控制器的中断处理。
文档编号G06F9/48GK102033779SQ20101059373
公开日2011年4月27日 申请日期2010年12月17日 优先权日2010年12月17日
发明者王洋 申请人:青岛海信信芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1