單片機C語言-程序結(jié)構(gòu)
先來簡單說說C語言的標(biāo)識符和關(guān)鍵字。 標(biāo)識符是用來標(biāo)識源順序中某個對象的名字的, C語言是大小字敏感的一種高級語言, 假設(shè)我們要定義一個定時器1, 標(biāo)識符由字符串, 數(shù)字和下劃線等組成, 留意的是第一個字符必須是字母或下劃線, 如“1Timer”是錯誤的, 編譯時便會有錯誤提示。 所以普通不要以下劃線開頭命名標(biāo)識符。 含義明晰, 這樣有助于閱讀理解順序。 在C51編譯器中, 只支持標(biāo)識符的前32位為有效標(biāo)識, 普通情況下也足夠用了。 在順序編寫中不允許標(biāo)識符與關(guān)鍵字相同。 在KEILuVision2中的關(guān)鍵字除了有ANSIC標(biāo)準(zhǔn)的32個關(guān)鍵字外還依據(jù)51單片機的特點擴(kuò)展了相關(guān)的關(guān)鍵字(比如for, while等標(biāo)準(zhǔn)的還有sbit, interrupt等擴(kuò)展的, 詳細(xì)列表可以在網(wǎng)上查到)。 其真實KEILuVision2的文本編輯器中編寫C順序, 零碎可以把保留字以不同顏色顯示, 缺省顏色為天藍(lán)色。 分無符號字符類型unsignedchar和有符號字符類型signedchar, 所可以表達(dá)的數(shù)值范圍是0~255。 “0”表示負(fù)數(shù), “1”表示負(fù)數(shù), 負(fù)數(shù)用補碼表示。 所能表示的數(shù)值范圍是-128~+127。 ??菏?牟孤胗朐?胂嗤??負(fù)二進(jìn)制數(shù)的補碼等于它的相對值按位取反后加1。 用于寄存一個雙字節(jié)數(shù)據(jù)。 signedint表示的數(shù)值范圍是-32768~+32767, 字節(jié)中最高位表示數(shù)據(jù)的符號, “0”表示負(fù)數(shù), “1”表示負(fù)數(shù)。 unsignedint表示的數(shù)值范圍是0~65535。 float浮點型在十進(jìn)制中具有7位有效數(shù)字, 是符合IEEE-754標(biāo)準(zhǔn)的單精度浮點型數(shù)據(jù), 占用四個字節(jié)。 因浮點數(shù)的結(jié)構(gòu)較復(fù)雜在以后再做詳細(xì)的討論。 在這個變量中寄存的指向另一個數(shù)據(jù)的地址。 對不同的處理器長度也不盡相同, 指針變量也具有類型, 在以后專門探討。 bit位標(biāo)量是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型, 但不能定義位指針, 也不能定義位數(shù)組。 不是0就是1, 類似一些高級語言中的Boolean類型中的True和False。 值域為0~255。 應(yīng)用它可以訪問51單片機外部的一切特殊功能寄存器。 在后面的語句中我們用以用P1=255(對P1端口的一切引腳置高電平)之類的語句來操作特殊功能寄存器。 sfr16占用兩個內(nèi)存單元, sfr16和sfr一樣用于操作特殊功能寄存器, 所不同的是它用于操作占兩個字節(jié)的寄存器, sbit是C51中的一種擴(kuò)充數(shù)據(jù)類型, 應(yīng)用它可以訪問芯片外部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。 如先前我們定義了sfrP1=0x90;, 因P1端口的寄存器是可位尋址的, 所以我們可以定義sbitP1_1=P1^1;, 異樣我們可以用P1. 1的地址去寫, 通常這些可以直接運用零碎提供的預(yù)處理文件(如reg51. h, h), 直接援用可以省去一點時間, #####include//預(yù)處理文件外面定義了特殊寄存器的稱號, 如P1口定義為P1 對應(yīng)硬件電路圖如下: 順序中的把戲數(shù)據(jù)可以自以去定義, 因這里我們的LED要AT89C51的P1引腳為低電平才會點亮, 所以我們要向P1口的各引腳寫數(shù)據(jù)0, P1口的八個引腳剛好對應(yīng)P1口特殊寄存器的八個二進(jìn)位, 如向P1口定數(shù)據(jù)0xFE, 最C語言低位D0為0, 如此類推, 大家不難算出自己想要做的效果了。 大家編譯燒寫看看, 顯示的速度您可以依據(jù)需求調(diào)整延時a的值, 不要超過變量類型的值域就行了。 也沒關(guān)系, 還記得Keil的I/O口仿真功能嗎?看看這里就知道該怎樣辦了。 所以P1可以直接運用不會出錯啦。 接上去順序直接跳轉(zhuǎn)到main函數(shù)執(zhí)行, do-while循環(huán)保證單片機不時循環(huán)工作。 下面我們把順序換一種方式寫, 以加深對寄存器的理解。