單片機(jī)語(yǔ)言程序設(shè)計(jì)概述_第1頁(yè)
單片機(jī)語(yǔ)言程序設(shè)計(jì)概述_第2頁(yè)
單片機(jī)語(yǔ)言程序設(shè)計(jì)概述_第3頁(yè)
單片機(jī)語(yǔ)言程序設(shè)計(jì)概述_第4頁(yè)
單片機(jī)語(yǔ)言程序設(shè)計(jì)概述_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

教學(xué)基本要求:

(1)、熟悉支持80C51單片機(jī)的幾種編程語(yǔ)言及各自特點(diǎn);(2)、熟悉Cx51程序結(jié)構(gòu)及開發(fā)過(guò)程

;(3)、熟悉Cx51的數(shù)據(jù)類型及存儲(chǔ)模式;(4)、掌握80C51特殊功能寄存器(SFR)的Cx51定義;(5)、掌握80C51并行接口及Cx51定義;(6)、掌握80C51位變量及Cx51定義;(7)、掌握Cx51運(yùn)算符、表達(dá)式及其規(guī)則;(8)、熟悉Cx51流程控制語(yǔ)句;(9)、掌握Cx51構(gòu)造數(shù)據(jù)類型;(10)、掌握Cx51函數(shù)。第一部分單片機(jī)C語(yǔ)言程序設(shè)計(jì)概述教學(xué)重點(diǎn):(1)、Cx51的數(shù)據(jù)類型及存儲(chǔ)模式;(2)、80C51特殊功能寄存器(SFR)的Cx51定義;(3)、80C51并行接口及Cx51定義;教學(xué)難點(diǎn):(1)、Cx51構(gòu)造數(shù)據(jù)類型;(2)、Cx51函數(shù);一、80C51單片機(jī)的編程語(yǔ)言四種語(yǔ)言支持80C51,即:匯編,PL/M,C和BASIC。1、BASIC:非常容易學(xué)。根據(jù)解釋的行就可以找到錯(cuò)誤,而不是當(dāng)程序執(zhí)行完才能顯示,由于逐行解釋所以很慢,每一行必須在執(zhí)行時(shí)轉(zhuǎn)換成機(jī)器代碼,需要花費(fèi)很多時(shí)間,不能做到實(shí)時(shí)性。只適用于要求編程簡(jiǎn)單而對(duì)編程效率或運(yùn)行速度要求不高的場(chǎng)合。2、PL/M:是Intel從8080微處理器開始為系列產(chǎn)品開發(fā)的編程語(yǔ)言,是一種結(jié)構(gòu)化語(yǔ)言,但它使用關(guān)鍵字去定義結(jié)構(gòu)。它能產(chǎn)生緊湊代碼??偟膩?lái)說(shuō)是“高級(jí)匯編語(yǔ)言”,可詳細(xì)控制代碼的生成。但對(duì)于8051系列,它不支持復(fù)雜的算術(shù)運(yùn)算,浮點(diǎn)變量,也沒(méi)有豐富的庫(kù)函數(shù)支持。3、匯編語(yǔ)言:用匯編程序設(shè)計(jì)MCS–51系列單片機(jī)應(yīng)用程序時(shí),必須要考慮其存儲(chǔ)器結(jié)構(gòu),尤其必須考慮其片內(nèi)數(shù)據(jù)存儲(chǔ)器與特殊功能寄存器正確、合理的使用以及按實(shí)際地址處理端口數(shù)據(jù)。當(dāng)設(shè)計(jì)一個(gè)小的嵌入式系統(tǒng)時(shí),一般我們都用匯編語(yǔ)言。在很多工程中這是一個(gè)很好的方法,因?yàn)榇a一般都不超過(guò)8K而且都比較簡(jiǎn)單。如果硬件工程師要同時(shí)設(shè)計(jì)軟件和硬件經(jīng)常會(huì)采用匯編語(yǔ)言來(lái)做程序。使用匯編的麻煩在于它的可讀性和可維護(hù)性,特別當(dāng)程序沒(méi)有很好的標(biāo)注的時(shí)候,代碼的可重用性也比較低。4、C語(yǔ)言:C語(yǔ)言是一種源于編寫UNIX操作系統(tǒng)的語(yǔ)言,是一種結(jié)構(gòu)化語(yǔ)言,可產(chǎn)生緊湊代碼。優(yōu)點(diǎn)如下:1)對(duì)單片機(jī)指令系統(tǒng)不要求了解,僅要求對(duì)8051存儲(chǔ)器結(jié)構(gòu)有初步了解;2)寄存器的分配,不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;3)程序有規(guī)范的結(jié)構(gòu),分為不同的函數(shù),使程序結(jié)構(gòu)化;4)更符合人們的思考習(xí)慣;改善了程序的可讀性;5)編程及程序調(diào)試時(shí)間顯著縮短,從而提高效率;6)提供的庫(kù)包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)數(shù)據(jù)處理能力;7)很好的結(jié)構(gòu)性和模塊化更容易閱讀和維護(hù),而且由于有更好的可移植性很多處理器支持C編譯器。用C語(yǔ)言編寫MCS–51單片機(jī)的應(yīng)用程序,雖然不像用匯編語(yǔ)言那樣具體地組織、分配存儲(chǔ)器資源和處理端口數(shù)據(jù),但在C語(yǔ)言編程中,對(duì)數(shù)據(jù)類型與變量的定義,必須要與單片機(jī)的存儲(chǔ)結(jié)構(gòu)相關(guān)聯(lián),否則編譯器不能正確地映射定位。用C語(yǔ)言編寫單片機(jī)應(yīng)用程序與編寫標(biāo)準(zhǔn)的C語(yǔ)言程序的不同之處就在于根據(jù)單片機(jī)存儲(chǔ)結(jié)構(gòu)及內(nèi)部資源定義相應(yīng)的C語(yǔ)言中的數(shù)據(jù)類型和變量,其它的語(yǔ)法規(guī)定、程序結(jié)構(gòu)及程序設(shè)計(jì)方法都與標(biāo)準(zhǔn)的C語(yǔ)言程序設(shè)計(jì)相同。二、Cx51程序結(jié)構(gòu)及開發(fā)過(guò)程Cx51源程序是一個(gè)ASCII文件,可以用任何標(biāo)準(zhǔn)的ASCII文件編輯器來(lái)編寫,如:寫字板,記事本等。Cx51程序機(jī)構(gòu)與一般C語(yǔ)言沒(méi)有什么差別,程序的書寫格式自由度高,靈活性強(qiáng),有較大的任意性。要點(diǎn)如下:1)一般情況下,每個(gè)語(yǔ)句占用一行。2)不同結(jié)構(gòu)層次的語(yǔ)句,從不同的起始位置開始,即在同一結(jié)構(gòu)層次中的語(yǔ)句,縮進(jìn)同樣的字?jǐn)?shù)。3)表示結(jié)構(gòu)層次的大括號(hào)通常寫在該結(jié)構(gòu)語(yǔ)句第一字母的下方,與機(jī)構(gòu)化語(yǔ)句對(duì)齊,并占用一行。Cx51源程序大體上是一個(gè)函數(shù)定義的集合,集合中僅有一個(gè)名為main的主函數(shù)。主函數(shù)是程序的入口,主函數(shù)中所有語(yǔ)句執(zhí)行完畢,則程序執(zhí)行完成。函數(shù)定義由類型,函數(shù)名,參數(shù)表和函數(shù)體組成。格式如下:類型 函數(shù)名(參數(shù)表)參數(shù)說(shuō)明;{數(shù)據(jù)說(shuō)明部分;執(zhí)行語(yǔ)句部分;}Cx51程序結(jié)構(gòu)說(shuō)明:1)C語(yǔ)言是由函數(shù)構(gòu)成的。一個(gè)C源程序至少包含一個(gè)函數(shù),也可以包含一個(gè)vmain函數(shù)和若干其他函數(shù)。函數(shù)是C程序的基本單位。2)函數(shù)分為2大類:一類是庫(kù)函數(shù),一類是用戶自定義函數(shù)。庫(kù)函數(shù)是Cx51在庫(kù)文件中已定義的函數(shù),其函數(shù)說(shuō)明在其頭文件中。用戶函數(shù)是用戶自己定義,自己調(diào)用的一類函數(shù)。3)函數(shù)由2部分組成:函數(shù)說(shuō)明部分:它包括函數(shù)名,函數(shù)類型,函數(shù)屬性,函數(shù)參數(shù)名和形式參數(shù)類型。一個(gè)函數(shù)名后面必須跟一個(gè)(),函數(shù)參數(shù)可以沒(méi)有。函數(shù)體:函數(shù)說(shuō)明部分下面的大括號(hào)內(nèi)的內(nèi)容。函數(shù)體一般包括:變量定義和執(zhí)行部分(由若干語(yǔ)句組成).4)一個(gè)Cx51程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位置如何。5)每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。6)C語(yǔ)言本身沒(méi)有輸入/輸出語(yǔ)句,輸入和輸出操作是有庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成的。7)可以用/*~~~*/對(duì)C程序中的任何部分作注釋。

