資源描述:
《《51單片機(jī)C語(yǔ)言開(kāi)發(fā)詳解》第4章 Keil C51單片機(jī)開(kāi)發(fā)環(huán)境.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第4章KeilC51單片機(jī)開(kāi)發(fā)環(huán)境通過(guò)前面章節(jié)的講解,讀者對(duì)于AT89S51單片機(jī)的硬件結(jié)構(gòu)和匯編語(yǔ)言編程都有了一個(gè)詳細(xì)的了解。隨著單片機(jī)開(kāi)發(fā)工具的不斷發(fā)展,目前,利用C語(yǔ)言開(kāi)發(fā)單片機(jī)程序,具有效率高、可讀性強(qiáng)、可移植性強(qiáng)等特點(diǎn),已經(jīng)成為單片機(jī)程序開(kāi)發(fā)中的主要方式。KeilC51是一款十分流行的MCS-51內(nèi)核單片機(jī)C語(yǔ)言開(kāi)發(fā)環(huán)境,在本章中詳細(xì)向讀者介紹KeilC51的開(kāi)發(fā)方法,使讀者能夠具備利用C語(yǔ)言開(kāi)發(fā)AT89S51單片機(jī)程序的能力。4.1C語(yǔ)言編程基礎(chǔ)KeilC51的開(kāi)發(fā)方法其實(shí)和大家學(xué)習(xí)的C語(yǔ)言基本相同,本節(jié)介紹C51的開(kāi)發(fā),內(nèi)
2、容和C語(yǔ)言的基礎(chǔ)知識(shí)差不多,由于篇幅有限,如需要深入了解的讀者可以參考一些C語(yǔ)言的教程。4.1.1C51程序的基本結(jié)構(gòu)C51源程序結(jié)構(gòu)與一般C語(yǔ)言基本一致,C51源程序文件的擴(kuò)展名為".c",如Add.c、Max.c等。一個(gè)C51源程序大體上是一個(gè)函數(shù)定義的集合,在這個(gè)集合中有且僅有一個(gè)名為main()的函數(shù),也稱(chēng)為該程序的主函數(shù)。主函數(shù)是程序的入口,它是一個(gè)特殊的函數(shù),程序的執(zhí)行都是從main()函數(shù)開(kāi)始的。主函數(shù)中的所有語(yǔ)句執(zhí)行完畢,則程序執(zhí)行結(jié)束。4.1.2標(biāo)識(shí)符與關(guān)鍵字標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)源程序中某個(gè)對(duì)象的名字的,這些對(duì)象可以是語(yǔ)句
3、、數(shù)據(jù)類(lèi)型、函數(shù)、變量、數(shù)組等等。C語(yǔ)言是區(qū)分大小寫(xiě)的一種高級(jí)語(yǔ)言,如果要定義一個(gè)定時(shí)器1,可以寫(xiě)做“Timer1”,如果程序中有"TIMER1",那么這兩個(gè)是完全不同定義的標(biāo)識(shí)符。標(biāo)識(shí)符由字符串、數(shù)字和下劃線等組成,需要注意的是,第一個(gè)字符必須是字母或下劃線,類(lèi)似“1Timer”的定義是錯(cuò)誤的,編譯時(shí)便會(huì)有錯(cuò)誤提示。有些編譯系統(tǒng)專(zhuān)用的標(biāo)識(shí)符以下劃線開(kāi)頭,所以除了在定義專(zhuān)業(yè)標(biāo)識(shí)符以外,一般不要以下劃線開(kāi)頭命名標(biāo)識(shí)符。4.1.3數(shù)據(jù)類(lèi)型數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存放情況由數(shù)據(jù)結(jié)構(gòu)決定。C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類(lèi)型決定的,數(shù)據(jù)類(lèi)型可分為基本數(shù)據(jù)類(lèi)
4、型和復(fù)雜數(shù)據(jù)類(lèi)型,復(fù)雜數(shù)據(jù)類(lèi)型是由基本數(shù)據(jù)類(lèi)型構(gòu)造而成的。在標(biāo)準(zhǔn)C語(yǔ)言中基本的數(shù)據(jù)類(lèi)型為char、int、short、long、float和double,而在C51編譯器中int和short相同,float和double相同。4.1.4常量與變量在程序運(yùn)行過(guò)程中不能改變值的量稱(chēng)為常量,在程序運(yùn)行過(guò)程中不斷變化的量稱(chēng)為變量??梢允褂盟蠧51編譯器支持的數(shù)據(jù)類(lèi)型定義一個(gè)變量,而常量的數(shù)據(jù)類(lèi)型只限于整型、浮點(diǎn)型、字符型、字符串型和位標(biāo)量。4.1.5函數(shù)一個(gè)好的C語(yǔ)言程序應(yīng)該把一個(gè)大問(wèn)題劃分成若干子問(wèn)題,解決一個(gè)子問(wèn)題對(duì)應(yīng)編制一個(gè)函數(shù),C程序
5、一般是由大量的小函數(shù)而不是由少量大函數(shù)構(gòu)成的。使用函數(shù)帶來(lái)的好處是程序各部分相互充分獨(dú)立,任務(wù)單一。函數(shù)提供了編制程序的手段,使之容易讀、寫(xiě)、理解、排除錯(cuò)誤、修改和維護(hù)。這些獨(dú)立的小模塊也可以作為一種固定規(guī)格的程序,用來(lái)組成新的大程序,使得程序的可移植性和可重用性能大大提高。一些較常用的函數(shù)時(shí),只要將其保存在函數(shù)庫(kù)里,在以后的編程中可被方便地調(diào)用而不需要再去編譯它們,連接時(shí)將會(huì)自動(dòng)從相應(yīng)的庫(kù)中裝配成所需程序。4.1.6數(shù)組與指針數(shù)組是指具有相同數(shù)據(jù)類(lèi)型的變量集合,擁有共同的名字。數(shù)組中的每個(gè)特定元素都使用下標(biāo)來(lái)訪問(wèn)。數(shù)組存放在一段連續(xù)的
6、存儲(chǔ)地址中,第一個(gè)數(shù)組元素存放于最低的地址,最高的地址對(duì)應(yīng)最后一個(gè)數(shù)組元素。數(shù)組有一維的和多維的,下面分別介紹。(1)一維數(shù)組一維數(shù)組的聲明格式是:類(lèi)型變量名[長(zhǎng)度]類(lèi)型是指數(shù)據(jù)類(lèi)型,即每一個(gè)數(shù)組元素的數(shù)據(jù)類(lèi)型,包括整數(shù)型、浮點(diǎn)型、字符型、指針型以及結(jié)構(gòu)和聯(lián)合。4.1.6結(jié)構(gòu)體與聯(lián)合體結(jié)構(gòu)體是一種由基本數(shù)據(jù)類(lèi)型構(gòu)成、并用一個(gè)標(biāo)識(shí)符來(lái)命名的各種變量的組合。結(jié)構(gòu)體中可以使用不同的數(shù)據(jù)類(lèi)型。在KeilC51中,結(jié)構(gòu)體也是一種數(shù)據(jù)類(lèi)型,可以使用結(jié)構(gòu)體變量,因此,與其他類(lèi)型的變量一樣,在使用結(jié)構(gòu)體變量時(shí)要先對(duì)其定義。定義結(jié)構(gòu)體變量的一般格式如下:
7、struct結(jié)構(gòu)體名{類(lèi)型變量名;類(lèi)型變量名;……}結(jié)構(gòu)體變量;4.1.7類(lèi)型定義與C語(yǔ)言編程一樣,KeilC51允許由用戶自己定義類(lèi)型說(shuō)明符,也就是說(shuō)允許由用戶為數(shù)據(jù)類(lèi)型使用自定義的名字,該功能可以使用類(lèi)型定義符typedef完成。例如,有整型量a、b,其說(shuō)明如下:inta,b;其中int是整型變量的類(lèi)型說(shuō)明符,int的長(zhǎng)度為16位,為了增加程序的可讀性,可把整型說(shuō)明符用typedef定義為“typedefintINT16”,這以后就可用INT16來(lái)代替int作整型變量的類(lèi)型說(shuō)明了,例如:INT16a,b;//等效于inta,b4.1
8、.8宏定義與條件編譯在編寫(xiě)程序時(shí),使用的是用戶能夠看懂的ASCII碼。但是計(jì)算機(jī)必須將這些ASCII碼經(jīng)過(guò)翻譯后變成機(jī)器語(yǔ)言。這個(gè)翻譯過(guò)程分兩步,叫做編譯、鏈接過(guò)程。第一步的編譯過(guò)程是將源程序中除了函數(shù)調(diào)用