資源描述:
《C51語言編程基礎(chǔ)課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第3章C51語言編程基礎(chǔ)與KeilμVision3開發(fā)平臺1單片機(jī)應(yīng)用系統(tǒng)日趨復(fù)雜,對程序的可讀性、升級與維護(hù)以及模塊化要求越來越高,對軟件編程要求也越來越高,要求編程人員在短時間內(nèi)編寫出執(zhí)行效率高、運(yùn)行可靠的程序代碼。同時,也要方便多個編程人員來進(jìn)行協(xié)同開發(fā)。C51語言是近年來在8051單片機(jī)開發(fā)中,普遍使用的程序設(shè)計語言,能直接對8051單片機(jī)硬件進(jìn)行操作,既有高級語言特點(diǎn),又有匯編語言特點(diǎn),因此在8051單片機(jī)程序設(shè)計中,得到廣泛使用。本章介紹8051單片機(jī)的C51語言,以及如何使用C51語言
2、集成化開發(fā)平臺KeilμVision3,進(jìn)行C51程序設(shè)計與開發(fā)。23.1C51編程語言簡介用于8051單片機(jī)編程的C語言,在標(biāo)準(zhǔn)C基礎(chǔ)上針對8051硬件特點(diǎn)進(jìn)行擴(kuò)展,并向8051上移植,經(jīng)多年努力,C51已成為公認(rèn)的高效、簡潔的8051單片機(jī)的實用高級編程語言。與8051匯編語言相比,C51語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯優(yōu)勢,易學(xué)易用。3.1.1C51語言與8051匯編語言比較與8051匯編語言相比,C51有如下優(yōu)點(diǎn)。(1)可讀性好。C51語言程序比匯編語言程序的可讀性好,編程效率
3、高,程序便于修改、維護(hù)以及升級。(2)模塊化開發(fā)與資源共享。用C51開發(fā)的程序模塊可不經(jīng)修改,直接被其他工程所用,使得開發(fā)者能夠很好地利用已有的大量標(biāo)準(zhǔn)C程序資源與豐富的庫函數(shù),減少重復(fù)勞動,同時也有利于多個工程師進(jìn)行協(xié)同開發(fā)。(3)可移植性好。為某種型號單片機(jī)開發(fā)的C語言程序,只需把與硬件相關(guān)的頭文件和編譯鏈接的參數(shù)進(jìn)行適當(dāng)修改,就可方便地移植到其他型號的單片機(jī)上。例如,為8051單片機(jī)編寫的程序通過改寫頭文件以及少量的程序行,就可方便地移植到PIC單片機(jī)上。(4)生成的代碼效率高。當(dāng)前較好的C5
4、1語言編譯系統(tǒng)編譯出來的代碼效率只比直接使用匯編語言低20%左右,如果使用優(yōu)化編譯選項,最高可達(dá)到90%左右。43.1.2C51語言與標(biāo)準(zhǔn)C語言的比較C51語言與標(biāo)準(zhǔn)C語言間有許多相同地方,但也有自身特點(diǎn)。不同的嵌入式C語言編譯系統(tǒng)之所以與標(biāo)準(zhǔn)C語言有不同的地方,主要是由于它們所針對的硬件系統(tǒng)不同。對于8051單片機(jī),目前廣泛使用的是C51語言。C51語言基本語法與標(biāo)準(zhǔn)C相同,是在標(biāo)準(zhǔn)C的基礎(chǔ)上進(jìn)行適合8051內(nèi)核單片機(jī)硬件的擴(kuò)展。深入理解C51語言對標(biāo)準(zhǔn)C語言的擴(kuò)展部分以及它們的不同之處,是掌握C
5、51語言的關(guān)鍵之一。5C51語言與標(biāo)準(zhǔn)C語言一些差別如下。(1)庫函數(shù)不同。標(biāo)準(zhǔn)C中不適合于嵌入式控制器系統(tǒng)的庫函數(shù),被排除在C51語言之外,如字符屏幕和圖形函數(shù)。有些庫函數(shù)必須針對8051的硬件特點(diǎn)來做出相應(yīng)的開發(fā)。例如,在標(biāo)準(zhǔn)C中,庫函數(shù)printf和scanf,常用于屏幕打印和接收字符,而在C51語言中,主要用于串行口數(shù)據(jù)的收發(fā)。(2)數(shù)據(jù)類型有一定區(qū)別。在C51中增加幾種8051單片機(jī)的數(shù)據(jù)類型,在標(biāo)準(zhǔn)C的基礎(chǔ)上又?jǐn)U展了4種類型。例如,8051單片機(jī)包含位操作空間和豐富的位操作指令,因此,C
6、51語言與標(biāo)準(zhǔn)C語言相比增加了位類型。6(3)C51語言變量存儲模式與標(biāo)準(zhǔn)C語言中變量存儲模式數(shù)據(jù)不一樣。標(biāo)準(zhǔn)C最初是為通用計算機(jī)設(shè)計的,在通用計算機(jī)中只有一個程序和數(shù)據(jù)統(tǒng)一尋址的內(nèi)存空間,而C51語言中變量的存儲模式與8051單片機(jī)的各種存儲器區(qū)緊密相關(guān)。(4)數(shù)據(jù)存儲類型不同。8051存儲區(qū)可分為內(nèi)部數(shù)據(jù)存儲區(qū)、外部數(shù)據(jù)存儲區(qū)以及程序存儲區(qū)。內(nèi)部數(shù)據(jù)存儲區(qū)可分為3個不同的C51存儲類型:data、idata和bdata。外部數(shù)據(jù)存儲區(qū)分為2個不同的C51存儲類型:xdata和pdata。程序存儲
7、區(qū)只能讀不能寫,可能在8051內(nèi)部或者在外部,C51語言提供的code存儲類型用來訪問程序存儲區(qū)。7(5)標(biāo)準(zhǔn)C語言沒有處理單片機(jī)中斷的定義,而C51語言中有專門的中斷函數(shù)。(6)頭文件不同。C51語言頭文件必須把8051單片機(jī)內(nèi)部的外設(shè)硬件資源(如定時器、中斷、I/O等)相應(yīng)的特殊功能寄存器寫入到頭文件內(nèi),而標(biāo)準(zhǔn)C不用。(7)程序結(jié)構(gòu)的差異。由于8051單片機(jī)的硬件資源有限,它的編譯系統(tǒng)不允許太多的程序嵌套。其次,標(biāo)準(zhǔn)C語言所具備的遞歸特性不被C51語言支持。8但從數(shù)據(jù)運(yùn)算操作、程序控制語句以及函
8、數(shù)的使用上來說,C51與標(biāo)準(zhǔn)C幾乎沒有什么明顯差別。如果程序設(shè)計者具備了有關(guān)標(biāo)準(zhǔn)C語言的編程基礎(chǔ),只要注意C51與標(biāo)準(zhǔn)C不同之處,并熟悉8051單片機(jī)的硬件結(jié)構(gòu),就能較快掌握C51編程。3.2C51語言程序設(shè)計基礎(chǔ)本節(jié)在標(biāo)準(zhǔn)C基礎(chǔ)上,了解掌握C51的數(shù)據(jù)類型和存儲類型、C51的基本運(yùn)算與流程控制語句、C51語言構(gòu)造數(shù)據(jù)類型、C51函數(shù)以及C51程序設(shè)計的其他一些問題,為C51的程序開發(fā)打下基礎(chǔ)。93.2.1C51語言中的數(shù)據(jù)類型與存儲類型1.?dāng)?shù)據(jù)類型數(shù)據(jù)是單片機(jī)操作的