系統(tǒng)庫(kù)CX51源程序CX51編譯器EPROM編程器鏈接列表文件浮動(dòng)目標(biāo)碼模塊絕對(duì)定位目標(biāo)碼文件用戶庫(kù)硬件仿真器映像文件三、Cx51數(shù)據(jù)與運(yùn)算1、Cx51數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型位型(bit)字符型(char)整型(int)長(zhǎng)整型(long)浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)數(shù)組類型(array)結(jié)構(gòu)體類型(struct)共用體(union)枚舉(enum)Cx51數(shù)據(jù)類型分類在編程時(shí),為了書寫方便,經(jīng)常用簡(jiǎn)化的縮寫形式來(lái)定義數(shù)據(jù)類型。其方法是在源程序開頭使用#define語(yǔ)句自定義簡(jiǎn)化的類型標(biāo)識(shí)符。例如:#defineucharunsignedchar#defineuintunsignedint這樣,在編程中,就可以用uchar代替unsignedchar,用uint代替unsignedint來(lái)定義變量。2、Cx51數(shù)據(jù)的存儲(chǔ)類型與8051存儲(chǔ)結(jié)構(gòu)KEILCx51完全支持8051單片機(jī)的硬件結(jié)構(gòu),可以完全訪問(wèn)8051硬件系統(tǒng)的所有部分。該編譯器通過(guò)將變量、常量定義成不同的存儲(chǔ)類型的方法,將他們定義在不同的存儲(chǔ)區(qū)中。存儲(chǔ)類型與存儲(chǔ)空間的對(duì)應(yīng)關(guān)系data直接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問(wèn)速度快(128字節(jié))bdata可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),允許位與字節(jié)混合訪問(wèn)(16字節(jié))idata

間接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),可訪問(wèn)片內(nèi)全部RAM地址空間(256字節(jié))pdata

分頁(yè)尋址片外數(shù)據(jù)存儲(chǔ)區(qū)(256字節(jié))由MOV@Ri訪問(wèn)(i=0,1)xdata片外數(shù)據(jù)存儲(chǔ)區(qū)(64KB)由MOVX@DPTR訪問(wèn)code程序存儲(chǔ)器64KB空間,由MOVC@DPTR訪問(wèn)帶存儲(chǔ)類型的變量的定義的一般格式為數(shù)據(jù)類型存儲(chǔ)類型變量名變量存儲(chǔ)類型定義舉例:Chardatavar1;/*var1定位在內(nèi)部RAM*/Bitbdataflags;/*flags定位在內(nèi)部RAM的位尋址區(qū)*/Floatidatax,y,z;/*變量定位在內(nèi)部RAM,但只能采用間址尋址方式*/Unsignedintpdatai;/*無(wú)符號(hào)整型變量i定位在外部RAM,并用MOVX@Ri訪問(wèn)*/Unsignedcharxdatav[10][4][4];/*無(wú)符號(hào)三維數(shù)組變量,定位在外部RAM,并占據(jù)10×4×4=160字節(jié)存儲(chǔ)空間*/如果定義時(shí)略去存儲(chǔ)類型標(biāo)志符,編譯器會(huì)自動(dòng)選擇默認(rèn)的類型,由SMALL,COMPACT和LARGE存儲(chǔ)模式指令限制。存儲(chǔ)模式說(shuō)明SMALL默認(rèn)的存儲(chǔ)類型是data,參數(shù)及局部變量放入可直接尋址片內(nèi)RAM的用戶區(qū)中(最大128字節(jié))。COMPACT默認(rèn)的存儲(chǔ)類型是pdata,參數(shù)及局部變量放入分頁(yè)的外部數(shù)據(jù)存儲(chǔ)區(qū),通過(guò)@R0或@R1間接訪問(wèn),??臻g位于片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中LARGE默認(rèn)的存儲(chǔ)類型是xdata,參數(shù)及局部變量直接放入片外數(shù)據(jù)存儲(chǔ)區(qū),使用數(shù)據(jù)指針DPTR來(lái)進(jìn)行尋址。3、80C51特殊功能寄存器(SFR)的Cx51定義80C51單片機(jī)中,地址范圍為80H~FFH的單元為SFR寄存器。為了能直接訪問(wèn)這些SFR,KEILCx51提供了一種自主形式的定義方法,這種定義方法與標(biāo)準(zhǔn)C語(yǔ)言不兼容,只適用于對(duì)8051系列單片機(jī)進(jìn)行C語(yǔ)言編程。特殊功能寄存器C51定義的一般語(yǔ)法格式如下: sfrsfr_name=intconstant;“sfr”是定義語(yǔ)句的關(guān)鍵字,其后必須跟一個(gè)80C51單片機(jī)真實(shí)存在的特殊功能寄存器名,“=”后面必須是一個(gè)整型常數(shù),不允許帶有運(yùn)算符的表達(dá)式,是特殊功能寄存“sfr_name”的字節(jié)地址,這個(gè)常數(shù)值的范圍必須在SFR地址范圍內(nèi),位于0x80~0xFF。例如:sfrSCON=0x98;/*串口控制寄存器地址98H*/sfrTMOD=0x89;/*定時(shí)/計(jì)數(shù)器方式控制寄存器地址89H*/80C51系列單片機(jī)的特殊功能寄存器的數(shù)量與類型不盡相同,因此建議將所有特殊的“sfr”定義放入一個(gè)頭文件中,該文件應(yīng)包括MCS-51單片機(jī)系列機(jī)型中的SFR定義。C51編譯器的“reg51.h”頭文件就是這樣一個(gè)文件。對(duì)于位尋址的SFR中的位,C51的擴(kuò)充功能支持特殊位的定義,像SFR一樣不與標(biāo)準(zhǔn)C兼容,使用"sbit"來(lái)定義位尋址單元。第一種格式:sbitbit-name=sfr-name^intconstant;“sbit”是定義語(yǔ)句的關(guān)鍵字,后跟一個(gè)尋址位符號(hào)名(該位符號(hào)名必須是80C51單片機(jī)中規(guī)定的位名稱),“=”后的“sfr-name”必須是已定義過(guò)的SFR的名字,“^”后的整常數(shù)是尋址位在特殊功能寄存器“sfr-name”中的位號(hào),必須是0~7范圍中的數(shù)。例如:sfrPSW=0xD0;/*定義PSW寄存器地址為D0H*/sbitOV=PSW^2;/*定義OV位為PSW.2,地址為D2H*/sbitCY=PSW^7;/*定義CY位為PSW.7,地址為D7H*/第二種格式:sbitbit-name=intconstant^intconstant;“=”后的intconstant為尋址地址位所在的特殊功能寄存器的字節(jié)地址,“^”符號(hào)后的intconstant為尋址位在特殊功能寄存器中的位號(hào)。例如:sbitOV=0XD0^2;/*定義OV位地址是D0H字節(jié)中的第2位*/sbitCY=0XD0^7;/*定義CY位地址是D0H字節(jié)中的第7位*/第三種格式:sbitbit-name=intconstant;“=”后的intconstant為尋址位的絕對(duì)位地址。例如:sbitOV=0XD2;/*定義OV位地址為D2H*/sbitCY=0XD7;/*定義CY位地址為D7H*/特殊功能位代表了一個(gè)獨(dú)立的定義類,不能與其它位定義和位域互換。4、80C51并行接口及Cx51定義80C51系列單片機(jī)并行I/O接口除了芯片上的4個(gè)I/O口(P0~P3)外,還可以在片外擴(kuò)展I/O口。80C51單片機(jī)I/O口與數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址,即把一個(gè)I/O口當(dāng)作數(shù)據(jù)存儲(chǔ)器中的一個(gè)單元來(lái)看待。使用C51進(jìn)行編程時(shí),80C51片內(nèi)的I/O口與片外擴(kuò)展的I/O可以統(tǒng)一在一個(gè)頭文件中定義,也可以在程序中(一般在開始的位置)進(jìn)行定義,其定義方法如下:對(duì)于80C51片內(nèi)I/O口按特殊功能寄存器方法定義。例如:sfrP0=0x80;/*定義P0口,地址為80H*/sfrP1=0x90;/*定義P1口,地址為90H*/對(duì)于片外擴(kuò)展I/O口,則根據(jù)硬件譯碼地址,將其視作為片外數(shù)據(jù)存儲(chǔ)器的一個(gè)單元,使用#define語(yǔ)句進(jìn)行定義。例如:#include<absacc.h>#definePORTAXBYTE[0xFFC0]absacc.h是C51中絕對(duì)地址訪問(wèn)函數(shù)的頭文件,將PORTA定義為外部I/O口,地址為FFC0H,長(zhǎng)度為8位。一旦在頭文件或程序中對(duì)這些片外I/O口進(jìn)行定義后,在程序中就可以自由使用變量名與其實(shí)際地址的聯(lián)系,以便使程序員能用軟件模擬MCS-51的硬件操作。5、80C51位變量及Cx51定義使用C51編程時(shí),定義了位變量后,就可以用定義了的變量來(lái)表示80C51的位尋址單元。位變量的C51定義的一般語(yǔ)法格式如下:位類型標(biāo)識(shí)符(bit)位變量名;例如:bitdirection_bit;/*把direction_bit定義為位變量*/bitlook_pointer;/*把look_pointer定義為位變量*/四、Cx51運(yùn)算符、表達(dá)式及其規(guī)則1、算術(shù)運(yùn)算符及其表達(dá)式1)基本的5種算術(shù)運(yùn)算符:+加法運(yùn)算符或正值運(yùn)算符-減法運(yùn)算符或負(fù)值運(yùn)算符*乘法運(yùn)算符/除法運(yùn)算符%模運(yùn)算符或稱求余運(yùn)算符2)算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性3)如何在各類型的數(shù)據(jù)之間進(jìn)行混合運(yùn)算2、關(guān)系運(yùn)算符及其表達(dá)式1)六種關(guān)系運(yùn)算符<,>,<=,>=,==,!=2)優(yōu)先級(jí)<,>,<=,>=優(yōu)先級(jí)相同(高)==,!=優(yōu)先級(jí)相同(低)3)結(jié)合性:左結(jié)合3、邏輯運(yùn)算符及其表達(dá)式1)三種邏輯運(yùn)算符&&||!2)優(yōu)先級(jí)!優(yōu)先級(jí)最高——算術(shù)運(yùn)算——關(guān)系運(yùn)算再次之——&&和||——賦值運(yùn)算優(yōu)先級(jí)最低3)結(jié)合性:從左向右4、位運(yùn)算及其表達(dá)式1)位運(yùn)算符&,|~ ^ << >>位運(yùn)算符只能是整型或字符型數(shù),不能為實(shí)型數(shù)據(jù)。5、自增減運(yùn)算符、復(fù)合運(yùn)算符極其表達(dá)式1)自增減運(yùn)算符:++i,--i在使用i之前,先使i值加(減)1;i++,i--在使用i之后,再使i值加(減)1。6、復(fù)合的賦值運(yùn)算符定義:在賦值運(yùn)算符之前加上其它運(yùn)算符。+=、-=、*=、/=、%=、《=、》=、&=、^=、|=,3種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。1、順序結(jié)構(gòu)

程序中的語(yǔ)句按先后順序逐條執(zhí)行。2、選擇結(jié)構(gòu)在執(zhí)行程序中的選擇結(jié)構(gòu)語(yǔ)句時(shí),該語(yǔ)句的執(zhí)行將根據(jù)不同的條件執(zhí)行不同分支的語(yǔ)句。常用語(yǔ)句:if,elseif語(yǔ)句五、Cx51流程控制語(yǔ)句a>bmax=amax=b輸出maxnoyesa>byesnomax=amax=b3、循環(huán)結(jié)構(gòu)

程序中的語(yǔ)句按先后順序逐條執(zhí)行。1)當(dāng)(while)型循環(huán)該循環(huán)的特點(diǎn)是:當(dāng)條件滿足時(shí),就執(zhí)行循環(huán)體,否則就退出循環(huán)結(jié)構(gòu)。2)直到(dowhile)型循環(huán)該循環(huán)的特點(diǎn)是:先執(zhí)行循環(huán)體,再判斷循環(huán)條件,條件不滿足時(shí),就退出循環(huán)結(jié)構(gòu)。選擇語(yǔ)句:1、if語(yǔ)句if語(yǔ)句是根據(jù)所給定的條件決定執(zhí)行的操作,是“二選一”的分支結(jié)構(gòu)。If語(yǔ)句的一般格式為:if(表達(dá)式){語(yǔ)句序列1;}else{語(yǔ)句序列2;}if語(yǔ)句的嵌套單條件選擇if語(yǔ)句完整的嵌套格式為:if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句序列1;else語(yǔ)句序列2;elseif(表達(dá)式3)語(yǔ)句序列3;else語(yǔ)句序列4;2、開關(guān)分支switch語(yǔ)句C語(yǔ)言提供了switch多路選擇語(yǔ)句。格式如下:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句組1;case常量表達(dá)式2:語(yǔ)句組2;…case常量表達(dá)式n:語(yǔ)句組n;default:語(yǔ)句組n+1;}循環(huán)語(yǔ)句1、while語(yǔ)句while語(yǔ)句用來(lái)實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。1)while語(yǔ)句的一般格式while語(yǔ)句是一個(gè)循環(huán)控制語(yǔ)句,用來(lái)控制程序段的重復(fù)執(zhí)行。其一般格式為:while(表達(dá)式)循環(huán)體;格式中的循環(huán)體,可以是單個(gè)語(yǔ)句、空語(yǔ)句,也可以是復(fù)合語(yǔ)句。說(shuō)明:如果循環(huán)體包含一個(gè)以上的語(yǔ)句,就構(gòu)成塊語(yǔ)句,應(yīng)該用花括號(hào){}括起來(lái)。2、do…while語(yǔ)句C語(yǔ)言中,用do…while語(yǔ)句構(gòu)成直到型循環(huán)結(jié)構(gòu)。do…while語(yǔ)句的一般格式do…while語(yǔ)句也是一個(gè)循環(huán)控制語(yǔ)句。其特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷條件是否成立。其一般格式為:do循環(huán)體while(表達(dá)式);說(shuō)明:循環(huán)體至少執(zhí)行一次。當(dāng)循環(huán)體有多個(gè)語(yǔ)句時(shí)必須加花括號(hào){}。3、for語(yǔ)句for語(yǔ)句可以用于循環(huán)次數(shù)已經(jīng)確定的情況,還可用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。for語(yǔ)句的一般格式for語(yǔ)句的一般格式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。循環(huán)之中還可以套循環(huán),稱為多層循環(huán)。三種循環(huán)(while循環(huán)、do…while循環(huán)和for循環(huán))可以互相嵌套。例如:while(){…for(){…}…}

