第9节:程序从哪里开始,要到哪里去?

发布者:Yudie最新更新时间:2016-03-11 来源: eefocus关键字:程序  单片机 手机看文章 扫描二维码
随时随地手机看文章
从业十年,教你单片机入门  第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语言的模板程序。

关键字:程序  单片机 引用地址:第9节:程序从哪里开始,要到哪里去?

上一篇:第10节:一个用来学习C语言的模板程序
下一篇:第8节:把.hex机器码下载到单片机的操作流程

推荐阅读最新更新时间:2024-03-16 14:46

51单片机入门led闪烁程序
简介:51单片机入门led闪烁程序 这一节简单讲下proteus仿真软件的使用,关键在于需要的元器件的代号,比如电阻是resistor,电容是capacitor等等,不过不用刻意去记,用得多了自然就记住了,碰到新的元器件就网上查找。 上图中的例子是单片机的最小系统以及LED灯,...... 这一节简单讲下proteus仿真软件的使用,关键在于需要的元器件的代号,比如电阻是resistor,电容是capacitor等等,不过不用刻意去记,用得多了自然就记住了,碰到新的元器件就网上查找。 上图中的例子是单片机的最小系统以及LED灯,左侧栏里显示了这一原理图的元器件列表,如果要添加某元器件,那么就单击“P”,就会弹出选择元器件的
[单片机]
51<font color='red'>单片机</font>入门led闪烁<font color='red'>程序</font>
基于AVR单片机的安全工器具监控系统设计
众所周知,安全是电力企业一个永恒的主题,而安全工器具的好坏,将直接影响着电力企业在生产过程中的人身和设备安全。笔者提出了一种基于AVR单片机的安全工器具监控系统的设计方案,主要是对安全工器具的离就位状态信息、有效使用期限和安全工器具柜内的温湿度状况等进行监控,可以根据实现安全工器具柜内温湿度的自动调节,能够自动记录安全工器具的相关信息。本文首先阐述了系统的总体结构,然后详细论述了系统的硬件设计和软件设计。 1 安全工器具监控系统的总体结构 1.1 系统结构 本文所设计的安全工器具监控系统主要分为下位机数据采集和上位机数据管理两个部分,两者之间通过网络进行通信。 系统首先通过数据采集板对安全工器具柜的相关量进行采集,然后将
[单片机]
基于AVR<font color='red'>单片机</font>的安全工器具监控系统设计
西门子推自动驾驶硅前验证程序 加速自动驾驶汽车研发
(图片来源:西门子官网) 据外媒报道,当地时间5月15日,西门子(Siemens)宣布推出PAVE360™自动驾驶硅前验证环境(pre-silicon autonomous validation environment),该程序旨在支持和促进创新自动驾驶汽车平台的研发。PAVE360为下一代汽车芯片的研发提供了一个跨汽车生态系统、多供应商协作的综合环境,使数字化双胞胎(digital twin)仿真不只局限于处理器,还包括汽车硬软件子系统、整车模型、传感器数据融合、交通流量的仿真,甚至还仿真自动驾驶汽车最终在智能城市里面的驾驶。 PAVE360能够对所有自动驾驶系统核心的传感/决策/执行范例进行完整的闭环验证,该原则
[汽车电子]
西门子推自动驾驶硅前验证<font color='red'>程序</font> 加速自动驾驶汽车研发
一种用单片机控制的光谱数据采集系统
摘要:介绍利用单片机和A/D器件MAX120等构成的光谱信号采集系统,由单片机控制A/D产生不同的采样频率,用于光电倍增管和CCD输出的光谱信号的采集。 关键词:单片机 A/D 信号采集 光谱 概述 在光谱测量中,常用光电倍增管(PMT)和电荷耦合器件(CCD)作为光电转换器。在慢变化、高精度光谱测量中使用PMT;对于闪光灯、荧光和磷光等强度随时间变化时的光谱信号则采用CCD。PMT和CCD输出的信号形式是不同的:光电倍增管输出的是连续的模拟信号;CCD输出的是视频脉冲信号。由于输出信号的不同,相应的信号采集电路也不尽相同。本文所述的系统通过设定控制开关的不同状态,由单片机检测、判断和执行相应的操作,完成对不同形式输入信号
[应用]
51单片机(四)——中断
一、中断 1.1 中断概述 51单片机有5个中断源。 所谓中断,就是该事件可以打破正在执行的程序,从而进入新的任务中。等处理该事件的任务完成之后,再重新执行刚才被打断的任务。 中断优先级低的任务可以被中断优先级更高的任务打断。平时没有中断时执行的程序优先级最低,可以被任何中断打断。 中断系统结构示意图: 该芯片是stc90c51,因此多了一个外部中断和定时器2的中断。 一般情况下,51单片机有2个定时器中断,2个外部中断和一个串口中断。 每一个中断,都有相应的一个中断使能位。只有中断使能位为1,系统才能响应该中断。 每一个中断,都有两个相应的优先级控制位,可以设置0~3的中断优先级。0为最低,3为最高。 两个优先级相
[单片机]
基于msp430f169的蓝牙风扇可调速程序
设计做的,比较简单,手机通过UART连接单片机,PWM可任意调速,注意风扇的驱动电压。 #include msp430f169.h #include lcd12864.h #include PWM.h #include UART.h #include adc.h unsigned char key = 0; unsigned char Statu = 0; unsigned int a = 0; #pragma vector=USART0RX_VECTOR __interrupt void USART0_RX_ISR(void) { unsigned char data=0; data=U0RXBUF;
[单片机]
AVR单片机教程——串口接收
上一讲中,我们实现了单片机开发板向电脑传输数据。在这一讲中,我们将通过电脑向单片机发送指令,让单片机根据指令控制LED。这一次,两端的TX与RX需要交叉连接,单片机TX连接串口工具RX也是需要的,因为程序会根据指令反馈信息。 为了简单起见,我们的程序只需要控制4个板载LED。指令包含两个字节:第一个字节为r、y、g、b中的一个,分别表示红、黄、绿、蓝灯;第二个字节为0或1,表示灯不亮或亮。 然而,a2这样的指令是没有意义的,却是可能出现的。即使用户已经熟悉了这8条指令,也可能会不小心打错。我们应当记住,用户是世界上最愚蠢的人,我们要把他们可能犯的错误都想到,然后在程序中合理地处理。比如,对于不合法的指令,程序忽略指令,并返
[单片机]
51单片机控制步进电机硬件连接部分
1、概要: 本案例讲解的内容是51单片机控制步进电机硬件连接部分。后续会分别讲解单片机程序,S曲线加减速方法,上位机等相关内容 2、功能原理图: 2.1、51单片机: ①输出脉冲到TB6600驱动器PUL端口,从而控制步进电机转动 ②控制TB6600驱动器ENA端口,从而控制步进电机使能 ③控制TB6600驱动器DIR端口,从而控制步进电机转动方向 2.2、步进电机: ①提供机械动力 2.3、稳压电源: ①为步进电机提供电源 2.4、TB6600驱动器: ①二相四线步进电机专用驱动器 3、实物图: ** ①** 、51****单片机控制板一个 ** ②** 、二相四线步进电机一个 ** ③** 、稳压电源一个 ** ④** 、
[单片机]
51<font color='red'>单片机</font>控制步进电机硬件连接部分
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved