單片機(jī)C51語(yǔ)言兼?zhèn)涓呒?jí)語(yǔ)言與低級(jí)語(yǔ)言的優(yōu)點(diǎn)。
語(yǔ)法結(jié)構(gòu)和標(biāo)準(zhǔn)C語(yǔ)言基本一致,語(yǔ)言簡(jiǎn)潔,便于學(xué)習(xí)。
運(yùn)行于單片機(jī)平臺(tái),支持的微處理器種類繁多,可移植性好。對(duì)于兼容的8051系列單片機(jī),只要將一個(gè)硬件型號(hào)下的程序稍加修改,甚至不加改變,就可移植到另一個(gè)不同型號(hào)的單片機(jī)中運(yùn)行。
具有高級(jí)語(yǔ)言的特點(diǎn),盡量減少底層硬件寄存器的操作。
單片機(jī)C51語(yǔ)言提供了完備的數(shù)據(jù)類型、運(yùn)算符及函數(shù)供使用。
C51語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,可以使用一對(duì)花括號(hào)“{}”將一系列語(yǔ)句組合成一個(gè)復(fù)合語(yǔ)句,程序結(jié)構(gòu)清晰明了。
C51語(yǔ)言代碼執(zhí)行的效率方面十分接近匯編語(yǔ)言,且比匯編語(yǔ)言的程序易于理解,便于代碼共享。
“Hello world”程序
C語(yǔ)言是一種高級(jí)程序設(shè)計(jì)語(yǔ)言,它提供了十分完備的規(guī)范化流程控制結(jié)構(gòu)。因此采用C51語(yǔ)言設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)程序時(shí),首先要盡可能地采用結(jié)構(gòu)化的程序設(shè)計(jì)方法,這樣可使整個(gè)應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維護(hù)。對(duì)于一個(gè)較大的程序,可將整個(gè)程序按功能分成若干個(gè)模塊,不同的模塊完成不同的功能。對(duì)于不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和出口參數(shù),而經(jīng)常使用的一些程序最好編成函數(shù),這樣既不會(huì)引起整個(gè)程序管理的混亂,還可增強(qiáng)可讀性,移植性也好。
在程序設(shè)計(jì)過(guò)程中,要充分利用C51語(yǔ)言的預(yù)處理命令。對(duì)于一些常用的常數(shù),如TRUE,F(xiàn)ALSE,PI以及各種特殊功能寄存器,或程序中一些重要的依據(jù)外界條件可變的常量,可采用宏定義"#define"或集中起來(lái)放在一個(gè)頭文件中進(jìn)行定義,再采用文件包含命令"#include"將其加入到程序中去。這樣當(dāng)需要修改某個(gè)參量時(shí),只須修改相應(yīng)的包含文件或宏定義,而不必對(duì)使用它們的每個(gè)程序文件都作修改,從而有利于文件的維護(hù)和更新。現(xiàn)舉例說(shuō)明如下:
例1 對(duì)于不同的單片機(jī)晶振,程序取不同的延時(shí)時(shí)間,而且可根據(jù)外界條件的變化修改延時(shí)時(shí)間的長(zhǎng)短。對(duì)于這樣的程序,可利用宏定義和條件編譯來(lái)實(shí)現(xiàn)。程序如下:
#define flag 1
#ifdef flag==1
#define fosc 6M
delay=10;
#elif flag = = 0
#define fosc 8M
delay=12;