break語(yǔ)句和continue語(yǔ)句1、break語(yǔ)句break語(yǔ)句可以用在循環(huán)語(yǔ)句和switch語(yǔ)句中。在循環(huán)語(yǔ)句中用來(lái)結(jié)束內(nèi)部循環(huán);在switch語(yǔ)句中用來(lái)跳出switch語(yǔ)句。2、continue語(yǔ)句continue語(yǔ)句的作用是結(jié)束本次循環(huán),忽略continue后面的語(yǔ)句,進(jìn)行下一次循環(huán)判定。六、Cx51構(gòu)造數(shù)據(jù)類型1、數(shù)組和數(shù)組單元的基本概念1)數(shù)組將一組排列有序的、個(gè)數(shù)有限的變量作為一個(gè)整體,用一個(gè)統(tǒng)一的名字來(lái)表示,則這些有序變量的全體稱為數(shù)組;或者說(shuō),數(shù)組是用一個(gè)名字代表順序排列的一組數(shù),順序號(hào)就是下標(biāo)變量的值。2)數(shù)組單元在同一數(shù)組中,構(gòu)成該數(shù)組的成員稱為數(shù)組單元(或數(shù)組元素、下標(biāo)變量)。C語(yǔ)言中,引用數(shù)組中的某一單元,要指出數(shù)組名和用括號(hào)括起來(lái)的數(shù)組單元在數(shù)組中的位置(順序號(hào))的下標(biāo)。例如:a[3]代表a數(shù)組中順序號(hào)為3的那個(gè)單元。3)數(shù)組的維數(shù)下標(biāo)變量中下標(biāo)的個(gè)數(shù)稱為數(shù)組的維數(shù)。具有一個(gè)下標(biāo)的下標(biāo)變量,構(gòu)成一維數(shù)組。具有兩個(gè)下標(biāo)的下標(biāo)變量,構(gòu)成二維數(shù)組。依次類推,三個(gè)下標(biāo)的下標(biāo)變量,構(gòu)成三維數(shù)組。有多少個(gè)下標(biāo)的下標(biāo)變量,就構(gòu)成多少維的數(shù)組。通常把二維以上的數(shù)組稱為多維數(shù)組。4)一維數(shù)組的定義、引用、初始化一維數(shù)組的定義一維數(shù)組用一個(gè)統(tǒng)一的標(biāo)識(shí)符,即數(shù)組名來(lái)標(biāo)識(shí)一組變量(也稱元素),用下標(biāo)來(lái)指示數(shù)組中元素的序號(hào)。當(dāng)數(shù)組中每個(gè)元素只帶有一個(gè)下標(biāo)時(shí),此數(shù)組稱為一維數(shù)組。一維數(shù)組的引用使用數(shù)組必須先定義,后引用。引用時(shí)只能對(duì)數(shù)組元素引用,如a[0],a[i],a[i+1]等,而不能引用整個(gè)數(shù)組。在引用時(shí)應(yīng)注意以下幾點(diǎn):(1)由于數(shù)組元素本身等價(jià)于同一類型的一個(gè)變量,因此,對(duì)變量的任何操作都適用于數(shù)組元素。(2)在引用數(shù)組元素時(shí),下標(biāo)可以是整型常數(shù)或表達(dá)式,表達(dá)式內(nèi)允許變量存在。在定義數(shù)組時(shí)下標(biāo)不能使用變量。(3)引用數(shù)組元素時(shí)下標(biāo)最大值不能出界。一維數(shù)組的初始化利用賦值語(yǔ)句或輸入語(yǔ)句給數(shù)組元素賦值。C語(yǔ)言還允許在定義數(shù)組時(shí)對(duì)各數(shù)組元素指定初始值——稱為數(shù)組初始化。(1)數(shù)組初始化形式1例如:將括號(hào)內(nèi)整型數(shù)據(jù)0,1,2,3,4分別賦給整型數(shù)組元素a[0],a[1],a[2],a[3],a[4]??梢詫憺橄旅娴男问剑篿nta[5]={0,1,2,3,4};(2)數(shù)組初始化形式2例如:對(duì)a數(shù)組中所有元素賦初值0。可以寫作下面的形式:inta[10]={0};(3)通過(guò)賦初值定義數(shù)組大小例如:inta[]={1,2,3,4,5};等價(jià)于:inta[5]={1,2,3,4,5};5)字符數(shù)組字符數(shù)組是用來(lái)存放字符的數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符。字符數(shù)組的定義、引用、初始化對(duì)字符數(shù)組賦值或數(shù)組初始化時(shí),數(shù)據(jù)使用字符型數(shù)據(jù)或相應(yīng)的ASCII碼值。字符串與字符型數(shù)組

字符串(也稱字符串常量)是用雙引號(hào)括起來(lái)的若干有效字符序列。在C語(yǔ)言中,字符串可以包含字母、數(shù)字、轉(zhuǎn)義字符等。2、指針的基本概念。指針就是變量的地址。與此對(duì)應(yīng),在C語(yǔ)言中使用一類專門的變量——指針變量來(lái)存放變量的地址。也就是說(shuō),指針變量是存放地址數(shù)據(jù)的變量。

地指針變量變量地址(指針)址指存向入變量變量值指針變量變量的指針就是變量的地址。存放變量地址的變量是指針變量,用來(lái)指向另一個(gè)變量。1)定義一個(gè)指針變量如何定義一個(gè)指針變量形式:基類型*指針變量名例如:float*pointer_3;char*pointer_4;2)指針變量的引用指針變量中只能存放地址(指針)。3)指針變量作為函數(shù)參數(shù)函數(shù)的參數(shù)可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針類型的。它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。3、結(jié)構(gòu)體在程序設(shè)計(jì)中,把一些關(guān)系密切而數(shù)據(jù)類型不同的數(shù)據(jù)組織在一起,并為其命名一個(gè)名字,這類數(shù)據(jù)稱為結(jié)構(gòu)體。結(jié)構(gòu)體,是將若干個(gè)類型相同或不同的數(shù)據(jù)組合成一個(gè)有機(jī)的集合。1)結(jié)構(gòu)體類型定義使用結(jié)構(gòu)體變量前,要先定義該結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。結(jié)構(gòu)體類型定義的一般格式為:

