新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 初步認識51單片機-2.4單片機C語言模塊化編程

        初步認識51單片機-2.4單片機C語言模塊化編程

        作者: 時間:2016-11-21 來源:網絡 收藏
        2.2單片機C語言模塊化編程

        這里插入一節,講講單片機C語言的模塊化編程。什么叫做模塊化編程。前面我們寫的代碼全部在led.c文件中,試想一下,如果代碼過多,怎么閱讀。另外與你合作的人如何看懂你的代碼。簡單的講,沒有可讀性和移植性。模塊化編程就是為了解決這個問題。當一個工程量比較大時,我們會把這個工程分成一段一段的任務,每個人完成不同段的任務。同時每個段之間是有聯系的。假設開發人員A需要條用B的某個功能模塊,那么A只要關注模塊的功能和如何調用就行了,至于這個功能是如何實現的,可以不用理會。另外,對于單個人員開發完某個工程,下一個工程可能需要同樣的功能模塊,同樣只需要知道如何調用該模塊就可以了,無需再去研究該段代碼實現功能的過程。還有一個工程如果過大,出現了錯誤,不容易排查錯誤。但是按照一個一個模塊的思路來排查,思路就顯得更清晰。

        本文引用地址:http://www.104case.com/article/201611/319545.htm

        下面我們來看看如何建立單片機C語言模塊化編程

        (1)打開Keil軟件,Project->New uVersion Project

        打開led文件夾,在file name中輸入led并保存

        (2)選擇單片機型號,前面講過不羅嗦

        (3)彈出一個對話框,選擇yes

        (4)新建一個空白文件或者使用ctrl+N,然后保存(ctrl+S),取名為src

        然后雙擊src文件夾,在file name中輸入main.c并保存。

        在main.c中輸入以下程序:

        • #include
        • void main(void)
        • {
        • }
        • 然后保存

        (5)點擊project->options for Target ‘target 1’…

        ?

        (6)在target中,選擇晶振為11.0592

        (7)然后點擊output, 勾選Creat HEX File,然后點擊Select Folder for Objects…

        (8)此時會彈出一個對話框,新建一個文件夾并取名為output,然后雙擊output文件夾,點擊確定

        (9)然后點擊Listing,之后點擊Select Folder for listings

        (10)在彈出的對話框中雙擊output,點擊ok,再次點擊ok.

        (11)回到主界面,右鍵單擊source group, 選擇add files to group”sourcegroup1”…

        (12)在彈出的對話框中雙擊src,點擊main.c,再點擊Add,然后點擊close

        (13)src文件夾中存放源碼,當我們點擊編譯時,輸出相關的文件會存放在output中

        (14)現在我們新建四個文件,led.c,led.h,delay.c,delay.h. 我們把前面寫的程序分成三個模塊,main.c部分,led.c部分,delay.c延時部分. 如何新建這些文件,同樣的,點擊創建空白文件(ctrl+N),然后保存(ctrl+S),將保存路徑選擇在src文件夾中,如果要建立led.c,則filename為led.c,如果要建立led.h,則filename為led.h

        (15)建好這四個文件后,在led.c中輸入如下內容:

        • #include
        • sbit LED = P1^0;
        • void ledON(void)
        • {
        • LED =0;
        • }
        • void ledOFF(void)
        • {
        • LED=1;
        • }

        復制代碼

        然后點擊保存。

        在led.h中輸入

        • #ifndef _LED_H_
        • #define _LED_H_
        • extern void ledON(void);
        • extern void ledOFF(void);
        • #endif

        復制代碼

        在delay.c中輸入,

        • unsigned int i;
        • void delay(void)
        • {
        • for(i=0;i<30000;i++);
        • }

        復制代碼

        在delay.h中輸入:

        • #ifndef _DELAY_H_
        • #define _DELAY_H_
        • extern void delay(void);
        • #endif

        復制代碼

        在main.c中輸入:

        • #include
        • #include "delay.h"
        • #include "led.h"
        • void main(void)
        • {
        • while(1)
        • {
        • ledON();
        • delay();
        • ledOFF();
        • delay();
        • }
        • }

        復制代碼

        (16)添加led.c,delay.c文件

        (17)點擊編譯,檢查錯誤,完成。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 涿州市| 宁波市| 枣庄市| 慈利县| 青川县| 财经| 青州市| 梁平县| 清徐县| 诏安县| 湛江市| 南华县| 渭南市| 波密县| 丽江市| 师宗县| 习水县| 咸阳市| 临沧市| 阆中市| 大足县| 宜君县| 凤冈县| 阜宁县| 灵丘县| 德令哈市| 平江县| 永安市| 务川| 广汉市| 迁西县| 安化县| 耿马| 林周县| 任丘市| 新余市| 海口市| 阿坝| 大宁县| 陈巴尔虎旗| 吴堡县|