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