資源描述:
《單片機C語言編程(C51編程基礎).ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章單片機C語言及程序設計本章制作:劉曉霞第4章單片機C語言及程序設計4.1C51概述4.2C51數(shù)據(jù)類型及存儲4.3C51變量的定義及數(shù)據(jù)存儲區(qū)域4.4C51位變量的定義4.5C51特殊功能寄存器的定義4.6C51指令的定義4.7C51的輸入/輸出4.8C51函數(shù)的定義4.9C51與匯編語言混合編程4.10C51集成開發(fā)軟件KeilC目錄第4章單片機C語言及程序設計本章主要討論C51變量的定義和函數(shù)的定義,以及KeilC軟件的使用等。本章內(nèi)容的安排,認為學生已經(jīng)學習過C語言,具有C語言的基本知識,因此,本章內(nèi)容完全是結(jié)合單片機來講解,也就是補充C語言在單片機方面的概念
2、、數(shù)據(jù)定義和函數(shù)定義等。通過本章學習,使學生能夠比較順利地編寫C51程序。4.1C51概述主要內(nèi)容4.1.1C語言編程的優(yōu)勢4.1.2C51與ANSIC的區(qū)別4.1.3C51擴展的關(guān)鍵字4.1C51概述學習單片機C語言的必要性隨著單片機性能的不斷提高,C語言編譯調(diào)試工具的不斷完善,以及現(xiàn)在對單片機產(chǎn)品輔助功能的要求、對開發(fā)周期不斷縮短的要求,使得越來越多的單片機編程人員轉(zhuǎn)向使用C語言,因此有必要在單片機課程中講授“單片機C語言”?!癈51”概念:為了與ANSIC區(qū)別,把“單片機C語言”稱為“C51”,也稱為“KeilC”。4.1.1C語言編程的優(yōu)勢在編程方面,使用C51較
3、匯編語言有諸多優(yōu)勢:1)編程容易2)容易實現(xiàn)復雜的數(shù)值計算3)容易閱讀與交流4)容易調(diào)試與維護程序5)容易實現(xiàn)模塊化開發(fā)6)程序可移植性好4.1.2C語言與ANSI的區(qū)別用匯編語言編寫單片機程序時,必須要考慮其存儲器的結(jié)構(gòu),尤其要考慮其片內(nèi)數(shù)據(jù)存儲器、特殊功能寄存器是否正確合理的使用,以及按照實際地址端口數(shù)據(jù)的處理。用C51編寫程序,雖然不像匯編語言那樣需要具體地組織、分配存儲器資源,但是C51對數(shù)據(jù)類型和變量的定義,必須要與單片機的存儲結(jié)構(gòu)相關(guān)聯(lián),否則編譯器不能正確地映射定位。4.1.2C語言與ANSI的區(qū)別用C51編寫單片機程序,與用ANSIC編寫程序的不同之處是,需
4、要根據(jù)單片機存儲器結(jié)構(gòu)及內(nèi)部資源,定義相應的數(shù)據(jù)類型和變量。其它的語法規(guī)定、程序結(jié)構(gòu)及程序設計方法,都與ANSIC相同。所以本章主要介紹C51各種變量的定義、指針定義、函數(shù)定義和混合編程。4.1.3C51擴展的關(guān)鍵字由于單片機在結(jié)構(gòu)及編程上的特殊要求,C51有自己的特殊關(guān)鍵字,稱之為C51擴展的關(guān)鍵字,下面給出常用的C51擴展的關(guān)鍵字。_at_bdatabitcodedataidatainterruptpdatareentrantsbitsfrsfr16usingvolatilexdata這些關(guān)鍵字在后面會陸續(xù)接觸到,此處先不給出它們的含義。4.2C51數(shù)據(jù)類型及存儲主要
5、內(nèi)容4.2.1C51的數(shù)據(jù)類型4.2.2C51數(shù)據(jù)的存儲4.2.1C51的數(shù)據(jù)類型表4-1C51數(shù)據(jù)類型、長度和數(shù)值范圍數(shù)據(jù)類型表示方法長度數(shù)值范圍無符號字符型unsignedchar1字節(jié)0~255有符號字符型signedchar1字節(jié)-128~127無符號整型unsignedint2字節(jié)0~65535有符號整型signedint2字節(jié)-32768~32767無符號長整型unsignedlong4字節(jié)0~4294967295有符號長整型signedlong4字節(jié)-2147483648~2147483647浮點型float4字節(jié)±1.1755E-38~±3.40E+38特
6、殊功能寄存器型sfrsfr161字節(jié)2字節(jié)0~2550~65535位類型bit、sbit1位0或14.2.1C51的數(shù)據(jù)類型數(shù)據(jù)類型轉(zhuǎn)換1)自動轉(zhuǎn)換轉(zhuǎn)換規(guī)則是向高精度數(shù)據(jù)類型轉(zhuǎn)換、向有符號數(shù)據(jù)類型轉(zhuǎn)換。如字符型變量與整型變量相加時,則位變量先轉(zhuǎn)換字符型或整型數(shù)據(jù),然后相加。2)強制轉(zhuǎn)換像ANSIC一樣,通過強制類型轉(zhuǎn)換的方式進行轉(zhuǎn)換。如:unsignedintb;floatc;b=(int)c;4.2.2C51數(shù)據(jù)的存儲MCS-51單片機只有bit和unsignedchar兩種數(shù)據(jù)類型支持機器指令,而其它類型的數(shù)據(jù)都需要轉(zhuǎn)換成bit或unsignedchar型進行存儲。為
7、了減少單片機的存儲空間和提高運行速度,要盡可能地使用unsignedchar型數(shù)據(jù)。一、位變量的存儲bit和sbit型位變量,直接存于RAM的位尋址空間,包括低128位和特殊功能寄存器位。4.2.2C51數(shù)據(jù)的存儲二、字符變量的存儲字符變量(char):無論是unsignedchar數(shù)據(jù)還是signedchar數(shù)據(jù),均為1個字節(jié),能夠被直接存儲在RAM中,可以存儲在0~0x7f區(qū)域,也可以存儲在0x80~0xff區(qū)域,與變量的定義有關(guān)。unsignedchar數(shù):可直接被MSC-51接受signedchar數(shù)據(jù):用補碼表示。需