單片機(jī)原理及接口技術(shù) 課件 第三章 51單片機(jī)C語言基礎(chǔ)知識(shí)_第1頁
單片機(jī)原理及接口技術(shù) 課件 第三章 51單片機(jī)C語言基礎(chǔ)知識(shí)_第2頁
單片機(jī)原理及接口技術(shù) 課件 第三章 51單片機(jī)C語言基礎(chǔ)知識(shí)_第3頁
單片機(jī)原理及接口技術(shù) 課件 第三章 51單片機(jī)C語言基礎(chǔ)知識(shí)_第4頁
單片機(jī)原理及接口技術(shù) 課件 第三章 51單片機(jī)C語言基礎(chǔ)知識(shí)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單原及接片理口技術(shù)機(jī)12第三章

51單片機(jī)C語言基礎(chǔ)知識(shí)01C語言變量與常量02定時(shí)器/計(jì)數(shù)器03中斷、定時(shí)器/計(jì)數(shù)器應(yīng)用編程04習(xí)題PrincipleandinterfacetechnologyofMicrocomputer常量常量是指固定值,其數(shù)值在程序運(yùn)行過程中不改變,分為數(shù)值型常量(包括整型常量和實(shí)型常量)、字符型常量、符號(hào)常量三類。1、整型常量整型常量是指直接使用的整型常數(shù),如0、128、-128等,有十進(jìn)制、八進(jìn)制、十六進(jìn)制三種類型的整數(shù)。2、實(shí)型常量實(shí)型常量是浮點(diǎn)型的常量,由整數(shù)和小數(shù)部分構(gòu)成,有兩種表示方式。3、字符型常量字符型常量有兩種,一種是字符常量,一種是字符串常量。1.1變量變量是在程序運(yùn)行過程中其值可以變化的量,可以存儲(chǔ)任意數(shù)據(jù)類型的值。在程序中一般用含有一定意義的方式來表示變量名。變量名是由字母開始的字母、數(shù)字、下劃線組成,且區(qū)分大小寫。C語言中的變量類型有整型變量、實(shí)型變量和字符型變量。1、整型變量整型變量是存儲(chǔ)整型數(shù)值的變量,分為基本整型(int),占4個(gè)字節(jié);短整型(shortint),占2個(gè)字節(jié);長(zhǎng)整型(longint),占4個(gè)字節(jié)。2、實(shí)型變量實(shí)型變量是存儲(chǔ)實(shí)型數(shù)值的變量,實(shí)型數(shù)值由整數(shù)和小數(shù)兩部分組成。在C語言中又可分為單精度和雙精度兩種類型。3、字符型變量字符型變量是用來存儲(chǔ)字符常量的變量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值存儲(chǔ)到內(nèi)存單元中。字符型常量的關(guān)鍵字是char,占1個(gè)字節(jié)。1.2運(yùn)算符與表達(dá)式02運(yùn)算符2.1運(yùn)算符用于數(shù)據(jù)和變量的操作,包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、遞增遞減運(yùn)算符、條件運(yùn)算符、位運(yùn)算符以及特殊運(yùn)算符。表達(dá)式2.2C語言的表達(dá)式由操作符和操作數(shù)組成,通過運(yùn)算返回結(jié)果值。運(yùn)算順序是根據(jù)運(yùn)算符的優(yōu)先級(jí)別,較高優(yōu)先級(jí)的運(yùn)算符先計(jì)算,相同優(yōu)先級(jí)的運(yùn)算符根據(jù)級(jí)別按“從左到右”或“從右到左”的順序計(jì)算。C語言中運(yùn)算符的優(yōu)先級(jí)別從高到低排列情況如下:括號(hào)()、數(shù)組元素引用[]、成員運(yùn)算符->;一元加+、一元減-、遞增++、遞減--、邏輯非!、指針引用*、地址符&、長(zhǎng)度運(yùn)算符sizeof、類型轉(zhuǎn)換(type);乘法×、除法/、取模%;加法+、減法-;小于<、小于等于<=、大于>、大于等于>=;等于==、不等于!=;邏輯與&&、邏輯或||;條件運(yùn)算符?:;賦值運(yùn)算符=;逗號(hào)運(yùn)算符,等。程序結(jié)構(gòu)03順序結(jié)構(gòu)3.1順序結(jié)構(gòu)是指程序中的語句是按照從上到下的順序逐行排列,程序的執(zhí)行是按語句的排列順序進(jìn)行,是最簡(jiǎn)單的程序設(shè)計(jì)。完成順序結(jié)構(gòu)程序設(shè)計(jì)的語句包括:賦值語句、復(fù)合語句、函數(shù)調(diào)用語句等。選擇結(jié)構(gòu)3.2選擇結(jié)構(gòu)的程序設(shè)計(jì)中使用了用于條件判斷的語句,增加程序功能,增強(qiáng)了程序的邏輯性和靈活性。實(shí)現(xiàn)選擇結(jié)構(gòu)的有if語句、if…else語句、switch語句、條件運(yùn)算符語句和goto語句等。switch語句3.3若選項(xiàng)很多的情況,多次嵌套使用if…else語句的層數(shù)就很多,程序比較冗余,代碼可讀性不好,此類情況可采用switch多路判斷語句輕松實(shí)現(xiàn)。循環(huán)結(jié)構(gòu)3.4程序除了在運(yùn)行時(shí)根據(jù)判斷、檢驗(yàn)條件做出相應(yīng)的選擇,還可以反復(fù)執(zhí)行某一段指令代碼,直到滿足某個(gè)條件為止。這種重復(fù)的執(zhí)行過程即成為循環(huán)。C語言的循環(huán)語句有while語句、do…while語句、for語句三種。一個(gè)完整的循環(huán)過程包括這樣幾個(gè)部分,一是需要設(shè)置并初始化條件變量,二是具體運(yùn)行的循環(huán)體中語句塊,三是用指定的值測(cè)試條件變量,以判斷是否再次運(yùn)行循環(huán)體,四是設(shè)置變量的改變值。數(shù)組04數(shù)組是C語言的一種常用構(gòu)造類數(shù)據(jù)類型,是指具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合,數(shù)組中的一個(gè)數(shù)據(jù)項(xiàng)稱為一個(gè)數(shù)組元素,每一個(gè)數(shù)組元素由數(shù)組名及下標(biāo)唯一表示,這是描述數(shù)組的基本要素。一維數(shù)組4.11、一維數(shù)組的定義:定義一維數(shù)組的一般形式為:類型名數(shù)組名[常量表達(dá)式];其中,類型名指定了數(shù)組中每一個(gè)元素的類型,可以是int、char、float、double等基本數(shù)據(jù)類型,也可以是C語言中的構(gòu)造類型,比如結(jié)構(gòu)體類型、枚舉類型等,還可以是通過typedef定義的數(shù)據(jù)類型。2、一維數(shù)組的引用數(shù)組遵循先定義后引用的原則,C語言中只能逐個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。引用數(shù)組元素時(shí)要指明數(shù)組名和數(shù)組下標(biāo),引用形式為:數(shù)組名[下標(biāo)]3、一維數(shù)組的初始化定義數(shù)組時(shí)給數(shù)組元素賦值,即為數(shù)組的初始化。其一般形式為:類型說明符數(shù)組名[整型常量或常量表達(dá)式]={初始化列表}二維數(shù)組4.2二維數(shù)組的定義二維數(shù)組定義的一般形式為:類型名數(shù)組名[常量或常量表達(dá)式1][常量或常量表達(dá)式2];類型說明符、數(shù)組名和常量表達(dá)式的意義與一維數(shù)組相同;常量或常量表達(dá)式1稱為行下標(biāo),常量或常量表達(dá)式2稱為列下標(biāo)。二維數(shù)組的引用二維數(shù)組也只能逐個(gè)引用元素,不能引用整個(gè)數(shù)組,其引用一般形式為:數(shù)組名[行下標(biāo)][列下標(biāo)]注意引用時(shí)行下表和列下標(biāo)的范圍,不能越界引用。二維數(shù)組的初始化(1)分行初始化初始化的一般形式為:類型名數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={{第0行元素初值表},{第1行元素初值表}…};其中每一對(duì)花括號(hào)內(nèi)的值賦給一行元素,并且數(shù)據(jù)與數(shù)據(jù)之間用逗號(hào)分隔。(2)按排列順序給各數(shù)組元素初始化初始化的一般形式為:類型名數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={初值表};初值表中的數(shù)值按照二維數(shù)組中元素的排列順序直接給出,數(shù)據(jù)之間仍然用逗號(hào)分隔。(3)對(duì)部分元素初始化分行初始化和按排列順序初始化都可以實(shí)現(xiàn)對(duì)二維數(shù)組的部分元素進(jìn)行初始化。系統(tǒng)默認(rèn)將未被賦值的數(shù)組元素值置為0。多維數(shù)組4.3C語言支持多維數(shù)組,多維數(shù)組的定義與二維數(shù)組相同,只是下標(biāo)更多,n維數(shù)組定義的一般形式為:數(shù)據(jù)類型數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…[常量表達(dá)式n];例如,inta1[3][4][10];floata1[3][6][4][5];其中a1是一個(gè)三維數(shù)組,共有120個(gè)整型數(shù)組元素;a2是一個(gè)四位數(shù)組,共含有360個(gè)浮點(diǎn)型數(shù)組元素。字符數(shù)組4.4字符數(shù)組的定義一般形式為:char數(shù)組名[常量表達(dá)式];例如,charcArray[5];定義了一個(gè)字符數(shù)組cArray,包含5個(gè)字符型的元素,cArray[0]~cArray[4]。字符數(shù)組的引用字符數(shù)組的引用與其他類型數(shù)據(jù)的引用一樣,也是通過數(shù)組名加下標(biāo)的形式實(shí)現(xiàn)。例如,引用上面定義的數(shù)組cArray,cArray[0]、cArray[1]、cArray[2]、cArray[3]、cArray[4]。字符數(shù)組的初始化對(duì)字符數(shù)組的初始化操作有以下兩種方式。(1)逐個(gè)字符初始化一般形式為:char數(shù)組名[數(shù)組長(zhǎng)度]={字符初值表};(2)利用字符串給字符數(shù)組初始化字符串是用雙引號(hào)括起來的一串字符,C語言中的字符串是看作字符數(shù)組來處理的,因此可以用字符串來給定義的字符數(shù)組初始化。其一般形式為:char數(shù)組名[數(shù)組長(zhǎng)度]={字符串常量};或?yàn)椋篶har數(shù)組名[數(shù)組長(zhǎng)度]=字符串常量;函數(shù)05函數(shù)是C語言程序中的基本單元,是執(zhí)行某特定任務(wù)的代碼塊。函數(shù)的定義5.1函數(shù)要在定義中完成其特定的功能,才能被其他函數(shù)進(jìn)行調(diào)用。函數(shù)定義的基本形式如下:返回值類型函數(shù)名(參數(shù)列表){函數(shù)體;}其中第一行為函數(shù)頭,是函數(shù)的人口;返回值類型為函數(shù)最后返回的值的所屬類型,若函數(shù)沒有返回值可省略返回值類型或者用void表示;函數(shù)名為標(biāo)識(shí)符,用于表示該函數(shù);函數(shù)名后面一對(duì)括號(hào)中的參數(shù)列表是這個(gè)函數(shù)的形式參數(shù),可以是一個(gè)或多個(gè)參數(shù)構(gòu)成,多個(gè)形參之間用逗號(hào)分隔,也可以為空(括號(hào)不能省略)。函數(shù)的調(diào)用5.2對(duì)定義好的函數(shù)進(jìn)行使用的過程即為函數(shù)的調(diào)用。函數(shù)調(diào)用的基本形式為:函數(shù)名(實(shí)參列表);實(shí)參列表中的參數(shù)個(gè)數(shù)、數(shù)據(jù)類型必須與函數(shù)對(duì)應(yīng)的形參一致,強(qiáng)制類型轉(zhuǎn)換除外。調(diào)用函數(shù)通過實(shí)參,實(shí)現(xiàn)與被調(diào)用函數(shù)之間的參數(shù)傳遞。函數(shù)的調(diào)用可以是函數(shù)語句調(diào)用,可以是在表達(dá)式中調(diào)用、也可以是函數(shù)參數(shù)的調(diào)用。函數(shù)的參數(shù)5.3函數(shù)的參數(shù)有形式參數(shù)和實(shí)際參數(shù)之分。在定義函數(shù)時(shí),函數(shù)名后面括號(hào)中的變量名稱為形式參數(shù);在調(diào)用函數(shù)時(shí),函數(shù)名后面括號(hào)中的變量名為實(shí)際參數(shù)。函數(shù)的調(diào)用即為主調(diào)函數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù),并實(shí)現(xiàn)被調(diào)用函數(shù)的函數(shù)體功能。調(diào)用函數(shù)間參數(shù)的傳遞有兩種不同方式,一是值傳遞,一是地址傳遞。值傳遞是單向傳遞,當(dāng)函數(shù)形參的數(shù)據(jù)類型為基本數(shù)據(jù)類型,主調(diào)函數(shù)在調(diào)用時(shí)給形參分配存儲(chǔ)單元,把實(shí)參具體的值傳遞給形參,在調(diào)用結(jié)束后,形參的存儲(chǔ)單元被釋放,而形參值的任何變化都不會(huì)影響到實(shí)參的值,實(shí)參的存儲(chǔ)單元仍保留并維持?jǐn)?shù)值不變;當(dāng)函數(shù)形參的數(shù)據(jù)類型為地址類型時(shí),如數(shù)組、指針等,函數(shù)參數(shù)傳遞為地址傳遞方式;此時(shí),形參接收到的是實(shí)參變量的地址,即指向?qū)崊⒌拇鎯?chǔ)單元;形參在取得該首地址之后,與實(shí)參共同擁有一段內(nèi)存空間,形參的變化也就是實(shí)參的變化。函數(shù)的嵌套調(diào)用5.4函數(shù)的定義是互相獨(dú)立的,一個(gè)函數(shù)體內(nèi)不能包含另一個(gè)函數(shù)的定義,但是在一個(gè)函數(shù)體中允許調(diào)用另一個(gè)函數(shù),即函數(shù)的嵌套調(diào)用。函數(shù)的遞歸調(diào)用5.5在函數(shù)內(nèi)直接或間接調(diào)用該函數(shù)本身稱為函數(shù)的遞歸調(diào)用。遞歸調(diào)用程序?qū)嶋H上是一種“大事化小,小事化了”的設(shè)計(jì)方法,是程序設(shè)計(jì)中的一種基本技術(shù)。將復(fù)雜問題一步步化簡(jiǎn)為能夠?qū)崿F(xiàn)的小問題,小問題與復(fù)雜問題有共同的特征或性質(zhì),只是規(guī)模大大縮小了,這樣的問題都可以通過函數(shù)的遞歸調(diào)用來實(shí)現(xiàn)。局部變量與全局變量5.6前一節(jié)函數(shù)的遞歸調(diào)用之所以能夠?qū)崿F(xiàn),是因?yàn)楹瘮?shù)在其每個(gè)執(zhí)行過程內(nèi)都有自己的形式參數(shù)和局部變量數(shù)據(jù)的副本,這些數(shù)據(jù)副本和函數(shù)的其他執(zhí)行過程不產(chǎn)生任何關(guān)系。那什么稱之為局部變量?局部變量和全局變量是根據(jù)代碼的作用域來區(qū)分的。作用域是在程序中可見性的范圍,包括局部作用域和全局作用域。局部變量具有局部作用域,全局變量具有全局作用域。結(jié)構(gòu)體06在解決具體問題時(shí),經(jīng)常需要用一組關(guān)系密切但是類型不相同的數(shù)據(jù)來描述一個(gè)實(shí)體。比如要管理班級(jí)學(xué)生的成績(jī),學(xué)生的信息數(shù)據(jù)包括學(xué)號(hào)、姓名、性別、成績(jī)等,這些信息的數(shù)據(jù)類型不完全相同,但是都屬于同一個(gè)學(xué)生的數(shù)據(jù)信息,是一個(gè)整體。C語言中構(gòu)造了一種結(jié)構(gòu)體類型,用來表示集不同數(shù)據(jù)類型于一體的一種數(shù)據(jù)類型。結(jié)構(gòu)體的聲明6.1結(jié)構(gòu)體類型聲明一般形式為:struct結(jié)構(gòu)體名{成員列表};其中,struct是結(jié)構(gòu)體類型的關(guān)鍵字;結(jié)構(gòu)體名必須符合標(biāo)識(shí)符的命名規(guī)則;大括號(hào)內(nèi)的成員列表由多個(gè)成員的定義組成;大括號(hào)后以分號(hào)結(jié)束該結(jié)構(gòu)體類型的聲明。結(jié)構(gòu)體變量的定義6.2由于結(jié)構(gòu)體是根據(jù)具體問題自行定義的類型,因此結(jié)構(gòu)體類型變量的定義相比其他基本數(shù)據(jù)類型變量的定義,形式更加靈活,一般有以下三種定義方式。先聲明結(jié)構(gòu)體類型,再定義變量定義的形式如下:struct結(jié)構(gòu)體名變量名表;聲明結(jié)構(gòu)體類型的同時(shí)定義變量將結(jié)構(gòu)體類型的聲明和變量定義代碼結(jié)合在一起,一般形式如下:struct結(jié)構(gòu)體名{成員列表}變量名表;直接定義結(jié)構(gòu)體類型變量一般形式如下:struct{成員列表}變量名表;這是一種無名的結(jié)構(gòu)體類型變量定義方式,在結(jié)構(gòu)體聲明中不給出結(jié)構(gòu)體名,而是直接定義結(jié)構(gòu)體的變量。這種方式中沒有顯示給出結(jié)構(gòu)體名,所以除了形式中的變量名表外,不能再定義其他結(jié)構(gòu)體變量。結(jié)構(gòu)體變量的引用6.3結(jié)構(gòu)體變量在定義后可以直接引用,在引用時(shí)要注意以下幾點(diǎn)。 引用的是結(jié)構(gòu)體變量成員結(jié)構(gòu)體中各個(gè)成員的數(shù)據(jù)類型不一定相同,因此不能直接整體引用結(jié)構(gòu)體變量,一般是引用結(jié)構(gòu)體變量的成員。在沒有結(jié)構(gòu)體嵌套定義情況下,引用結(jié)構(gòu)體變量成員的一般形式為:結(jié)構(gòu)體變量名.成員名其中“.”為結(jié)構(gòu)體成員運(yùn)算符,它的優(yōu)先級(jí)別在所有運(yùn)算符中為最高。這樣引用的結(jié)構(gòu)體成員相當(dāng)于成員對(duì)應(yīng)數(shù)據(jù)類型的一個(gè)普通變量。結(jié)構(gòu)體嵌套定義的引用當(dāng)有結(jié)構(gòu)體嵌套定義,通過變量引用結(jié)構(gòu)體變量成員時(shí)要連用多個(gè)成員運(yùn)算符訪問到最底層成員(又叫基本成員),只有基本成員才能直接存放數(shù)據(jù),其一般形式為:結(jié)構(gòu)體變量名.結(jié)構(gòu)體成員名.….結(jié)構(gòu)體成員名.基本成員名結(jié)構(gòu)體變量的運(yùn)算對(duì)結(jié)構(gòu)體變量的賦值只能對(duì)其成員進(jìn)行賦值,例外的是當(dāng)兩個(gè)結(jié)構(gòu)體變量所有成員的類型都完全一致時(shí),也可以兩個(gè)結(jié)構(gòu)體變量之間整體賦值;結(jié)構(gòu)體變量的成員可以像普通變量一樣參與各種運(yùn)算。結(jié)構(gòu)體變量的初始化6.4結(jié)構(gòu)體類型和其他基本數(shù)據(jù)類型一樣,可以在定義結(jié)構(gòu)體變量時(shí)直接指定初始值,進(jìn)行初始化操作。例如:structstudentstu1={110036,”LiHua”,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論