⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c51编程经验三则.txt

📁 c51经典子程序代码全集
💻 TXT
字号:
主题:C51编程经验三则 (转载) [龙啸九天] [429次] 2000-11-15 21:27:31
主题:C51编程经验三则 

---------------------------------------------------------------------------
  在单片机的开发应用中,已逐渐开始引入高级语言,C语言就是其中的一种。用惯 

了汇编的人,总觉得高级语言“可控性”不好,不如汇编那样随心所欲。以下是笔者 

在C51编程中的几点经验,希望对初学C51者有所帮助。 

  一、C51热启动代码的编制 

  工业控制计算机,往往设有看门狗电路,看门狗动作,计算机复位,这就是热启 

动。热启动时,一般不允许程序从头开始,因为这将使测量或计算值复位,导致系统 

工作异常。故程序必须判断是热启动还是冷启动。常用的方法是:设定某内存单位为 

标志位(如0x7f位和0x7e位),启动时首先读该内存单元的内容,如果它等于一个特定 

的值(例如两个内存单元的都是0xaa),就认为是热启动,否则就是冷启动,程序执行 

初始化部分,并将0xaa赋予这两个内存单元。 

  根据以上的设计思路,编程时,设置一个指针,指向特定的内存单元如0x7f,然 

后在程序中根据特定内存单元的值判断冷/热启动,程序如下: 
  void main() 
  {    char data*HotPoint=(char*)0x7f; 
    if((*HotPoint==0xaa)&&(*(--Hot 
    Point)==0xaa)) 
       {     /*热启动的处理   */ 
       } 
    else 
     {  HotPoint=0x7e; /*冷启动的处理 
         *HotPoint-0xaa; 
         *(++HotPoint)=0xaa; 
     } 
    /*正常工作代码*/ 
  } 

  实际调试中发现,无论是热启动还是冷启动,开机后所有内存单元的值都被复位 

为0,实现不了热启动的要求。这是为什么呢?原来,用C语言编程时,开机时执行的代 

码并非是从main()函数的第一语句开始的,在main()函数的第一语句执行前要先执行 

一段‘起始代码’。正是这段代码执行了内存清零的工作。C编译程序提供了这段起始 

代码的源程序,名为CSTARTUP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -