发明内容
本发明提供一种运行速度快且功耗小的微控制器及控制方法。
本发明的实施例提供一种微控制器,包括:
数据总线;
控制单元;
指令处理装置,所述指令处理装置与所述控制单元连接,所述控制单元控制所述指令处理装置完成取指令及对指令的译码;
数据运算装置,所述数据运算装置与所述控制单元及所述数据总线连接,所述控制单元控制所述数据运算装置根据所述指令的译码或还根据所述指令进行运算,得到运算结果,并通过所述数据总线将所述运算结果写入所述数据运算装置或所述指令处理装置;及
时钟发生器,所述时钟发生器用于产生所述指令处理装置、所述数据运算装置及所述控制单元的时钟信号,并将所述时钟信号输出至所述指令处理装置、所述数据运算装置及所述控制单元;
其中,所述指令处理装置包括程序计数器、程序存储器,指令预取寄存器、指令寄存器、指令缓冲寄存器及指令译码器,所述程序计数器与所述程序存储器连接,所述指令预取寄存器与所述程序存储器、所述指令寄存器及所述指令缓冲寄存器连接,所述指令寄存器连接在所述指令预取寄存器及所述指令译码器之间,所述指令缓冲寄存器连接在所述指令预取寄存器及所述数据运算装置之间;
其中,所述指令预取寄存器存储从所述程序存储器中逐条读取的指令;所述指令寄存器存储从所述指令预取寄存器中读取的指令或指令的第一个字节;所述指令缓冲寄存器存储从所述指令预取寄存器中读取的指令的第二个字节。
较佳的,所述微控制器还包括地址总线及特殊功能寄存器组,所述特殊功能寄存器组连接在所述地址总线及数据总线之间,所述控制单元将所述指令缓冲寄存器中的指令的操作数地址或相对位移量通过所述地址总线写入所述特殊功能寄存器组,并通过所述数据总线将所述特殊功能寄存器组中的操作数地址对应的操作数或相对位移量传送至数据运算装置,以供所述数据运算装置进行运算。
较佳的,所述数据运算装置包括数据选择器、多路选择器及运算单元,所述数据选择器与所述指令缓冲寄存器及所述地址总线连接,在所述指令缓冲寄存器中的指令为操作数时,所述控制单元通过所述多路选择器将所述指令缓冲寄存器中的操作数传送至所述运算单元,在所述指令缓冲寄存器中的指令为操作数地址或相对位移量时,所述控制单元通过所述所述数据选择器将所述指令缓冲寄存器中的操作数地址或相对位移量通过所述地址总线写入所述特殊功能寄存器组。
较佳的,所述微控制器还包括中断控制模块,所述中断控制模块包括:中断控制寄存器,所述控制单元通过设置所述中断控制寄存器来允许或者不允许中断;中断信号寄存器,所述控制单元在允许中断时,从中断源采集中断信号,并将从所述中断源所采集的中断信号存储在所述中断信号寄存器;优先级编码器,所述优先级编码器中存储有预设的各中断的优先级别,所述控制单元将所述中断信号寄存器中的中断信号传送至优先级编码器,并控制所述优先级编码器根据预设的各中断的优先级别来确定所采集的中断信号的优先级别;中断信号缓冲器,所述控制单元将所述优先级别最高的中断信号传送至所述中断信号缓冲器;及中断向量寄存器,所述控制单元确定中断信号缓冲器中的优先级别最高的中断信号的中断地址,并将所述中断地址存储在所述中断向量寄存器。
较佳的,所述指令包括运算指令及跳转指令,所述跳转指令包括双字节的跳转指令及三字节的跳转指令,所述运算指令的处理需要一个包括四个时钟周期的指令周期,所述双字节的跳转指令的处理需要一个包括五个时钟周期的指令周期,所述三字节的跳转指令的处理需要一个包括六个时钟周期的指令周期。
本发明还提供一种控制方法,所述控制方法包括:
提供一数据总线;
提供一指令处理装置,所述指令处理装置包括程序计数器、程序存储器,指令预取寄存器、指令寄存器、指令缓冲寄存器及指令译码器;
提供一数据运算装置;
提供一时钟发生器,所述时钟发生器产生所述指令处理装置及所述数据运算装置的时钟信号,并将所述时钟信号输出至所述指令处理装置及所述数据运算装置;
控制所述指令预取寄存器根据所述程序计数器中的地址从所述程序存储器中获取指令;
控制所述指令寄存器从所述指令预取寄存器中获取指令的第一个字节,控制所述指令缓冲寄存器从所述指令预取寄存器中获取指令的第二个字节,并将所述指令的第二个字节输出至所述数据运算装置;
控制所述指令译码器对所述指令的第一个字节译码;及
控制所述数据运算装置根据所述指令的第一个字节的译码及所述指令的第二个字节进行运算,得到运算结果,并通过所述数据总线将所述运算结果写入所述数据运算装置或所述指令处理装置。
较佳的,所述控制方法还包括:提供一地址总线;提供一特殊功能寄存器组;及将所述指令缓冲寄存器中的指令的操作数地址通过所述地址总线写入所述特殊功能寄存器组,并通过所述数据总线将所述特殊功能寄存器组中的数据传送至数据运算装置,以供所述数据运算装置进行运算。
较佳的,所述控制方法还包括:提供所述数据运算装置包括数据选择器、多路选择器及运算单元;在所述指令缓冲寄存器中的指令为操作数时,通过所述多路选择器将所述指令缓冲寄存器中的操作数传送至所述运算单元;及在所述指令缓冲寄存器中的指令为操作数地址或相对位移量时,通过所述所述数据选择器将所述指令缓冲寄存器中的操作数地址或相对位移量通过所述地址总线写入所述特殊功能寄存器组。
较佳的,所述控制方法还包括:所述指令为双字节跳转指令,在第一个时钟周期,控制所述指令寄存器从所述指令预取寄存器中获取指令的第一个字节;在第二个时钟周期,确定是否需要跳转,当确定需要跳转时,将所述程序计数器中的地址传送至所述数据运算装置,并将所述指令缓冲寄存器中的指令的第二个字节输出至所述数据运算装置;在第三个时钟周期,控制所述数据运算装置根据所接收的所述程序计数器中的地址及所述指令缓冲寄存器中的指令的第二个字节进行与运算来得到跳转地址;在第四个时钟周期,将所述跳转地址写入所述程序计数器中,控制所述指令预取寄存器根据所述程序计数器中的跳转地址从所述程序存储器中获取指令,并将所述程序计数器中的地址加一;及在第五个时钟周期,将所述指令译码器所译码的信息丢弃,并等待一个时钟周期。
较佳的,所述控制方法还包括:提供一中断信号寄存器;提供一优先级编码器;提供一中断信号缓冲器;提供一中断向量寄存器;提供一二级堆栈;当允许中断时,在第一个时钟周期,采集中断信号,将所采集的中断信号写入所述中断信号寄存器,并将所述中断信号从所述中断信号寄存器传送至所述优先级编码器,控制所述优先级编码器根据预设的各中断的优先级别来确定所述中断信号的优先级别;在第二个时钟周期,将优先级别高的中断信号送往中断信号缓冲器;在第三个时钟周期,根据中断信号缓冲器中的中断信号来确定中断地址,将所述中断地址存储在中断向量寄存器,并将所述程序计数器中的地址压入所述二级堆栈中进行保存,并将所述中断地址写入所述程序计数器;及在第四个时钟周期,根据所述程序计数器中的中断地址,控制所述指令预取寄存器从所述程序存储器中读取指令。
上述发明的微控制器利用简单的结构即可实现胎压监测,且执行一条指令的时间最长的为6个时钟周期,指令运行速度快且功耗小。
具体实施方式
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其他有益效果显而易见。可以理解,附图仅提供参考与说明用,并非用来对本发明加以限制。附图中显示的尺寸仅仅是为便于清晰描述,而并不限定比例关系。
请参考图1,为本发明实施例的微控制器1的***框图。在本实施例中,所述微控制器1用于胎压监测。在其他实施例中,所述微控制器1还可用于执行其他操作。在本实施例中,所述微控制器1从外部传感器2处获得数据。在本实施例中,所述数据为轮胎压力及温度信息。所述微控制器1还将所获得的数据进行处理,并将所处理的数据传送至中央监视器3。在本实施例中,所述微控制器1包括多个功能模块,分别为地址总线10、数据总线20、时钟发生器30、指令处理装置40、数据运算装置50、***功能模块60及控制单元70。
请继续参考图2,所述时钟发生器30用于产生微控制器1的各个功能模块的时钟信号,并将所述时钟信号输出至对应的功能模块。
所述指令处理装置40包括程序计数器41、程序存储器42、指令预取单元43及指令译码器44。所述程序计数器41与所述程序存储器42连接,存储需要从程序存储器42中读取的指令的地址。所述程序存储器42用于存储在微控制器1上运行的程序代码,所述程序代码由若干指令组成。所述指令包括单字节指令、双字节指令及三字节指令。其中,所述指令大部分为单字节指令。所述单字节指令包括运算指令。所述双字节指令及所述三字节指令都包括运算指令及跳转指令。当所述指令为运算指令时,所述双字节指令的第一个字节为操作码,所述双字节指令的第二个字节为操作数或者操作数地址,所述三字节指令的第一个字节为操作码,所述三字节指令的第二个字节及所述三字节指令的第三个字节分别为操作数及操作数地址之一。当所述指令为跳转指令时,所述双字节指令的第一个字节为操作码,所述双字节指令的第二个字节为相对位移量,所述三字节指令的第一个字节为操作码,所述三字节指令的第二个字节及第三个字节为相对位移量。其中,数据在存储器中存放时采用以低字节为字地址的存放方式。
所述指令预取单元43连接在所述程序存储器42及所述指令译码器44之间,用于存储从所述程序存储器42中逐条读取的指令。所述指令预取单元43包括指令预取寄存器431、指令寄存器432及指令缓冲寄存器433。所述指令预取寄存器431与所述程序存储器42、所述指令寄存器432及所述指令缓冲寄存器433连接,存储从所述程序存储器42中逐条读取的指令。所述指令寄存器432连接在所述指令预取寄存器431及所述指令译码器44之间,用于存储从所述指令预取寄存器431中读取的指令或指令的第一个字节。其中,当指令为单字节指令时,所述指令寄存器432存储从所述指令预取寄存器431中读取指令,当指令为双字节指令时,所述指令寄存器432存储从所述指令预取寄存器431中读取指令的第一个字节。所述指令缓冲寄存器433连接在所述指令预取寄存器431及所述数据运算装置50之间,用于存储从所述指令预取寄存器431中读取的指令的第二个字节。所述指令译码器44用于对指令寄存器432中存储的内容进行译码,来得到译码信息。其中,所述存储的内容为指令或指令的第一个字节。所述译码信息为运算信息,如加、减、乘、除等,或者跳转信息。
所述数据运算装置50包括数据选择器51、工作寄存器组52、累加器53、第一多路选择器54,第二多路选择器55、运算单元56及数据缓冲器57。所述数据选择器51包括两输入端及一输出端,所述两输入端分别与所述指令缓冲寄存器433及所述数据缓冲器51连接,所述输出端与所述地址总线10连接。所述数据选择器51用于从所述指令缓冲寄存器433及所述数据缓冲器51通过所述两输入端输入的输入信号中选择一输入信号,并通过所述输出端输出至所述地址总线10。
所述工作寄存器组52与所述数据总线20连接,所述工作寄存器组52包括若干寄存器,用于暂时存储等待处理的数据或者已经处理过的数据。
所述累加器53与所述数据总线20连接,用于存储运算的操作数及运算结果。
所述第一多路选择器54为四选一多路选择器。所述第一多路选择器54具有四个输入端及一输出端。所述第一多路选择器54的四个输入端分别与所述工作寄存器组52、所述累加器53、所述指令缓冲寄存器433及所述程序计数器41连接。所述第一多路选择器54的输出端与所述运算单元56连接。所述第一多路选择器54用于从所述工作寄存器组52、所述累加器53、所述指令缓冲寄存器433及所述程序计数器41通过所述四个输入端所输入的输入信号中选择一输入信号,并通过所述输出端输出至所述运算单元56。
所述第二多路选择器55为三选一多路选择器。所述第二多路选择器55具有三个输入端及一输出端。所述第二多路选择器55的三个输入端分别与所述工作寄存器组52、所述累加器53及所述指令缓冲寄存器433连接。所述第二多路选择器55的输出端与所述运算单元56连接。所述第二多路选择器55用于从所述工作寄存器组52、所述累加器53及所述指令缓冲寄存器433通过所述三个输入端所输入的输入信号中选择一输入信号,并通过所述输出端输出至所述运算单元56。
所述运算单元56用于进行运算。所述数据缓冲器57连接在所述运算单元56及数据总线20之间,用于暂时存储所述运算单元56运算的结果。
所述***功能模块60连接在地址总线10及数据总线20之间,所述***功能模块60包括定时器61、I/O(input/output,输入输出)端口62、串口63、CRC(Cyclic Redundancy Code,循环冗余码校验)寄存器64及特殊功能寄存器组65。所述定时器61用于定时计数。所述I/O端口62,用于从外部传感器2获取数据。所述串口63用于与支持串行总线的中央监视器3进行通信。所述CRC寄存器64用于检测所接收的数据是否错误。所述特殊功能寄存器组65包括若干寄存器,用于分别存放从地址总线10传送过来的数据及预先存储的应用程序的第一条指令的地址。
所述控制单元70与所述指令处理装置40、数据运算装置50及***功能模块60连接。所述微控制器1用于控制所述指令处理装置40、所述数据运算装置50及所述***功能模块60的操作。所述控制单元70通过所述I/O端口62从外部传感器2处获得数据。所述控制单元70通过所述串口63将处理后的数据传送至中央监视器3。在本实施例中,所述控制单元70控制所述CRC寄存器对所获取的数据进行校验得到一校验码,根据所述校验码及预存的轮胎编号来形成数据帧,并将所述数据帧通过所述串口63传送至所述中央监视器3。
在本实施例中,当所述控制单元70控制所述译码器对所述指令译码得到的信息为运算信息时,所述指令为运算指令,当所述控制单元70控制所述译码器对所述指令译码得到的信息为跳转信息时,所述指令为跳转指令。
在本实施例中,所述微控制器1的工作方式包括正常工作模式、空闲模式及掉电模式。在空闲模式下,所述微控制器1的时钟周期增大,从而降低功耗。在空闲模式下,仅有中断信号或者***复位可将微控制器1从空闲模式下唤醒。在掉电模式下,所有时钟发生器30停止工作,更加省电。
在本实施例中,所述定时器61还响应用户的设置定时监督所述传感器2,即所述定时器61监督所述传感器2在预定时间内是否提供响应信号给所述控制单元70。当所述微控制器1处于空闲模式时,所述控制单元70在所述定时器61计时完成时判断所述传感器2是否提供响应信号。当所述传感器2提供响应信号时,所述微控制器1继续处于空闲模式。在本实施例中,当所述传感器2不提供响应信号时,所述定时器61提供一警告信号至所述控制单元70,所述控制单元70根据所述警告信号将所述特殊功能寄存器66中预先存储的应用程序的指令的地址写入所述程序计数器41,此时,所述控制单元70继续在所述定时器61计时完成时判断所述传感器2是否提供响应信号,并在所述传感器2不提供响应信号时,根据所述警告信号报警。其中,所述微控制器1可以与外部的警告单元连接,并通过所述警告单元报警。在本实施例中,所述警告单元可以为喇叭或者闪光灯等。从而,可通过2次判断所述传感器是否在预定时间内提供响应信号,来防止误判断。显然,在其他实施例中,所述控制单元70可在仅通过1次判断所述传感器2在预定时间内没有提供响应信号时,根据所述警告信号报警。在本实施例中,所述微控制器1还包括中断控制模块80。所述***功能模块60还包括二级堆栈66。所述控制单元70控制所述中断控制模块80被中断源所触发,并控制所述中断控制模块80执行所述中断源所对应的中断程序。在本实施例中,所述中断源包括外部中断及内部中断。所述外部中断包括低压中断、看门狗中断、ADC中断及传感器中断。所述内部中断包括定时器中断、串口中断及CRC中断。所述二级堆栈66用于存储所述程序计数器41的地址。
所述中断控制模块80包括中断控制寄存器81、中断信号寄存器82、优先级编码器83、中断信号缓冲器84及中断向量寄存器85。所述控制单元70通过设置所述中断控制寄存器81来允许或者不允许中断。如控制单元70将中断控制寄存器81设置为“1”来允许中断,并将中断控制寄存器81设置为“0”来不允许中断。仅当中断允许且存在中断时,***才进入中断响应,当中断不允许而存在中断时,***不进入中断响应。所述中断信号寄存器82用于存储从所述中断源处采集的中断信号,其中,所述中断信号的数量可为一个或多个。所述优先级编码器83中存储有预设的各中断的优先级别,如所述低压中断具有最高的优先权等。所述中断信号缓冲器84用于存储所述采集的中断信号中的最高优先权级别的中断信号。所述中断向量寄存器85用于存储中断信号对应的中断地址。其中,每个中断都有一个中断服务程序,所述中断服务程序的入口地址为中断地址。不同的中断对应不同的中断地址。
下面结合微控制器1的各个功能模块对微控制器1的控制方法进行说明,所述微控制器1的控制方法包括运算指令的处理过程、跳转指令的处理过程及中断信号的处理过程。
所述运算指令的处理需要一个包括四个时钟周期的指令周期。下面具体说明单字节的运算指令的处理过程:
在第一个时钟周期,执行取指令操作:所述控制单元70控制所述指令寄存器432从所述指令预取寄存器431中获取当前需要执行的指令(简称当前指令),并将所述当前指令传送至所述译码器进行译码来得到运算信息,所述控制单元70还控制所述指令预取寄存器431根据所述程序计数器41中的地址从所述程序存储器42中获取下一条指令。在第二个时钟周期,执行读操作数操作:所述控制单元70将所述工作寄存器组52及所述累加器53中的数据通过所述第一多路选择器54或所述第二多路选择器55输出至所述运算单元56。在第三个时钟周期,执行运算操作:所述控制单元70控制所述运算单元56根据所述工作寄存器组52及所述累加器53中的数据及所述译码器译码得到的运算信息进行运算。在第四个时钟周期,执行数据写回操作:所述控制单元70将所运算的结果暂时存储在所述数据缓冲器57,并将所述运算结果从所述数据缓冲器57写入所述工作寄存器组52及所述累加器53中。同时,所述控制单元70还将所述程序计数器41中的地址加一。所述处理过程依序循环执行直至所述程序存储器42中的指令读取完。
双字节的运算指令的处理过程与单字节的运算指令的处理过程相似,不同之处在于:
在第一个时钟周期,执行取指令操作时,所述控制单元70控制所述指令寄存器432从所述指令预取寄存器431中获取当前指令的第一个字节,从而所述指令预取寄存器431中为当前指令的第二个字节,所述控制单元70还将所述指令寄存器432中的所述当前指令的第一个字节传送至所述译码器进行译码来得到运算信息。在第二个时钟周期,执行读操作数操作时,所述控制单元70控制所述指令缓冲寄存器433从所述指令预取寄存器431中获取当前指令的第二个字节。当当前指令的第二个字节为操作数时,所述控制单元70通过所述第一多路选择器54或所述第二多路选择器55将所述指令缓冲寄存器433中的操作数输出至所述运算单元56,当当前指令的第二个字节为操作数地址时,所述控制单元70通过所述数据选择器51将所述指令缓冲寄存器433中的操作数地址通过所述地址总线10写入特殊功能寄存器组65,并通过所述数据总线20从所述特殊功能寄存器组65中读取操作数或者还通过所述第一多路选择器54或所述第二多路选择器55从所述工作寄存器组52及所述累加器53中读取数据。所述控制单元70还控制所述指令预取寄存器431在所述指令缓冲寄存器433从所述指令预取寄存器431中获取当前指令的第二个字节时,从所述程序存储器42组中获取下一条指令。
三字节的运算指令的处理过程与单字节的运算指令的处理过程相似,不同之处在于:
在第一个时钟周期,执行取指令操作时:所述控制单元70控制所述指令寄存器432从所述指令预取寄存器431中获取当前指令的第一个字节,并控制所述指令缓冲寄存器433从所述指令预取寄存器431中获取当前指令的第三个字节,从而所述指令预取寄存器431中的为当前指令的第二个字节,所述控制单元70还将所述指令寄存器432中的当前指令的第一个字节传送至所述译码器进行译码来得到运算信息。在第二个时钟周期,执行读操作数操作时:当当前指令的第三个字节为操作数时,所述控制单元70通过所述第一多路选择器54或所述第二多路选择器55从所述指令缓冲寄存器433获取所述操作数。当当前指令的第三个字节为操作数地址时,所述控制单元70通过所述数据选择器51将所述指令缓冲寄存器433中的操作数地址通过所述地址总线10传送至特殊功能寄存器组65,并通过所述数据总线20从所述特殊功能寄存器组65读取操作数地址对应的操作数。所述控制单元70还执行双字节的运算指令的第二个时钟周期的操作。
所述双字节的跳转指令的处理需要一个包括五个时钟周期的指令周期。下面具体说明双字节的跳转指令的处理过程:
在第一个时钟周期,执行取指令操作:所述控制单元70控制所述指令寄存器432从所述指令预取寄存器431中获取当前指令的第一个字节,从而所述指令预取寄存器431中存储的为当前指令的第二个字节。所述控制单元70还将所述指令寄存器432中存储的所述当前指令的第一个字节传送至所述译码器进行译码来得到跳转信息。其中,所述跳转指令的第二个字节为相对位移量。
在第二个时钟周期,执行判断是否跳转操作:所述控制单元70控制所述指令缓冲寄存器433从所述指令预取寄存器431中获取当前指令的第二个字节,并根据当前累加器53中的数据来确定是否需要跳转。当确定不需要跳转时,所述控制单元70不执行跳转,而继续执行下一条指令。当确定需要跳转时,所述控制单元70通过所述第一多路选择器54将所述程序计数器41中的地址传送至所述运算单元56,并通过所述数据选择器51将所述指令缓冲寄存器433中的相对位移量通过所述地址总线10写入所述特殊功能寄存器66,并通过所述数据总线20将所述相对位移量提供给所述运算单元56。
在第三个时钟周期,执行运算操作:所述控制单元70控制所述运算单元56根据所接收的所述程序计数器41中的地址及所述相对位移量进行与运算来得到跳转地址。
在第四个时钟周期,执行数据写回操作:所述控制单元70将运算得到的跳转地址暂时存储在所述数据缓冲器57,并通过所述数据选择器51将所述数据缓冲器57中的跳转地址通过所述地址总线10写入特殊功能寄存器66,并通过所述数据总线20将所述跳转地址写入所述程序计数器41中。所述控制单元70控制所述指令预取寄存器431根据所述程序计数器41中的跳转地址从所述程序存储器42中获取指令,并将所述程序计数器41中的跳转地址加一。
在第五个时钟周期,执行等待操作:所述控制单元70将所述指令译码器44所译码的信息丢弃,并等待一个时钟周期。随后,微控制器1顺序执行跳转后的指令。
所述三字节的跳转指令的处理与双字节的跳转指令的处理相似,不同之处在于:
所述三字节的跳转指令需要一个包括六个时钟周期的指令周期。在第一个时钟周期,执行取指令操作时:所述控制单元70控制所述指令寄存器432从所述指令预取寄存器431中获取当前指令的第一个字节,并控制所述指令缓冲寄存器433从所述指令预取寄存器431中获取当前指令的第二个字节,从而所述指令预取寄存器431中的为当前指令的第三个字节,所述控制单元70还将所述指令寄存器432中的当前指令的第一个字节传送至所述译码器进行译码来得到跳转信息。其中,所述跳转指令的第二个字节为相对位移量。
在第二个时钟周期,执行条件运算操作时:所述控制单元70通过数据选择器51将所述指令缓冲寄存器433中的相对位移量通过所述地址总线10写入所述特殊功能寄存器66中,并通过所述数据总线20传送至运算单元56,并将所述工作寄存器组52或所述累加器53中的数据通过所述第一多路选择器54或所述第二多路选择器55传送至所述运算单元56。
在第三个时钟周期,执行判断是否跳转操作:所述控制单元70控制所述运算单元56根据所述相对位移量及所述工作寄存器组52或所述累加器53中的数据进行与运算,并根据所述运算结果来确定是否需要跳转。当确定不需要跳转时,所述控制单元70不执行跳转,继续执行下一条指令。当确定需要跳转时,所述控制单元70通过所述第一多路选择器54将所述程序计数器41中的地址传送至所述运算单元56,并通过所述数据选择器51将所述指令缓冲寄存器433中的相对位移量通过所述地址总线10写入所述特殊功能寄存器66中,并通过所述数据总线20输出至所述运算单元56。
在第四个时钟周期的执行运算操作过程与双字节的跳转指令的第三个时钟周期的执行运算操作过程相同,在第五个时钟周期的执行数据写回操作过程与双字节的跳转指令的第四个时钟周期的执行数据写回操作过程相同,在第六个时钟周期的执行等待操作过程与双字节的跳转指令的第五个时钟周期的执行等待操作过程相同。
所述中断信号的处理需要包括四个时钟周期的指令周期。下面具体说明中断信号的处理过程:
在第一个时钟周期,执行采集中断操作:所述控制单元70采集中断信号,将所采集的中断信号写入所述中断信号寄存器82,并将所述中断信号从所述中断信号寄存器82传送至所述优先级编码器83,控制所述优先级编码器83根据预设的各中断的优先级别来确定所述中断信号的优先级别。
在第二个时钟周期,执行响应中断操作:所述控制单元70将优先级别高的中断信号送往中断信号缓冲器84。
在第三个时钟周期,执行保护断点及中断源识别操作:所述控制单元70根据中断信号缓冲器84中的中断信号来确定中断地址,并将所述中断地址存储在所述中断向量寄存器85,所述控制单元70还将所述程序计数器41中的地址压入二级堆栈66中进行保存,并将所述中断地址写入所述程序计数器41中。例如,当为看门狗中断时,所述中断地址为复位地址0000H,所述控制单元70将复位地址0000H写入程序计数器41中,使得程序自动复位。
在第四个时钟周期,执行取指令操作:所述控制单元70根据所述程序计数器41中的中断地址,控制所述指令预取寄存器431从所述程序存储器42中读取指令。从而,所述控制单元70在执行完当前指令后执行中断服务程序。
在本实施例中,控制单元70对中断信号的处理为:低优先级中断请求不能打断高优先级中断请求,高优先级中断请求可以打断低优先级中断请求;如果一个中断请求已被响应,则同级的其他中断响应将被禁止。
其中,当多个中断服务程序中的一中断服务程序执行完后,所述控制单元70将剩余的中断服务程序中优先级别高的中断信号送往中断信号缓冲器84,来继续执行中断服务程序直至同时采集的所有中断服务程序执行完。
当多个中断服务程序执行完而执行中断返回指令时,所述控制单元70还执行恢复现场操作,即,所述控制单元70将所述二级堆栈66中的中断返回地址写入程序计数器41中,从而在执行完中断服务程序后,继续执行中断前的程序。
当所述控制单元70在执行中断返回程序或跳转指令时,如果中断源处有中断产生,所述控制单元70采集所述中断并将所述中断保存在所述中断信号寄存器82,并等待中断返回或跳转后执行中断程序。
请参考图3,为微控制器1各状态之间转换的示意图。其中,状态S0、状态S1、状态S2及状态S3代表微控制器1执行运算指令时的操作。所述状态S0、状态S1、状态S2及状态S3分别为控制单元70在执行运算指令时在第一个时钟周期、第二个时钟周期、第三个时钟周期及第四个时钟周期所执行的操作。所述状态S0、状态S1、状态S2及状态S3顺序且循环执行。
其中,如图3所示,在所述状态S0,一箭头指向状态S0,表示所述微控制器1开始操作或重启时执行第一个时钟周期。一箭头从状态S0指向状态S0,表示所述微控制器1等待一个时钟周期,则状态S0、状态S1、状态S2、状态S3及在状态S0等待一个时钟周期代表微控制器1执行双字节跳转指令时的操作,其中,所述状态S0、状态S1、状态S2、状态S3及在状态S0等待一个时钟周期分别为控制单元70在执行双字节跳转指令时在第一个时钟周期、第二个时钟周期、第三个时钟周期、第四个时钟周期及第五个时钟周期所执行的操作。
其中,状态S0、状态S1、状态S2、状态S3、状态S7及在状态S0等待一个时钟周期代表微控制器1执行三字节跳转指令时的操作,其中,状态S0、状态S1、状态S2、状态S3、状态S7及在状态S0等待一个时钟周期分别为控制单元70在执行三字节跳转指令时在第一个时钟周期、第二个时钟周期、第三个时钟周期、第四个时钟周期、第五个时钟周期及第六个时钟周期所执行的操作。
状态S4表示所述控制单元70处于空闲模式。状态S5表示微控制器1在所述空闲模式被中断信号唤醒,其包括如上所述的控制单元70对中断信号的处理过程的第一个时钟周期、第二个时钟周期及第三个时钟周期。状态S6表示微控制器1执行所述中断程序指令,其包括如上所述的控制单元70对中断信号的处理过程的第四个时钟周期。因此,微控制器1在状态S4下被中断信号唤醒,进入状态S5,来处理中断,随后进入状态S6,来执行取所述中断程序指令,而从状态S6到状态S0代表执行中断,随后,所述状态S0、状态S1、状态S2及状态S3顺序且循环执行直至所述中断程序执行完成后,从所述状态S0进入所述状态S4,即所述微控制器1在执行中断程序后,继续处于空闲模式下。
状态S8表示所述控制单元70根据所述定时器61所传送的警告信息,将所述特殊功能寄存器66中预先存储的应用程序的第一条指令的地址(如图2中的CPC)写入所述程序计数器41。随后,所述状态S0、状态S1、状态S2及状态S3顺序且循环执行直至所述应用程序执行完成。当在状态S0时,如果在所述定时器61计时完成时所述传感器2提供响应信号,则随后进入状态S4,即进入空闲模式。当在状态S0时,如果在所述定时器61计时完成时所述传感器2不提供响应信号,则执行报警程序的指令。
显然,本发明不仅局限于所述微控制器1在空闲模式下被中断信号唤醒,其还可为所述微控制器1在执行指令时被中断信号打断,来执行中断信号,并在中断信号执行完后继续执行指令。
如此,本发明的微控制器1执行一条指令的时间最长的为6个时钟周期,指令运行速度快,功耗小,同时,所述微控制器1具有空闲模式及掉电模式,节省电。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。