mcs-51单片机程序中可以直接调用中断服务程序吗?为什么?

如题所述

这样给你说吧。当单片机运行起来的时候是高速运转你while(1)里面的程序。但是这样是不够的,比如你想把某个信号传递给单片机让它处理,比如说:你按了某个键来控制某个灯的亮灭,这时候就需要单片机来响应你的动作,响应的方式就是中断。也就是说你在主程序中完成了某个中断的触发条件时,当达到这个条件时程序就会跳转到中断服务函数中去,执行完中断服务函数中的程序后再返回主程序中继续循环执行。你说的调用其实不太正确,中断服务函数只能触发,它是由单片机内特定的某些寄存器的标志位控制的,当这些满足触发条件的时候,标志位被硬件置1,然后自动执行你编写的中断服务函数。
说的不是很清楚,请见谅,中断是单片机内最重要的功能之一,与之对应的还有定时器(这是单片机的心脏),这些内容在51里面都是很简单的,但是到了32位单片机里面会变得特别复杂。
希望这些内容能给你一些帮助。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-03
调用可以,但是如果有堆栈操作的话,可能会破坏程序的执行效果。

如果主程序调用中断程序时,中断在调用的话会怎样??

c51中有克递归调用的函数。但代码也比较大。内存占用多,似乎不太合算。
第2个回答  2013-12-03
理论上是可以的,实际上,也是可以的,但要说明的是,中断服务程序的返回使用 reti 指令,与子程序返回的 ret 指令是有区别的。
第3个回答  2013-12-03
可以直接调用,但这样中断服务程序和普通子程序没什么区别了吧。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网