51单片机程序执行流程详解

时间:2023-03-05作者:佚名

单片机是没有上操作系统的东西,在keil中编写的代码都是裸机代码,深入编写裸机代码有助于了解硬件的特性。

若不是硬件特性已定的情况之下的其它流程都是代码作祟。忽然想到来探探51单片机的执行流程。这个念头起源于最初见到每个51程序里面的主函数里面最终都挂一个while(1);语句。为何要加一句while死循环让程序停留在main函数中呢。将while(1);语句去掉有什么影响么?

写一个很简单的程序试一下。

51单片机程序执行流程详解

执行以上程序,由P1端口控制的流水灯闪了一下。程序最终进入while(1);里纠缠去了,这个到好解释。

现将while(1);语句屏蔽掉。我还以为程序不能被正确执行了呢,因为退出了main主函数,就像Render需要循环来实现一样(尽管刚刚闪灯的程序不在循环之内,但我还是不由产生了这一错觉)。程序执行的结果是:流水灯不停的闪烁!

看到这个现象后的猜想及动作^-^:

(1) 这块板坏了吧!(在带操作系统如linux字符界面下运行一个不带死循环的C语言文件完毕后就会返回到linux shell程序中)。赶紧换个板再测试一下,显然还是一样的结果。

(2) 单片机中将一直执行main函数中的最后一个(些)语句?(基于带OS平台下运行标准C语言文件的经验,可从来没有想过是main函数被多次调用或多次进入)

(3) 单片机内将C语言指令取出来加载到单片机内,单片机内自动生成一个主程序循环执行C语言中main函数的内容?(虽然很荒唐,还是想了)

(4) 赶快谷歌百度一下单片机的执行流程(虽然在谷歌百度时以“51单片机程序执行流程”搜索,没有搜到相关内容)。换朴实的搜索词:“51单片机 main”。然后就出现跟我一样带有疑问的问题:为什么main函数中不加while(1);语句之后程序会反复执行呢?回答的关键词包括“程序跑飞、看门狗、复位”。

(5) 趁上嵌入式的机会将“51单片机程序执行流程”搬出来并向老师讲述了我所写程序的得到的现象,包括我怎么验证呀等等。

老师的回答:Keil C51程序自动加载了一个名为”STARTUP.A51”的文件,在这个文件里面进行了一系列的初始化操作后进入用户编写的C语言程序入口main函数中,main函数执行完毕后,STARTUP.A51文件后有一句跳转到程序入口main函数的语句,所以会再次进入C语言主程序main函数中执行相关内容。

然后我用keil软件模拟了运行一下以上那一段代码:

51单片机程序执行流程详解

程序开始运行就在程序入口main函数的第一条语句之处,DISAssembly窗口是c语言代码与汇编代码相对应的窗口,前面是地址,后面的是C语言对应的汇编语句。下面的窗口是相应文件的运行代码的位置,由黄色箭头指向当前正要执行的代码。然后点击单步运行工具条,指导跳出main函数为止,程序跳转到STARTUP.A51中的以下代码位置:

51单片机程序执行流程详解

继续点击单步调试直到进入一个循环中:

51单片机程序执行流程详解

相关阅读

三相负荷不平衡的危害

1. 对配电变压器的影响 (1)三相负荷不平衡将增加变压器的损耗: 变压器的损耗包括空载损耗和负荷损耗。正常情况下变压器运行电压基本不变,即空载损耗是一个恒量。而负荷损耗则...
2023-03-21

电工电路解析,这个电路,不是很容易

上图所能实现的控制要求: KT1设置10秒;KT2设置10秒;KT3设置5秒; 1.按下启动按钮后,KT1开始计时,电动机1启动,延时5秒后,电动机3启动; 2.KT1时间到达后,电动机1和电动机3停止,...
2023-04-04
电工电路解析,这个电路,不是很容易

LED驱动电路图分享 LED驱动电路的工作原理和失效机理分析

随着市场需求的不断增加,(jìn)年从事LED制造和研发的人员大大增加。LED企业亦如雨后春笋般成长。由于从事LED驱动研发的企业和人众多,其技术水平参 差不齐,研发出来的LED驱动电路...
2023-07-25
LED驱动电路图分享 LED驱动电路的工作原理和失效机理分析

电工接私活有这么多门道?怪不得有的电工没活接~

我有个朋友在一家小型私企工作,厂子比较小,活不多,当然工资也不多,但是时间还是比较宽裕,所以他就经常出来接私活,挣几个外快,接下来就叫他老李吧! 老李技术不错,常常...
2023-06-27
电工接私活有这么多门道?怪不得有的电工没活接~

电场和电荷

  由上述讨论可以知道,两个相距一段距离的带电体之间存在着相互作用的电力,在第4章中还会看到两个相距一段距离的电流之间存在着相互作用的磁力,两个相距一段距离的物体之...
2023-06-27
电场和电荷

热销商品

四氟包覆/FEP/PTFE包覆胶O型圈全氟醛FFKMO型圈耐化学腐蚀氟胶

四氟包覆(FEP/PTFE)O型圈及全氟醚(FFKM)O型圈是高性能密封解决方案,专为极端化学环境设计。FEP或PTFE包覆氟橡胶(FKM)芯材的O型圈兼具外层优异的耐化学腐蚀性、抗溶胀性...
5

领普E3S/E5配套插座面板86型暗装插座多孔五孔空调无边框家用

领普E3S/E5配套插座面板86型暗装插座多孔五孔空调无边框家用,是一款专为现代家庭设计的多功能插座。该款插座采用86型设计,易于安装和适配各种家用电器,无论是台灯、...
11.9

原装博世角磨机GWS6-100/TWS6600/6700转子定子碳刷齿轮/博士配件

原装博世角磨机GWS6-100/TWS6600/6700系列配件,包括转子、定子、碳刷及齿轮等核心部件,均采用博世原厂高品质材料制造,确保与设备完美匹配,保障运行稳定与高效性能。...
3.5

聚氨酯橡胶缓冲垫弹性套联轴器牛筋柱销减震套垫圈弹性垫缓冲胶垫

聚氨酯橡胶缓冲垫弹性套联轴器中的牛筋柱销减震套、垫圈及弹性垫,是一种高性能减震缓冲元件。采用优质聚氨酯橡胶材料制成,兼具高弹性、耐磨损、抗老化及耐油耐酸碱...
0.27

硅胶垫片/硅胶垫/硅胶垫片圆形/硅胶垫圈/橡胶垫片/氟胶垫片

硅胶垫片(又称硅胶垫、硅胶垫圈)是一种由硅橡胶制成的密封材料,具有优异的耐高低温(-60℃~230℃)、耐老化、绝缘和环保无毒特性,广泛用于食品、医疗、电子及家电等领域...
1

网站栏目