• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      模塊化編程在51單片機(jī)中的應(yīng)用

      2022-05-15 20:36:14楊傳燕張俊蓮史媛
      關(guān)鍵詞:調(diào)用延時(shí)模塊化

      楊傳燕 張俊蓮 史媛

      摘要:為了提高51單片機(jī)程序的可讀性與可移植性,縮短程序開發(fā)設(shè)計(jì)時(shí)間,本文詳細(xì)介紹了模塊化編程的優(yōu)勢(shì)與具體操作步驟,并舉例。

      隨著對(duì)單片機(jī)學(xué)習(xí)的深入,程序設(shè)計(jì)越來越復(fù)雜,要實(shí)現(xiàn)的功能也越來越多,此時(shí)采用傳統(tǒng)編程方式,將所有的函數(shù)都放在main.c里,則一個(gè)文件內(nèi)會(huì)有很多的代碼,不利于代碼的組織和管理,影響編程者的思路,造成程序的可讀性變差。同時(shí)在很多的應(yīng)用中,有很多功能的重復(fù),如果每次都重新編寫程序,會(huì)造成大量的時(shí)間浪費(fèi),提高程序的可移植性也刻不容緩。在單片機(jī)的實(shí)際應(yīng)用開發(fā)中,一個(gè)程序由很多個(gè)模塊組成,這些模塊的編寫任務(wù)將會(huì)被分配到不同的人。實(shí)現(xiàn)在整個(gè)設(shè)計(jì)過程中的分工合作,減少開發(fā)時(shí)間。

      一、模塊化編程的優(yōu)勢(shì)

      模塊化編程則能很好的解決以上問題,模塊化編程是把各個(gè)模塊的代碼放在不同的.c文件里,在.h文件里提供外部可調(diào)用函數(shù)的聲明,其它.c文件想使用其中的代碼時(shí),只需要#include "xxxx.h"文件,然后在程序中進(jìn)行調(diào)用即可。使用模塊化編程后,我們只需要關(guān)心這個(gè)模塊實(shí)現(xiàn)了什么樣的功能,如何調(diào)用,至于模塊內(nèi)部是如何組織的則無需過多關(guān)注,此時(shí)更多的是追求接口的單一性,把不需要的細(xì)節(jié)盡可能的對(duì)外部屏蔽起來。使用模塊化編程可極大的提高代碼的可閱讀性、可維護(hù)性、可移植性等。

      二、模塊化編程設(shè)計(jì)步驟

      在模塊化編程中,往往會(huì)有多個(gè)C文件,每個(gè)C文件的作用不相同,在C文件中,由于需要對(duì)外提供接口,因此還必須有一些函數(shù)或變量提供給外部其它文件進(jìn)行調(diào)用。因此,對(duì)于每一個(gè)模塊都有相應(yīng)的.c文件和.h文件,為了閱讀調(diào)試方便,原則上.c和.h文件同名。比如,對(duì)延時(shí)函數(shù)進(jìn)行模塊化編程時(shí),我們則可以將其命名為Delay.c和Delay.h。

      1、創(chuàng)建頭文件

      以上創(chuàng)建的.h文件則是頭文件,它里面存放的是可被外部調(diào)用的函數(shù)、變量的聲明,不包括任務(wù)實(shí)質(zhì)性的函數(shù)代碼。我們可以把這個(gè)頭文件理解成一份說明書,說明的內(nèi)容是模塊對(duì)外提供的接口函數(shù)或者接口變量,以及一些很重要的宏定義與結(jié)構(gòu)體信息,離了這些信息,很可能無法正常使用接口函數(shù)或者接口變量。以剛建立的Delay.h為例進(jìn)行闡述頭文件的內(nèi)容及作用。

      #ifndef __DELAY_H__

      #define __DELAY_H__

      void Delay(unsigned int xms);

      #endif

      這個(gè)幾條條件編譯(ifndef和endif)和宏定義(define)是為了防止重復(fù)包含。假如有兩個(gè)不同源文件需要調(diào)用Delay(unsigned int xms)這個(gè)函數(shù),他們分別都通過#include “Delay.h”把這個(gè)頭文件包含了進(jìn)去。在第一個(gè)源文件進(jìn)行編譯時(shí)候,由于沒有定義過__DELAY_H__,因此#ifndef __DELAY_H__條件成立,于是用宏定義定義#define__DELAY_H__定義一個(gè)__DELAY_H__,并將下面的聲明包含進(jìn)去。在第二個(gè)文件編譯時(shí)候,由于第一個(gè)文件包含時(shí)候,已經(jīng)將__DELAY_H__定義過了。因此#ifndef __DELAY_H__不成立,整個(gè)頭文件內(nèi)容就沒有被包含。假設(shè)沒有這樣的條件編譯語句,那么兩個(gè)文件都包含了void Delay(unsigned int xms);就會(huì)引起重復(fù)包含的錯(cuò)誤。因此,在.h文件中,為了防止出現(xiàn)錯(cuò)誤都進(jìn)行了防重復(fù)包含。

      2、模塊功能編程

      以上講了頭文件的作用及定義方法,對(duì)于c文件,則是對(duì)函數(shù)、變量的定義,實(shí)現(xiàn)模塊的功能。比如Delay.c函數(shù)程序如下:

      void Delay(unsigned int xms)

      {

      unsigned char i, j;

      for(i=0;i<xms;i++)

      for(j=0;j<120;j++);

      }

      此段程序和原來的main.c里的延時(shí)函數(shù)一樣,只不過單獨(dú)獨(dú)立出來放要給文件里,實(shí)現(xiàn)程序的模塊化。

      3、模塊調(diào)用

      要實(shí)現(xiàn)模塊的調(diào)用,則需要先將模塊的頭文件添加進(jìn)來,比如在主程序中,如果想要調(diào)用延時(shí)函數(shù),則需要通過#include “Delay.h”將頭文件包含進(jìn)來。

      三、模塊化編程舉例

      通過以上步驟,我們完成了模塊化編程的基本步驟,我們將以流水燈為例,對(duì)程序進(jìn)行模塊化,圖1是我們常規(guī)的編程方法,將延時(shí)函數(shù)和主函數(shù)寫在同一個(gè)C文件里,如果函數(shù)功能復(fù)雜的話,程序的可讀性不好。圖3是將延時(shí)函數(shù)獨(dú)立成一個(gè)模塊,圖2在主函數(shù)里進(jìn)行調(diào)用,使程序簡(jiǎn)潔明了,提高程序的可讀性。如果在其它工程里需要用到延時(shí)函數(shù)時(shí),只需要將延時(shí)函數(shù)的.c文件和.h文件加載到對(duì)應(yīng)的工程里即可,提高了程序的可移植性。同時(shí)對(duì)于復(fù)雜的工程的開發(fā),則可以按模塊進(jìn)行分工,然后再進(jìn)行調(diào)用整合,縮短程序開發(fā)設(shè)計(jì)過程。

      猜你喜歡
      調(diào)用延時(shí)模塊化
      模塊化自主水下機(jī)器人開發(fā)與應(yīng)用
      基于級(jí)聯(lián)步進(jìn)延時(shí)的順序等效采樣方法及實(shí)現(xiàn)
      模塊化住宅
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      ACP100模塊化小型堆研發(fā)進(jìn)展
      中國核電(2017年2期)2017-08-11 08:00:56
      模塊化VS大型工廠
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
      桑塔納車發(fā)動(dòng)機(jī)延時(shí)熄火
      木里| 定安县| 临武县| 静宁县| 册亨县| 广州市| 高唐县| 体育| 双鸭山市| 黔江区| 阆中市| 黔东| 南投县| 扎囊县| 祁门县| 朔州市| 武鸣县| 汕尾市| 青阳县| 大连市| 垣曲县| 乌拉特中旗| 修武县| 天津市| 和龙市| 阿克| 杭锦后旗| 仙桃市| 镇赉县| 镇江市| 日土县| 蓝山县| 东乡县| 肥城市| 靖边县| 林芝县| 镇江市| 孟州市| 济阳县| 三明市| 繁昌县|