單片機(jī)C語(yǔ)言程序該這樣寫(xiě)!不是教科書(shū)上教的那樣!
寫(xiě)單片機(jī)程序也是程序,也要遵循寫(xiě)軟件的一些基本原則,不是為了完成功能那么簡(jiǎn)單。我看過(guò)的所有的C語(yǔ)言單片機(jī)書(shū)籍基本都不注重模塊化思想,完全是拿著C當(dāng)匯編用,簡(jiǎn)直是在糟蹋C語(yǔ)言!
如下問(wèn)題,幾乎所有的單片機(jī)書(shū)籍中都大量存在(更別說(shuō)網(wǎng)上的和現(xiàn)實(shí)中的代碼了,書(shū)上都寫(xiě)的那么差勁,學(xué)的人能好到哪里去):
1、變量到處定義,根本不管變量的生命周期是否合適(請(qǐng)回答:全局變量、局部變量、靜態(tài)變量、volatile變量有什么區(qū)別聯(lián)系?)
2、變量名稱(chēng)極不規(guī)范,根本從名字上看不出來(lái)這個(gè)變量類(lèi)型是什么,到底想干什么。
3、函數(shù)定義幾乎不用參數(shù),全都是void
4、語(yǔ)句寫(xiě)的一點(diǎn)都不直觀(guān),根本就是在用匯編。比如:想取一個(gè)字長(zhǎng)的高字節(jié)和低字節(jié),應(yīng)該定義一個(gè)宏或是函數(shù)來(lái)做,如#define HIBYTE(w) ((BYTE)((DWORD)(w) >> 8)),以后直接用HIBYTE()多直觀(guān),難道非得用(BYTE)((DWORD)(w) >> 8)代表你的移位操作的水平很高嗎?
5、最重要的一點(diǎn),沒(méi)有建立模塊化的編程思想。一個(gè)程序往往要很多部分協(xié)同工作,需要把不同的功能分離出來(lái)單獨(dú)創(chuàng)建一個(gè).h和.c的文件,然后在頭文件中把可以訪(fǎng)問(wèn)的函數(shù)暴露出來(lái)。
6、不思考曾經(jīng)做過(guò)的程序是否還有改進(jìn)的余地,寫(xiě)程序如果只是為了寫(xiě)而寫(xiě),一輩子也長(zhǎng)進(jìn)不了多少!

編輯:admin 最后修改時(shí)間:2018-05-19