当前位置:首页 > 单片机 > 单片机
[导读] 从业十年 教你单片机入门  第9讲:程序从哪里开始,要到哪里去?为了让初学者了解C语言程序的执行顺序,我把程序分成三个区域:进入主程序前的区域,主程序的初始化区域,主程序的循环区域。进入主程序前的区域。

从业十年,教你单片机入门  第9讲:

程序从哪里开始,要到哪里去?为了让初学者了解C语言程序的执行顺序,我把程序分成三个区域:进入主程序前的区域,主程序的初始化区域,主程序的循环区域。

进入主程序前的区域。这是上电后,在单片机执行主程序代码之前就已经完成了的工作。包括头文件的包含,宏定义,内存分配这些工作。这部分的内容可以暂时不用去了解,我会在后面的一些章节中陆续深入讲解。

主程序的初始化区域。这是上电后,单片机进入主程序后马上就要执行的程序代码,这部分区域的代码有一个特点,大家也必须记住的,就是单片机只执行一次。只要单片机不重启,不复位,那么上电后这部分的代码只被执行一次。

主程序的循环区域。单片机在主程序中执行完了初始化区域的代码,紧接着就进入这片循环区域的代码。单片机一直在循环执行这段代码,这就是上电后单片机的最终归宿,一直处在循环的状态。

下面我跟大家分析一个程序源代码的三个区域和执行顺序,大家先看中文解释部分的内容,暂时不用理解每行指令的语法。该源代码实现的功能是:上电后,蜂鸣器鸣叫一声就停止,然后看到一个LED灯一直在闪烁。本程序是基于坚鸿51单片机学习板。

#include "REG52.H" //进入主程序前的区域:头文件包含

sbit beep_dr=P2^7; //进入主程序前的区域:宏定义

sbit led_dr=P3^5; //进入主程序前的区域:宏定义

unsigned long i; //进入主程序前的区域:内存分配

void main() //主程序入口,即将进入初始化区域

{

beep_dr=0; //第一步:初始化区域:蜂鸣器开始鸣叫。

for(i=0;i<6250;i++); //第二步:初始化区域:延时0.5秒左右。也就是蜂鸣器鸣叫的持续时间。

beep_dr=1; //第三步:初始化区域:蜂鸣器停止鸣叫。

while(1) //执行完上面的初始化区域,即将进入循环区域

{

led_dr=1; //第四步:循环区域:LED开始点亮。

for(i=0;i<6250;i++); //第五步:循环区域:延时0.5秒左右。也就是LED点亮的持续时间。

led_dr=0; //LED灭 //第六步:循环区域:LED开始熄灭。

for(i=0;i<6250;i++); //第七步:循环区域:延时0.5秒左右。也就是LED熄灭的持续时间。马上返回上面第四步继续循环往下执行。

}

}

//解释:

//单片机进入主程序后,第一步到第三步是属于初始化区域,只被执行一次。然后进入循环区域,从第四步执行到第七步,

//执行完第七步之后,马上返回上面第四步继续循环往下执行,单片机一直处于第四步到第七步的循环区域中。

复制代码

经过以上的分析,可以看出这三个区域的大概分布如下:

//...进入主程序前的区域

void main()

{

//...初始化区域

while(1)

{

//...循环区域

}

}

下节预告:一个用来学习C语言的模板程序。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

都柏林, March 30, 2026 (GLOBE NEWSWIRE) -- 随着企业在投资者、监管机构以及 ESG 承诺方面面临的碳足迹减排压力日益加大,企业差旅正成为一个通过微小运营调整即可产生显著成效的领域。...

关键字: FOR 数字化 SI ESIM

业界首款 NVMe 和 SATA 抗辐射加固型 SSD,专为从低轨到深空的各类任务设计,采用梯度 Z 屏蔽和 AI 驱动自修复技术,可在 LET 100 MeV•cm2/mg 及 TID 500 krad 的极端辐射环境...

关键字: FOR SSD RS ST

-新一代CPaaS平台,可整合全渠道通信、基于网络的身份识别和对话式AI,从而帮助企业提供值得信赖的数字体验 拉斯维加斯和新德里2026年3月12日 /美通社/ -- 全球...

关键字: COM FOR VI GE

香港2026年2月16日 /美通社/ -- 经济学人影响力(Economist Impact)宣布将于 2026年3月11日至12日 在 香港合和酒店 举办 Technolo...

关键字: 解码 ASIA CHANGE FOR

在市场中,您可以购买布雷瑟的气象站,它们可以直接与“天气地下地图”连接,并将您当地的环境数据发布给全世界。所以,如果您愿意的话,根本无需做任何工作。但实际上,据我所知,所有型号都可以用于我们的项目,比如我的这个(7 个接...

关键字: 蜂鸣器 BME280 湿度传感器

深圳2026年1月14日 /美通社/ -- 近日,由晶泰科技(2228.HK)牵头的 2025 年度国家科技重大专项 -- "新一代人工智能国家科技重大专项&quo...

关键字: FOR SCIENCE 新材料 泰科

墨西哥城2026年1月11日 /美通社/ -- 继赛季揭幕战圣保罗站登上领奖台后,卡西迪再次将奖杯收入囊中。在雪铁龙加入FE电动方程式仅第二场比赛中,便斩获队史首胜。第2名莫塔拉身后是紧追不舍的罗兰德,巴纳德在终点线上压...

关键字: 电动 雪铁龙 BSP FOR

我想用ESP32打造一款手持游戏体验。该项目重现了经典的“破砖机”(Breakout)机制,并针对小型OLED屏幕进行了优化。它包括一个由模拟操纵杆控制的反应桨和一个随机评分系统,其中一些块的价值比其他块高5倍。

关键字: OLED ESP32 蜂鸣器

狗被广泛认为是人类最好的朋友,这是有充分理由的——它们忠诚,和它们一起玩很有趣,而且会认真地听命令。但任何养过狗或照顾过狗的人都知道,照顾狗是一项繁重的工作。他们总是需要食物和水。即使在极热或极冷的天气里,它们也需要持续...

关键字: 机器狗 游戏控制器 伺服电机 蜂鸣器

一个通过被动蜂鸣器产生声音的电子笛子,可以主动控制音高、音量和被动照明。我制作这个文档是为了让你去构建它——祝你制作过程愉快!

关键字: 蜂鸣器 Arduino 电位器
关闭