struct結(jié)構(gòu)體名{類型標(biāo)識(shí)符成員名列表;類型標(biāo)識(shí)符成員名列表;…類型標(biāo)識(shí)符成員名列表;};2)結(jié)構(gòu)體變量的定義、引用和初始化《1》結(jié)構(gòu)體變量定義定義結(jié)構(gòu)體變量有三種方法。(1)在定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量。(2)先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。(3)直接定義結(jié)構(gòu)體變量?!?》結(jié)構(gòu)體變量的引用對(duì)結(jié)構(gòu)體變量進(jìn)行操作時(shí),除了可以對(duì)相同類型的結(jié)構(gòu)體變量進(jìn)行整體賦值外,不可以對(duì)一個(gè)結(jié)構(gòu)體變量整體賦值?!?》結(jié)構(gòu)體變量的初始化與數(shù)組的初始化類似,結(jié)構(gòu)體變量只能對(duì)外部和靜態(tài)結(jié)構(gòu)體變量初始化。初始化數(shù)據(jù)之間要用“,”隔開,不進(jìn)行初始化的成員項(xiàng)要用“,”跳過(guò)。七、Cx51函數(shù)所有的函數(shù)在定義時(shí)都是相互獨(dú)立的,一個(gè)函數(shù)中不能再定義其他函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用。函數(shù)調(diào)用的一般規(guī)則是:主函數(shù)可以調(diào)用其它普通函數(shù)。普通函數(shù)之間也可以互相調(diào)用,但普通函數(shù)不能調(diào)用主函數(shù)。一個(gè)c程序的執(zhí)行從main()函數(shù)開始,調(diào)用其它函數(shù)后返回到主函數(shù)main()中,最后在主函數(shù)Main()中結(jié)束整個(gè)c程序的運(yùn)行。

