打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
程序从哪里开始,要到哪里去?

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


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


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

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


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


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


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

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


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


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

  6. {

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

  8.    for(i=0;i<6250;i++);    =""  ="">

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

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

  11.    {

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

  13.        for(i=0;i<6250;i++); >

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

  15.        for(i=0;i<6250;i++); >

  16.    }

  17. }


  18. //解释:

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

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




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

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

void main()               

    {

   //...初始化区域

   while(1)                     

   {

       //...循环区域

   }

}


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单片机的主程序为什么是死循环?
用M99实现循环,跳转和返回
点亮LED灯的三种形式
一种单片机按键长按短按识别处理方法
基于单片机的蔬菜大棚温度控制系统设计
89C2051实现的电子钟
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服