用c语言编写的单片机程序是按什么顺序执行的?

用c语言编写的单片机程序是按什么顺序执行的?,第1张

先从主程序执行,即 void main ,然后顺序执行,除非遇到中断

#include<reg51.h>

............................//宏定义

..........................//全局变量

void main()

{

....................//初始化

while(1)

{

...................//主程序

}

}

在一台最常见的计算机上,程序从某种外部设备,通常是硬盘,被加载到计算机之内。 如果是我们现在使用的普通电脑结构,那么程序就被加载入内存。 指令串行顺序执行,直到一条跳转或转移指令被执行,或者一个中断出现。所有这些指令都会改变指令寄存器的内容。基于这种体系的计算机,如果没有程序的支持,将无法工作。一个计算机程序是一系列指令的集合。程序里的指令都是基于机器语言;程序通常首先用一种计算机程序设计语言编写,然后用编译程序或者解释执行程序翻译成机器语言。 有时,也可以用汇编语言编程,汇编语言实质就是表示机器语言的一组记号-在这种情况下,用于翻译的程序叫做汇编程序。

也就是说,当你双击某个程序时:

1、首先由CPU发出指令,从硬盘读取数据,然后调入内存中执行。

2、程序控制指令:也称转移指令。

执行程序时,有时机器执行到某条指令时,出现了几种不同结果,这时机器必须执行一条转移指令,根据不同结果进行转移,从而改变程序原来执行的顺序。

这种转移指令称为条件转移指令。除各种条件转移指令外,还有无条件转移指令、转子程序指令、返回主程序指令、中断返回指令等。 转移指令的转移地址一般采用直接寻址和相对寻址方式来确定。

主程序从main()开始执行,一句一句的,同时计时器也在工作,他和CPU的工作是不相干预的,完全分开的,当执行到某一句的时候,定时器计时完毕之后,就会像CPU请求中断,然后CPU就把当前执行的那一条语句执行完,跳到中断服务程序也就是interrupt中去处理中断,处理完毕之后再返回主程序去继续执行,然后定时器也继续工作,然后依次的循环下去,给你举个例子,interrupt就是个厨房,里边烧着水呢,你在卧室学习做题,当厨房的水烧开了报警,告诉你水开了,你接着就把手头的题做完了(当前指令执行完,压栈),然后到厨房把水灌好,再烧上水,接着去学习,接着坐下一道题,当下次水在烧开时,你再去处理,就这样,你做题学习和烧水是无关的,只有水开了才会向你请求


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

原文地址: http://outofmemory.cn/yw/7929607.html

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

发表评论

登录后才能评论

评论列表(0条)

保存