c语言为什么单片机中断中不能用跳转

如题

在中断子函数中是不能用跳转语句跳转回主程序的,而是中断子函数执行完了,自己返回到断点的,只有自己返回到断点处,才能恢复中断状态,并包括恢复堆栈,否则就会出现中断混乱,而用多次中断后堆栈溢出了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-10
通俗点讲吧, 中断就是一个 插队者, 也就是 你插队也就行了, 你现在 还搞得 拉一帮小弟进来插队, 你说 你这样 说得过去么, 那后面的队伍不轻则抗议重者反抗, 这样不就乱套了。
你要理解为什么要有中断, 中断就是突发时间必须要立马处理掉尽量不影响后面的程序,你要跳转出去一来会耽误时间二来 跳转出去 也就会引发堆栈溢出了, 所以 要尽量不用跳转出去,中断处理的事情越简单越快 就好

单片机C语言编程中goto语句和中断连用会出错吗?
使用goto语句很容易出错,如果是想 在进入一个中断之后想再进入到另一个中断 可以在中断函数里设置中断优先级 即中断优先级的切换 ,需要控制寄存器 IP

单片机中断退出问题
只要定时中断里没有死循环这样的程序,在完全执行好中断程序后就可以使用RETI退出(如果是C语言,这条语句也省掉了)。但不能退回到主程序开始时,而是退回到你中断前瞬间在执行的程序附近。如果你要进行初始化什么的,就把初始化信息加在中断服务程序中。在中断时候,把定时初值之类的信息直接重装了。

什么是C语言的中断程序 有什么用啊
当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU...

疑惑…单片机进入中断后不能执行调延时程序?中断服务程序里已写延时程序...
通常在中断子程序中是不调用延时子程序的,这样会增加中断处理时间,如果有其它低级中断了,就会延误响应中断了。所以,中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如果中断一次有很多任务需要执行完全,可以在中断子程序中设置一个标志位,在主...

单片机C语言编程中不能用goto语句?
估计没用对,不过建议你最好别用这个语句 这个会减慢系统运行效率,没有这个规定吧,GOTO是整个程序都能跳的 一般能用它的话,程序应该是还可以优化的

单片机疑问:用c语言怎么实现中断结束后不返回原断点处?
可以根据中断返回的值一层一层地回到需要跳转的地方。比如返回0的话表示函数正常执行结束,返回2的话表示从函数里面跳出来需要跳到其他地方,然后依次类推,稍微修改下程序可以达到问题所需要的效果。

c语言单片机在中断后执行do while程序,一直在执行do里面的循环体,不进...
或者单片机上电后默认P0口的值都是高电平(0xff),你的程序中while()一直都为真,一直执行。明白了没?你的判断条件是(key==0xff),在每次循环的代码里key的值又都不会改变,所以才会造成一直循环,给你造成没执行while的假象。其实是执行了,只是一直都为真而已。

51单片机c语言中断函数不能进行参数传递,是什么意思,谁能解释一下
是指中断处理函数不能有输入参数也不能有函数返回。因为中断都是些硬件自动调用,没有程序去给他传递参数,也没有硬件去接收参数。不过x86计算机的软中断可以有参数传递,不过他是用寄存器传递的。

单片机中断退出问题
只要定时中断里没有死循环这样的程序,在完全执行好中断程序后就可以使用RETI退出(如果是C语言,这条语句也省掉了)。但不能退回到主程序开始时,而是退回到你中断前瞬间在执行的程序附近。如果你要进行初始化什么的,就把初始化信息加在中断服务程序中。在中断时候,把定时初值之类的信息直接重装了。

C语言语句中可以用goto跳转吗
C语言语句中可以用goto跳转吗  C语言可以用goto语句,但goto语句是非结构化程序设计时代的产物,现在一般都不推荐用,因为大部分可以使用goto语句的场景,均可以使用其他的的语句代替。当然目前可以考虑的一个使用goto的情境是从一个深度的循环嵌套中跳出,它要比用break有效的多。举例用伪代码表达如下...

相似回答