近期寫了一些比較大的單片機程序,找了很多參考資料,看了大量別人的程序。我從中發現了自己對于C語言編程還只是知道如何實現功能,但對編程規范掌握的不好,編程習慣也沒有很好的養成。

學了這么久的單片機,還真是挺難為情的
由此我將一些經驗分享出來,供大家參考及修正。
說一說起因,為什么標題叫“幾人不知頭文件“。
當我在寫一些代碼量較大的程序時,因為沒有合理的規劃代碼結構,導致代碼順序很混亂,當要查找一些功能函數時,只能打開Functions窗口。但我常常忘了有這么個工具,就使勁在一篇長長的代碼中去翻閱。這讓我很是頭疼。

一陣頭疼
為啥會這樣呢?
還不是因為學的不好,用四川話來說就是“二十九天的徒弟”。

超級難受
只掌握了個皮毛。雖然有時候看著自己的代碼很厲害,但仔細一看,爛的過分,偶爾都會想,這是我寫的嗎?雖然自己清楚的知道,這就是我寫的,但始終不想承認。

還是要承認才行
當我在閱讀別人的代碼時,發現他們的代碼調理清晰,功能明確。有時候看到功能一樣的代碼,為啥自己的就是很丑呢。

拒絕接受
還不是因為沒有使用頭文件來分開功能代碼,所有的功能代碼都在一個.c文件下,能不丑嗎?玩著玩著就幾百行代碼了。各種功能函數看的眼花繚亂。于是我決定痛改前非。做一下功能分類。相信自己一定可以。

不敢相信啊,我居然會痛改前非
于是我便開始去學習怎么使用頭文件,怎么在文件外定義函數調用。

感覺自己好厲害
這里就要講干貨了
1、什么是頭文件(.h)
在單片機C程序設計中,那些啥項目一般都按照功能進行結構化設計,將一個項目劃分為多個功能,每一個功能的相關程序代碼放在一個.c文件中,稱之為一個模塊,xxx.c的xxx就是功能名。但光有一個.c肯定是不夠的,是不能被主函數所調用的。還需要一個.h文件,自然這個頭文件就出來了。
一個模塊由兩個文件組成,一個*.h文件,對模塊中的數據結構,函數原型,I/O端口進行描述和聲明;另一個則是*.c文件,對數據實例或對象定義,以及函數算法具體實現。
咱還是舉個例子,具體說明一下吧。

舉個栗子實際說明一下啥是.h文件
上代碼:
DS1302.H
#ifndef __DS1302_H_#define __DS1302_H_//---包含頭文件---//#include#include//---重定義關鍵詞---//#ifndef uchar#define uchar unsigned char#endif#ifndef uint #define uint unsigned int#endif//---定義ds1302使用的IO口---//sbit DSIO=P3^4;sbit RST=P3^5;sbit SCLK=P3^6;//---定義全局函數---//void Ds1302Write(uchar addr, uchar dat);uchar Ds1302Read(uchar addr);void Ds1302Init();void Ds1302ReadTime();//---加入全局變量--//extern uchar TIME[7];//加入全局變量#endif
這里重新定義了關鍵字,定義了I/O端口,以及進行了函數聲明。我們在主函數中只需要包含這個頭文件就可以調用DS1302.c中的函數。這里未貼出代碼,太長了呀。
2、.h文件的作用
作為項目設計,除了對項目總體功能進行詳細描述外,激素hi對內閣模塊進行詳細定義,也就是給出所有模塊的頭文件。通常.h頭文件要定義模塊中個函數的功能,以及輸入輸出參數的要求。也可以在頭文件中先規劃一下相應的功能函數,再根據.h文件進行設計、編程、調試。我們個人編程最主要的作用還是進行模塊化管理,方便自己進行開發和設計。
當然如果是企業開發,為了安全需要保密,模塊實現后可以鏈接文件obj或庫文件lib的方式提供給項目其他成員使用。因為不用提供源代碼,就可以進行公開發行,保證我們程序員和公司的所有權。同時也可以防止別人有意無意修改產生非一致性,造成版本或功能混亂。
如果要引用模塊內的數據或算法函數,只要用include包含指定模塊的.h文件即可。

下一個:繼續
3、.h文件的基本組成
我們從上面的DS1302.h文件中可以看出.h文件有哪些組成嗎?

我覺得可以
仔細看,來分析一下。
#ifndef __DS1302_H_ // 這一句是防止重復引用,如果沒有定義過__DS1302_H_這個 文件就編譯下一句#define __DS1302_H_ // 此符號唯一,表示只要引用過一次,即#include,則定義符號__DS1302_H_#include // 這句沒啥好說的,就是包含51單片機的特殊寄存器#ifndef uchar // 這一句還是和上面的是一樣的,為了防止重復引用定義各種功能函數原型聲明///#endif // 這句是整個文件的結束標志

那怎么可能嘛
最后寫點
第一次嘗試加入表情包,不知道效果怎么樣。
對于頭文件暫時就說這么多,以后想起來再補充吧。
對于大型項目的設計編寫,模塊化設計的這種思想很重要,使用頭文件這種方式是比較方便的,讓代碼管理起來更加方便,設計起來更加方便。對于設計思路也有一定的幫助,只需要想我這個模塊該怎么寫。怎么樣去設計。這也就是模塊化程序設計的思想所在。

我覺得下面的更重要
分享更多單片機編程方面的知識,用自己踩過的坑給大家展示如何躲避他們。
關注并私信我,發送“08”即可獲取文中實例的完整程序及仿真文件。
關注+點贊+評論,在評論區說出你的想法,和我一起交流,你的支持是我創作的動力,一枚科技仔感謝您的閱讀。

期待你的評論喲