單片機(jī)模塊化編程(二)再探
又有幾天沒有跟大家見面啦,真真是有點(diǎn)極為想念呢。在上一帖中,我向大家簡(jiǎn)單的講解了使用單片機(jī)模塊化編程給我們帶來(lái)的好處。而在現(xiàn)實(shí)工作場(chǎng)合,不論是“攻城獅”們還是“程序猿”們,也不論是軟件設(shè)計(jì)還是硬件設(shè)計(jì),模塊化的概念也是大家經(jīng)?;蛘哒f(shuō)是必須使用的思維了。下面針對(duì)大家的51單片機(jī)課程的學(xué)習(xí),詳細(xì)給大家講講如何將模塊化編程這一概念運(yùn)用到單片機(jī)實(shí)戰(zhàn)當(dāng)中去。還是以大家非常之熟悉的流水燈為例進(jìn)行講解吧。(版主下文中開啟嚴(yán)肅教學(xué)模式,上課大家不要講話,上廁所和有問題的請(qǐng)先舉手示意。)
本文引用地址:http://www.ex-cimer.com/article/269322.htm(一)怎樣使用模塊化編程建立工程
下面以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的LED流水燈作為實(shí)例進(jìn)行詳細(xì)講解。我們都知道,要想實(shí)現(xiàn)簡(jiǎn)單的LED流水燈(這里使用延時(shí)函數(shù),而不使用定時(shí)器中斷法),我們必須要有以下函數(shù):延時(shí)函數(shù)、LED初始化函數(shù)、和LED流水燈實(shí)現(xiàn)函數(shù),這三大類函數(shù)。那么,我們?cè)鯓右阅K的形式來(lái)使用這些函數(shù)呢。下文中作者采用了圖文并茂的形式進(jìn)行分析,這真真是極好的~
(二)LED流水燈例程
1、首先使用Keil uVision新建工程,這里我采用的是Keil uVision4
2、保存創(chuàng)建的工程
3、選擇所使用的芯片
4、點(diǎn)擊ok后,在彈出的對(duì)話框中選擇“否”
5、新建文件,用以編輯函數(shù)和頭文件
6、將新建的這些文件分別重命名并保存
7、將xxx.C的文件添加到工作組中。
8、當(dāng)完成以上步奏之后,我們就可以進(jìn)行具體的函數(shù)編寫了。對(duì)于如何編寫一個(gè).C的C語(yǔ)言文件和一個(gè).h的頭文件,下面我來(lái)具體說(shuō)明。首先以主函數(shù)main.c為例。如下圖:
我們可以看到,這個(gè)流水燈的主函數(shù)main.c如果用模塊化編程的方法來(lái)實(shí)現(xiàn)的話,干凈整潔了很多。少了我們常見的相關(guān)的延時(shí)函數(shù)delay();以及對(duì)uint和uchar的宏定義。且在主函數(shù)中,直接使用了LED_init();和LED_display();這兩個(gè)函數(shù)。而我們知道,要想在主函數(shù)中使用一個(gè)子函數(shù),必須得在主函數(shù)的前面對(duì)這幾個(gè)子函數(shù)進(jìn)行聲明,可是本段代碼中并沒有出現(xiàn)相關(guān)的語(yǔ)句。取而代之的是,在程序段第二行,多了一句#include “LED.h”,這一句話又有什么樣的特殊功能呢?下面讓我們來(lái)研究一下LED.c和LED.h的廬山真面目。
9、LED.c和LED.h的編寫
從LED.c這個(gè)C文件中,我們可以看出具體對(duì)LED_init();和LED_display();函數(shù)如何實(shí)現(xiàn),在這個(gè)文件中有著具體的描述。那么問題來(lái)了~~LED.c和main.c之間是怎樣產(chǎn)生聯(lián)系的呢?換句話說(shuō),當(dāng)我們?cè)诹硗庖粋€(gè)文件中需要調(diào)用其他文件當(dāng)中的某個(gè)函數(shù)的時(shí)候,那么我們?cè)撊绾巫瞿?要想搞清楚這個(gè)問題,是時(shí)候請(qǐng)出LED.h這位大神了。一般來(lái)講xxx.h格式的文件為頭文件,頭文件提供了程序內(nèi)函數(shù)被其他函數(shù)所調(diào)用的接口。我們也可以把他稱為一份“接口描述文件”。
51單片機(jī)相關(guān)文章:51單片機(jī)教程
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評(píng)論