单片机中断如何不返回断点,51单片机中断后不回到断点处

单片机反汇编,又叫代码逆向工程。在MS-DOS的年代,用得最多的应用程序就是DEBUG,该程序好像电脑上的CT机,照出内存中每个字节的内容,既可反汇编,也可跟踪程序的运行,但进入WINDOWS多线程时代,它就没戏了,有时还蛮挂念的,代码烧写进芯片后根本就不让读出来怎么办?不让读也是有标志位的,找到位置用探针直接强制改变标志位,开盖子,显微镜下跳线,就可以读了,没有什么破不了就是成本非常高,看值不值得做。

1、单片机中断处理流程

当某中断产生而且被CPU响应,主程序被中断,接下来将执行如下操作:1.当前正被执行的指令全部执行完毕;2.PC值被压入栈;3.现场保护;4.阻止同级别其他中断;5.将中断向量地址装载到程序计数器PC;6.执行相应的中断服务程序。中断服务程序ISR完成和该中断相应的一些操作。ISR以RETI(中断返回)指令结束,将PC值从栈中取回,并恢复原来的中断设置,之后从主程序的断点处继续执行。

2、单片机中断返回/跳转子程序

不清楚你的意思可能性太多了啊。耗脑的看了一下你的这句话:中断响应后跳转到指定子程序,而并非回到断点位置。你最好把要跳到的地方要执行的程序写成一个函数,然后在中断中调用该函数。修改堆栈数据,令中断返回时,从堆栈弹出的地址(修改的数据)刚好就是指定的子程序入口地址。

3、单片机中断程序

第一行表示程序从0000H开始,第二行的地址是0000H,执行第二行是无条件跳转到第六行(MAIN:主程序)处,这些对遇到有中断时硬件(单片机内部)直接装载中断入口地址去执行ORG中断入口地址;这个地址是单片机内部固定的不能改LJMPINT;无条件跳转到中断服务程序去执行就是第七行。前两行的意思是在0000H地址存入“跳转到MAIN”的指令,3、4行的意思是在中断入口地址存入“跳转到INT”的指令。

在执行MAIN的程序中,如果单片机允许中断,则当其遇到中断请求时,自动将断点地址(PC的值)压入堆栈,然后跳到中断入口地址,即执行“跳转到INT”,执行中断服务程序,在遇到中断返回指令RETI,从堆栈中弹出断点地址到PC,由断点继续执行。当然,其中还有保护现场和恢复现场,这部分内容参考单片机的中断系统,补充下,MCS51单片机有5个中断源,其中断服务入口地址是固定的。

断点 单片 中断 返回 回到