1、函數(shù)的分類從用戶的使用角度分為:庫(kù)函數(shù)和用戶自定義函數(shù).1)標(biāo)準(zhǔn)庫(kù)函數(shù):C語(yǔ)言提供了豐富的標(biāo)準(zhǔn)函數(shù),即庫(kù)函數(shù)。(1)數(shù)學(xué)函數(shù)調(diào)用數(shù)學(xué)庫(kù)函數(shù)時(shí),要求程序在調(diào)用數(shù)學(xué)庫(kù)函數(shù)前應(yīng)包含下面的頭文件:#include"math.h"(2)字符函數(shù)和字符串函數(shù)調(diào)用字符函數(shù)時(shí),要求程序在調(diào)用字符函數(shù)前應(yīng)包含下面的頭文件:#include"ctype.h"調(diào)用字符串函數(shù)時(shí),要求在源文件中應(yīng)包含下面的頭文件:#include"string.h"(3)輸入輸出函數(shù)調(diào)用輸入輸出函數(shù)時(shí),要求在源文件中應(yīng)包含下面的頭文件#include"stdio.h"(4)動(dòng)態(tài)分配函數(shù)和隨機(jī)函數(shù)調(diào)用動(dòng)態(tài)分配函數(shù)和隨機(jī)函數(shù)時(shí),要求在源文件中應(yīng)包含下面的頭文件:#include"stdl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論