请问51单片机执行程序时是怎么执行的,我感觉是和PLC类似,循环扫描执行(如果主程序中没有死循环的话)

请问51单片机执行程序时是怎么执行的,我感觉是和PLC类似,循环扫描执行(如果主程序中没有死循环的话),第1张

和PLC类似循环扫描执行?孩子,你学反了,你该先学单片机再学PLC。单片机是PLC的底层核心,PLC比为汽车的话 单片机就是汽车的发动机。单片机语言的 *** 作码和 *** 作数相当于英文字母,PLC的语言相当于是拿句子组合文章。至于循环的问题,单片机没有限制啊,自由的很,你爱编程循环就循环,不过一个实用程序除了循环你还能需要其他的运行方式吗?

子程序的调用,地址入栈是自动的。程序可以编程 *** 作,51单片机是16位的地址,两个字节,汇编语言你可以在程序中,在栈中压入两个字节的地址数据,然后执行RET指令,程序就转向你指定的地址执行。

你说的应该是C语言编程的吧。C语言调用子函数后当然也可以 *** 作栈,但是除非你知道你要做什么,否则不建议在C语言中 *** 作硬件寄存器

R0~R7,A,PSW要入栈因为是在主程序中用到了这些寄存器,但是中断是不确定什么时候发生的,在中断程序中也要用到这些寄存器,为了在中断中不修改主程序中的这些寄存器,在中断程序发生时,先保存这些寄存器的内容(入栈保护),然后中断使用这些寄存器,用完后出栈恢复这些寄存器的值,程序重新把这些寄存器交回主程序运行

这样给你说吧。当单片机运行起来的时候是高速运转你while(1)里面的程序。但是这样是不够的,比如你想把某个信号传递给单片机让它处理,比如说:你按了某个键来控制某个灯的亮灭,这时候就需要单片机来响应你的动作,响应的方式就是中断。也就是说你在主程序中完成了某个中断的触发条件时,当达到这个条件时程序就会跳转到中断服务函数中去,执行完中断服务函数中的程序后再返回主程序中继续循环执行。你说的调用其实不太正确,中断服务函数只能触发,它是由单片机内特定的某些寄存器的标志位控制的,当这些满足触发条件的时候,标志位被硬件置1,然后自动执行你编写的中断服务函数。

说的不是很清楚,请见谅,中断是单片机内最重要的功能之一,与之对应的还有定时器(这是单片机的心脏),这些内容在51里面都是很简单的,但是到了32位单片机里面会变得特别复杂。

希望这些内容能给你一些帮助。

51的C语言中断是函数,那这个中断是否可以调用?如果能,怎么调用?

只从计算机原理来讲,是可以的。

理论上,中断函数也是一个程序的入口,只要把程序指令指针指向这个中断的入口地址,

就可以执行相应的代码,从这个角度来讲,是可 *** 作的。

但在实际问题处理中,通常不行,因为中断是提供给系统处理应急事件的,

并非设计来作为常规函数呼叫。

如果只是想要使用中断处理中的某些功能,可把那些功能封装为独立的函数,

供给中断处理和一般流程来调用。

应用程序直接调用中断,是有违中断设计的初衷的,

不建议这样使用,易导致原本正常的流程的莫名异常,

因为调用中断处理,会占用中断的相关资源,导致正常的中断无法执行,出现异常。

以上就是关于请问51单片机执行程序时是怎么执行的,我感觉是和PLC类似,循环扫描执行(如果主程序中没有死循环的话)全部的内容,包括:请问51单片机执行程序时是怎么执行的,我感觉是和PLC类似,循环扫描执行(如果主程序中没有死循环的话)、51单片机因中断处理,子程序调用时入栈问题、mcs-51单片机程序中可以直接调用中断服务程序吗为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10141355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存