MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别?是多少?

2024-11-14 10:49:42
推荐回答(2个)
回答1:

RET用于一般程序的返回
RETI用于中断函数的返回
以上是一般单片机书籍简绍的,然而在实际应用中,我发现,在程序返回中一样可以使用RETI,而在中断返回中却无法使用RET,究其原因是因为RETI比RET多做一件事情就是将“优先级生效”触发器清零
原来在8051构架中--中断系统中含有两个不可寻址的“优先级生效”触发器。一个用于指出CPU是否正在执行高优先级的中断服务程序,这个触发器为1时,系统将屏蔽所有的中断请求;另一个则指出CPU是否正在执行低优先级中断服务程序,该触发器为1时,将阻止除高优先级以外的一切中断请求。由此可见,若要响应同级甚至是低级中断请求,必须使得该“优先级生效”触发器清零。但该触发器又是不可寻址的,所以无法用软件直接清零。”

回答2:

中断服务程序的返回指令 汇编助记符 reti 机器指令 32h
子程序的返回指令 汇编助记符 ret 机器指令 22h