单片机中断的断点保护和现场保护都是在中断响应的时候进行的吗?
答案:3 悬赏:80 手机版
解决时间 2021-04-01 21:04
- 提问者网友:动次大次蹦擦擦
- 2021-04-01 16:26
单片机中断的断点保护和现场保护都是在中断响应的时候进行的吗?
最佳答案
- 五星知识达人网友:低音帝王
- 2021-04-01 16:40
断点保护肯定是硬件的,这个软件没可能实现,只能是硬件保护返回地址。
现场保护则不一定,有可能是软件的,也有可能是硬件的,单片机不同,或者说不同的内核,处理方式不一样。
两种现场保护方式,各有优、缺点,简单点说,软件保护现场则硬件简单但软件复杂,硬件保护现场则软件简单硬件复杂。
比如ARM的CM3中断处理程序,看起来与普通程序完全一样,软件上不需要做特殊处理,可以直接用标准C语言写。
又比如51的中断处理,硬件只保存一个返回地址,返回还要用中断返回指令,使用任何寄存器都需要软件处理现场保护,写程序的时候就要麻烦一点。另一方面,相对来说它的硬件就简单一些。
还有就是要指出,硬件保护实时性会好一些,软件保护则更灵活一些。追问那为什么我写51的中断处理函数的时候,从来没有写过现场保护的程序,但是他也能正常执行中断呢。追答现在都用C语言编程,51的C语言是扩充过的,不是标准的C。现场保护程序是有的,只不过是编译系统帮你写好了而已。用汇编编程的时候,就需要自己写现场保护程序了。
C51的中断程序需要用interrupt修饰,标准C语言不认interrupt的。C51编译interrupt程序时,会自动生成现场保护程序,比如保存与恢复PSW、ACC,虽然我们没有主动去写,但这部分软件代码确实是存在的。
中断的时候用哪个寄存器组,C51需要用using指出,本质上这是在手工分配内存,属于软件编程的一部分。
还要指出,因为C51扩充了好多关键字,导致用C51写的代码移植是比较困难的。
现场保护则不一定,有可能是软件的,也有可能是硬件的,单片机不同,或者说不同的内核,处理方式不一样。
两种现场保护方式,各有优、缺点,简单点说,软件保护现场则硬件简单但软件复杂,硬件保护现场则软件简单硬件复杂。
比如ARM的CM3中断处理程序,看起来与普通程序完全一样,软件上不需要做特殊处理,可以直接用标准C语言写。
又比如51的中断处理,硬件只保存一个返回地址,返回还要用中断返回指令,使用任何寄存器都需要软件处理现场保护,写程序的时候就要麻烦一点。另一方面,相对来说它的硬件就简单一些。
还有就是要指出,硬件保护实时性会好一些,软件保护则更灵活一些。追问那为什么我写51的中断处理函数的时候,从来没有写过现场保护的程序,但是他也能正常执行中断呢。追答现在都用C语言编程,51的C语言是扩充过的,不是标准的C。现场保护程序是有的,只不过是编译系统帮你写好了而已。用汇编编程的时候,就需要自己写现场保护程序了。
C51的中断程序需要用interrupt修饰,标准C语言不认interrupt的。C51编译interrupt程序时,会自动生成现场保护程序,比如保存与恢复PSW、ACC,虽然我们没有主动去写,但这部分软件代码确实是存在的。
中断的时候用哪个寄存器组,C51需要用using指出,本质上这是在手工分配内存,属于软件编程的一部分。
还要指出,因为C51扩充了好多关键字,导致用C51写的代码移植是比较困难的。
全部回答
- 1楼网友:行雁书
- 2021-04-01 17:26
关注这个问题
- 2楼网友:詩光轨車
- 2021-04-01 17:08
这个跟单片机架构有关。8051硬件实现断点保护也就是中断时pc自动入栈,但是现场保护也就是各寄存器入栈由软件实现。arm处理器的话除了断点保护,前8个寄存器也是自动入栈的。如果你用C语言开发不需要考虑这个
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