第9章單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第9章單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第9章單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第9章單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第9章單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩145頁(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)介

1、“十二五”職業(yè)教育國(guó)家規(guī)劃教材單片機(jī)原理及接口技術(shù)(第2版)9.1 C51語(yǔ)言的特點(diǎn)及其程序結(jié)構(gòu)9.2 C51數(shù)據(jù)類型、常量和變量的定義9.3 C51的運(yùn)算符、表達(dá)式及其語(yǔ)法規(guī)則9.4 C51語(yǔ)言的程序流程控制9.5 C51函數(shù)第第章章C51程序設(shè)計(jì)基礎(chǔ) 本章內(nèi)容本章內(nèi)容Single Chip Microcomputer第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 3學(xué)習(xí)目標(biāo): 了解C51語(yǔ)言在單片機(jī)開(kāi)發(fā)中程序的結(jié)構(gòu)特點(diǎn) 掌握C51語(yǔ)言在單片機(jī)開(kāi)發(fā)中程序的編制規(guī)則 掌握C51程序設(shè)計(jì)的基本方法及特點(diǎn)第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口

2、技術(shù)(第二版) 10/21/2013 4學(xué)習(xí)重點(diǎn): C51語(yǔ)言程序設(shè)計(jì)的基本方法 C51程序設(shè)計(jì)的特點(diǎn) C51語(yǔ)言在單片機(jī)應(yīng)用系統(tǒng)中設(shè)計(jì)實(shí)例的分析和討論第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 5C語(yǔ)言是一種通用的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,在國(guó)際上十分流行,它既可以用來(lái)編寫(xiě)計(jì)算機(jī)的系統(tǒng)程序,也可以用來(lái)編寫(xiě)一般的應(yīng)用程序。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 6C語(yǔ)言的特點(diǎn)可以歸納為:語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活;運(yùn)算符豐富(有34種運(yùn)算符),語(yǔ)法限制不嚴(yán)格,程序設(shè)計(jì)自由度大;編寫(xiě)的程序可移植性好;可

3、直接操作計(jì)算機(jī)的硬件;可進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì);生成目標(biāo)代碼質(zhì)量高。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 7基于這些特點(diǎn),使得C語(yǔ)言在單片機(jī)開(kāi)發(fā)領(lǐng)域成為目前較為流行的一種程序設(shè)計(jì)語(yǔ)言。針對(duì)8051單片機(jī)開(kāi)發(fā)的C語(yǔ)言,我們通常稱其為C51語(yǔ)言。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 89.1 C51語(yǔ)言的特點(diǎn)及其程序結(jié)構(gòu)9.1.1 C51語(yǔ)言的特點(diǎn)C51語(yǔ)言根據(jù)單片機(jī)存儲(chǔ)結(jié)構(gòu)及內(nèi)部資源定義了相應(yīng)的C語(yǔ)言中的數(shù)據(jù)類型和變量,程序結(jié)構(gòu)與一般C語(yǔ)言沒(méi)有什么差別。一個(gè)C51程序大體上是一個(gè)函數(shù)定義的集合,在

4、這個(gè)集合中有且僅有一個(gè)名為main()的主函數(shù)。主函數(shù)是程序的入口,只有當(dāng)主函數(shù)中的所有語(yǔ)句依次執(zhí)行完畢,則程序執(zhí)行結(jié)束。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 9在C51中,函數(shù)定義由類型、函數(shù)名、參數(shù)表和函數(shù)體四部分組合而成。函數(shù)名是一個(gè)標(biāo)識(shí)符,標(biāo)識(shí)符是大小寫(xiě)可區(qū)別的,最長(zhǎng)為255個(gè)字符。參數(shù)表是用圓括號(hào)括起來(lái)的若干參數(shù),薦與項(xiàng)之間用逗號(hào)隔開(kāi)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 10函數(shù)體是用大括號(hào)括起來(lái)的若干C語(yǔ)句,語(yǔ)句語(yǔ)句之間用分號(hào)隔開(kāi),最后一個(gè)語(yǔ)句一般是return(在主函數(shù)中可以

5、省略)。每一個(gè)函數(shù)都返回值,該值由return語(yǔ)句中的表達(dá)式指定(省略時(shí)為零)。函數(shù)的類型就是返回值的類型,函數(shù)類型(除整型外)均需在函數(shù)名前加以指定。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 11以AT89C51單片機(jī)最小系統(tǒng)的P1.0口控制一個(gè)LED發(fā)光二極管的亮和滅為例,我們介紹一下C51程序的一般格式。圖9-1為其控制電路圖。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 12圖9-1 AT89C51控制一個(gè)LED的亮滅第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21

6、/2013 13#include #define uchar unsigned char#define uint unsigned intsbit P10=P10;void main()unsigned int n;dodelayms(500);P10=0;delayms(500);P10=1;while(1);void delayms(uint n) uchar i,j; for(i=n;i0;i- ) for(j=110;j0;j-) ; 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 14通過(guò)上面的實(shí)例可以得到如下結(jié)論:1.C51語(yǔ)言程序是由函數(shù)

7、構(gòu)成;2.函數(shù)的組成部分。3.C51程序的書(shū)寫(xiě)格式較自由;4.每個(gè)語(yǔ)句和數(shù)據(jù)定義的結(jié)束符號(hào);5. 輸入/輸出語(yǔ)句的函數(shù)化;6.關(guān)于程序中的注釋的形式和作用;7.程序的執(zhí)行過(guò)程。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 159.1.2 C51函數(shù)的一般格式C51函數(shù)的一般格式如下:函數(shù)類型 函數(shù)名(函數(shù)形式參數(shù)表) /函數(shù)說(shuō)明部分 數(shù)據(jù)說(shuō)明部分 ; /函數(shù)體的部分 執(zhí) 行 語(yǔ) 句 部 分;其中加時(shí),表示其中的內(nèi)容可以省略。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 16一個(gè)函數(shù)在程序中可以以三種不同形態(tài)

8、出現(xiàn)。函數(shù)定義、函數(shù)調(diào)用和函數(shù)說(shuō)明。函數(shù)定義相當(dāng)于匯編中的一般子程序。函數(shù)調(diào)用相當(dāng)于匯編中調(diào)用于程序的CALL語(yǔ)句,在C51語(yǔ)言中,更普遍地規(guī)定函數(shù)調(diào)用可出現(xiàn)在表達(dá)式中。函數(shù)定義和函數(shù)調(diào)用不分先后,但若調(diào)用在定義之前,那么在調(diào)用前必須先進(jìn)行函數(shù)說(shuō)明。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 17C51中函數(shù)分為兩大類,一類是庫(kù)函數(shù),一類是用戶定義的函數(shù)。庫(kù)函數(shù)是C51在庫(kù)文件中已定義的函數(shù),其函數(shù)說(shuō)明在相關(guān)的頭文件中。對(duì)于這類函數(shù),用戶在編程時(shí)只要用include預(yù)處理指令將頭文件包含在用戶文件中,直接調(diào)用即可。用戶函數(shù)是用戶自己定義的一類函數(shù)。

9、從某種意義上講,C編程實(shí)際上是對(duì)一系列用戶函數(shù)的定義。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 189.2 C51數(shù)據(jù)類型、常量和變量的定義9.2.1 C51數(shù)據(jù)類型圖9-2 C51語(yǔ)言數(shù)據(jù)類型及其分類關(guān)系圖第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 19表9-1 C51所支持的數(shù)據(jù)類型第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 209.2.2 常量的定義常量就是在程序運(yùn)行過(guò)程中不能改變值的量,常量的數(shù)據(jù)類型只有整型、浮點(diǎn)型、字符型、字符串型和位標(biāo)量。第9

10、章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 21常量可用在不必改變值的場(chǎng)合,如固定的數(shù)據(jù)表,字庫(kù)等。常量的定義方式有幾種,下面加以說(shuō)明。 #define False 0 x0 /使用預(yù)定義可以定義符號(hào)常量 #define True 0 x1 /定義常量False為0,Ture為1 unsigned int code a=100; /用code把a(bǔ) 定義在程序存儲(chǔ)器中并且賦值 const unsigned int c=100; /用const 定義c為無(wú)符號(hào)int 常量并賦值以上代碼常量的值都保存在程序存儲(chǔ)器,而程序存儲(chǔ)器在運(yùn)行中是不允許被修改的,所以如

11、果在這兩句后面用了類似a=110,a+這樣的賦值語(yǔ)句,編譯時(shí)將會(huì)出錯(cuò)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 229.2.3 變量的定義變量是一種在程序執(zhí)行過(guò)程中其值能不斷變化的量。要在程序中使用變量必須先用標(biāo)識(shí)符作為變量名,并指出所用的數(shù)據(jù)類型和存儲(chǔ)模式,這樣編譯系統(tǒng)才能為變量分配相應(yīng)的存儲(chǔ)空間。定義一個(gè)變量的格式如下:存儲(chǔ)種類 數(shù)據(jù)類型 存儲(chǔ)器類型 變量名表;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 23在定義格式中除了數(shù)據(jù)類型和變量名表是必要的,其他的都是可選項(xiàng)。存儲(chǔ)種類有四種:自動(dòng)(Aut

12、o);外部(Externad);靜態(tài)(static);寄存器(Register)。默認(rèn)為自動(dòng)(Auto)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 24存儲(chǔ)器類型的說(shuō)明就是指定該變量在C51硬件系統(tǒng)中所使用的存儲(chǔ)區(qū)域,并在編譯時(shí)準(zhǔn)確定位。表9-2列出了Keil uVision 3所能識(shí)別的存儲(chǔ)器類型。注意:在AT89C51芯片中RAM只有低128B,位于80H到FFH的高128B則在52系列芯片中才有用,并和特殊功能寄存器地址重疊。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 25表9-2 C51的存儲(chǔ)

13、器類型第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 26當(dāng)使用DATA、BDATA定義常量和變量時(shí),C51編譯器會(huì)將其定位在內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)中(內(nèi)部RAM),這個(gè)存儲(chǔ)區(qū)根據(jù)51系列單片機(jī)的型號(hào)不同,長(zhǎng)度分別為128B、256B等。數(shù)據(jù)存放在此區(qū)域,數(shù)據(jù)處理速度較快,若數(shù)據(jù)存放在外部存儲(chǔ)器中,在其使用前必須將其移到內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)中,內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)是存放臨時(shí)性傳遞變量或使用頻率較高的變量的區(qū)域。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 27IDATA存儲(chǔ)類型可以間接尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器(可以超過(guò)128B)。PD

14、ATA存儲(chǔ)類型屬于XDATA類型,其一個(gè)字節(jié)地址(高8位)被保存在P2口中,用于I/O操作。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 28當(dāng)使用XDATA存儲(chǔ)類型定義常量、變量時(shí),C5l編譯器會(huì)將其定位在外部數(shù)據(jù)存儲(chǔ)空間(外部RAH)中,該空間位于片外附加的RAM芯片中,其最大可尋址范圍為64KB。在使用外部數(shù)據(jù)區(qū)的信息時(shí),必須用指令將需要的外部數(shù)據(jù)區(qū)的數(shù)據(jù)轉(zhuǎn)移到內(nèi)部數(shù)據(jù)區(qū)中,當(dāng)數(shù)據(jù)處理完成后,將結(jié)果又要寫(xiě)到外部數(shù)據(jù)存儲(chǔ)區(qū)中。片外數(shù)據(jù)存儲(chǔ)區(qū)主要用于存放不常使用的變量,或收集需要等待處理的數(shù)據(jù)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技

15、術(shù)(第二版) 10/21/2013 29當(dāng)使用CODE存儲(chǔ)類型定義數(shù)據(jù)時(shí),C51編譯器會(huì)將其定義在程序空間(ROM或EPROM),這里存放著指令代碼和其他一些不變的信息。調(diào)試完成的程序代碼被寫(xiě)入MCS-51系列單片機(jī)的內(nèi)部ROM、EPROM或外部的EPROM中。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 30訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)(DATA、BDATA、IDATA)比訪問(wèn)外部數(shù)據(jù)存儲(chǔ)囂(XDATA、PDATA)相對(duì)要快一些,因此可將經(jīng)常使用的變量置于內(nèi)部數(shù)據(jù)存儲(chǔ)器中,而將數(shù)據(jù)量較大或不常使用的數(shù)據(jù)置于外部數(shù)據(jù)存儲(chǔ)器中。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基

16、礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 319.2.4 C51定義SFR字節(jié)和位單元一、對(duì)特殊功能寄存器SFR的定義sfr和sfr16可以直接對(duì)51單片機(jī)的特殊功能寄存器SFR進(jìn)行定義,定義方法如下:sfr 特殊功能寄存器名=特殊功能寄存器地址常數(shù);sfr16 特殊功能寄存器名=特殊功能寄存器地址常數(shù);第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 32例 如:sfr P1=0 x90; /定義 P1端口,其對(duì)應(yīng)于內(nèi)部存儲(chǔ)器的地址為90Hsfr16 T2=0 xCC; /定義8052單片機(jī)定時(shí)器T2,其對(duì)應(yīng)地址為T2L=CCH,T2H=

17、CDH用sfr16定義16位特殊功能寄存器時(shí),等號(hào)后面是它的低位地址,高位地址一定要位于物理低位地址之上。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 33二、對(duì)位地址單元的定義sbit定義可位尋址對(duì)象。如訪問(wèn)特殊功能寄存器中的某位。如要訪問(wèn)P1口中的第2個(gè)引腳P1.1。定義方法有三種:第一種方法:sbit 位變量名=位地址;例如:sbit P1.1=0 x91;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 34這種方法是把位的絕對(duì)地址賦給位變量。sbit的位地址必須位于80H-FFH之間。第二種方法:sb

18、it 位變量名=特殊功能奇存器名位位置;例如:sfr P1=0 x90;sbit P11=0 x901;當(dāng)可尋址位位于特殊功能寄存器中時(shí)可采用這種方法。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 35第三種方法:sbit 位變量名=字節(jié)地址位位置;例如:sbit P11=0 x901;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 36在C51存儲(chǔ)器類型中提供有一個(gè)BDATA的存儲(chǔ)器類型,這個(gè)是指可位尋址的數(shù)據(jù)存儲(chǔ)器,位于單片機(jī)的可位尋址區(qū)中,可以將要求可位尋址的數(shù)據(jù)定義為BDATA,例如:unsigned

19、 char bdata ib; /在可位尋址區(qū)定義unsignad char類型的變量ib第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 379.3 C51的運(yùn)算符、表達(dá)式及其語(yǔ)法規(guī)則9.3.1 C51算術(shù)運(yùn)算符及其表達(dá)式一、C51最基本的算術(shù)運(yùn)算符+:加法運(yùn)算符,或正值符號(hào)。-:減法運(yùn)算符,或負(fù)值符號(hào)。*:乘法運(yùn)算符。/:除法運(yùn)算符。%:模(求余)運(yùn)算符,例如:9%5結(jié)果是9除以5所得的余數(shù)4。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 38二、算術(shù)表達(dá)式算術(shù)表達(dá)式是用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來(lái)的

20、式子,其中的運(yùn)算對(duì)象包括常量、變量、函數(shù)、數(shù)組、結(jié)構(gòu)等等。例如:a+b;a+b*c/d;a*(b+c)-(d-e)/f;a+b/c-2.5+b;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 39三、算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí):指當(dāng)運(yùn)算對(duì)象兩側(cè)都有運(yùn)算符時(shí)執(zhí)行運(yùn)算的先后次序。按運(yùn)算符優(yōu)先級(jí)別的高低順序執(zhí)行運(yùn)算。結(jié)合性:指一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符優(yōu)先級(jí)別相同時(shí)的運(yùn)算順序。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 40算術(shù)運(yùn)算符優(yōu)先級(jí)規(guī)定為:先乘除取模,后加減,括號(hào)優(yōu)先。即在算術(shù)運(yùn)算符中,乘、除、取模運(yùn)

21、算符的優(yōu)先級(jí)相同,并高于加減運(yùn)算符。在表達(dá)式中若出現(xiàn)括號(hào),則括號(hào)中的內(nèi)容優(yōu)先級(jí)最高。例如:a+b*c;這個(gè)表達(dá)式中除號(hào)的優(yōu)先級(jí)高于加號(hào),故先運(yùn)算b/c所得的結(jié)果再與a相加。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 41再 如:(a+b)*(c-d)-e;在這個(gè)表達(dá)式中括號(hào)的優(yōu)先級(jí)最高,*運(yùn)算符次之,減號(hào)優(yōu)先級(jí)最低,故先運(yùn)算(a+b)和(c-d),然后再將兩者的結(jié)果相乘,最后再與e相減。算術(shù)運(yùn)算符結(jié)合性規(guī)定為自左至右方向,又稱為“左結(jié)合性”。即當(dāng)一個(gè)運(yùn)算對(duì)象兩側(cè)的算術(shù)運(yùn)算符優(yōu)先級(jí)別相同時(shí),運(yùn)算對(duì)象先與左面的運(yùn)算符結(jié)合。第9章 單片機(jī)C51語(yǔ)言程序設(shè)

22、計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 42例 如:a+b-c;b兩邊是“+”和“-”,運(yùn)算符優(yōu)先級(jí)別相同,故按左結(jié)合性先執(zhí)行a+b再與c相減。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 43四、強(qiáng)制類型轉(zhuǎn)換運(yùn)算符()如果一個(gè)運(yùn)算符兩側(cè)的數(shù)據(jù)類型不同,則須通過(guò)數(shù)據(jù)類型轉(zhuǎn)換將數(shù)據(jù)轉(zhuǎn)換成同種類型。轉(zhuǎn)換的方式有兩種。一種是自動(dòng)(默認(rèn))類型轉(zhuǎn)換,即在程序編譯時(shí)由C51編譯器自動(dòng)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 44圖9-3 自動(dòng)類型轉(zhuǎn)換規(guī)則當(dāng)運(yùn)算對(duì)象的數(shù)據(jù)類型不相

23、同時(shí),先將較低的數(shù)據(jù)類型轉(zhuǎn)換成較高的數(shù)據(jù)類型,運(yùn)算的結(jié)果為較高的數(shù)據(jù)類型。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 45另一種數(shù)據(jù)類型的轉(zhuǎn)換方式為強(qiáng)制類型轉(zhuǎn)換,需要使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,其形式如下所示:(類型名) (表達(dá)式);(double) a; /將a的值強(qiáng)制轉(zhuǎn)換成double類型(int)(x+y); /將x+y的值強(qiáng)制轉(zhuǎn)換成int 類型(float)(5%3); /將模運(yùn)算5%3的值強(qiáng)制轉(zhuǎn)換成float類型第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 469.3.2 C51關(guān)系運(yùn)算符、表達(dá)式及

24、優(yōu)先級(jí)一、C51提供6種關(guān)系運(yùn)算符 :大于 優(yōu)先級(jí)相同(高)= :大于或等于= :測(cè)試等于 優(yōu)先級(jí)相同(低)!= :測(cè)試不等于第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 47二、關(guān)系運(yùn)算符的優(yōu)先級(jí)前四種關(guān)系運(yùn)算符(,=)優(yōu)先級(jí)相同,后兩種也相同;前四種的優(yōu)先級(jí)高于后兩者優(yōu)先級(jí)。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 48圖9-4 各種運(yùn)算符優(yōu)先級(jí)規(guī)則圖第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2

25、013 49【例9.1】第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 50關(guān)系運(yùn)算符的結(jié)合性為左結(jié)合。關(guān)系表達(dá)式是用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式及字符表達(dá)式等)連接起來(lái)的式子。表達(dá)式的結(jié)果:由于關(guān)系運(yùn)算符總是二目運(yùn)算符,它作用在運(yùn)算對(duì)象上產(chǎn)生的結(jié)果為一個(gè)邏輯值(即真或假)。C語(yǔ)言中以“1”代表真,以“0”代表假。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 51【例9.2】若a=4,b=3,c=1,則:ab 的值為“真”,則表達(dá)式的值為1。b+cb)=c 的值為“真”,表達(dá)式的

26、值為1。d=ab,d 的值為1。f=abc 由于關(guān)系運(yùn)算符的結(jié)合性為左結(jié)合,故ab的值為1。而1c值為O,故f的值為0。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 529.3.3 C51邏輯運(yùn)算符、表達(dá)式及優(yōu)先級(jí)一、C51提供三種邏輯運(yùn)算符&:邏輯與(AND)|:邏輯或( OR)! :邏輯非(NOT)&和|是雙目運(yùn)算符,要求有兩個(gè)運(yùn)算對(duì)象;而!是單目運(yùn)算符,只要求一個(gè)運(yùn)算對(duì)象。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 53C51邏輯運(yùn)算符與算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)算符之間的優(yōu)先級(jí)

27、如圖9-5所示。圖9-5 運(yùn)算符優(yōu)先級(jí)比較第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 54二、邏輯表達(dá)式邏輯表達(dá)式是用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子。邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。邏輯表達(dá)式的結(jié)合性為自左向右。與關(guān)系表達(dá)式的值類似,以“1”代表真,以“0”代表假。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 55【例9.3】若a=4,b=5,則因?yàn)閍 =4為真,所以!a為假(0);因?yàn)閍、b為真,則a|b也為真(1),a&b為真(1)。再看表達(dá)式!a&b,其值

28、為假(0)。因?yàn)椋?yōu)先級(jí)高于&,故先執(zhí)行!a,值為假(0),而0&b為假(0)。故結(jié)果為假(0)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 56通過(guò)上例可以看出,系統(tǒng)的邏輯運(yùn)算結(jié)果不是0就是1,不可能是其他值。這與后面講到的按位運(yùn)算是截然不同的,應(yīng)該注意區(qū)別邏輯運(yùn)算與按位運(yùn)算這兩個(gè)不同的概念。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 57邏輯表達(dá)式中不是所有邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符后才能求出表達(dá)式的值時(shí),才執(zhí)行該運(yùn)算符。由于邏輯運(yùn)算符的結(jié)合性是自左向右,所以

29、對(duì)于&(邏輯與)運(yùn)算符來(lái)說(shuō),只有左邊的值不為假(0)才繼續(xù)執(zhí)行右邊的運(yùn)算,對(duì)于|(邏輯或)運(yùn)算符來(lái)說(shuō)只有左邊的值為假才繼續(xù)進(jìn)行右邊的運(yùn)算。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 58【例9.4】若a=1,b=2,c=3,d=4;m,n原值為1,則求表達(dá)式(m=ab)&(n=cd)的值時(shí),應(yīng)按以下方法分析求值。由于ab為假(0),即m=0,故無(wú)須再執(zhí)行右邊的&(n=cd)運(yùn)算,即可確定表達(dá)式的值為假(0);而表達(dá)式(m=ab)|(n=cd)就不一樣,由于ab為假(0),即m=0,故需繼續(xù)向右執(zhí)行,又由于cd為假(0),即n

30、=0,兩者相或(|)結(jié)果為0,故表達(dá)式的值為0。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 599.3.4 C51位操作及其表達(dá)式一、C51提供了如下位操作運(yùn)算符& :按 位 與。| :按 位 或。 :按位異或。 :按位取反。:按位右移。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 60二、“按位與”運(yùn)算符&運(yùn)算規(guī)則:參加運(yùn)算的兩個(gè)運(yùn)算對(duì)象,若兩者相應(yīng)的位都為1,則該位結(jié)果值為1,否則為0,即:0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 &

31、; 1 = 1第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 61【例9.5】若a=54h=01010100B,b=3BH=00111011B,則表達(dá)式c=a&b值為10H,即:第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 62三、“按位或”運(yùn)算符|運(yùn)算規(guī)則:參加運(yùn)算的兩個(gè)運(yùn)算對(duì)象,若兩者相應(yīng)的位中只要有個(gè)為1,則該位結(jié)果為1。即:0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 63

32、【例9.6】若a=30H=00110000B,b=0FH=00001111B。則表達(dá)式c=a|b值為3FH,即:第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 64四、“異或”運(yùn)算符 運(yùn)算規(guī)則:參加運(yùn)算的兩個(gè)運(yùn)算對(duì)象,若兩者相應(yīng)的位值相同,則結(jié)果為0;若兩者相應(yīng)的位相異,結(jié)果為1。0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 65【例9.7】若a=A5H=10100101B,b=37H=00110111B。則表達(dá)式c=ab值為92H。即:第9章 單

33、片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 66五、“位取反”運(yùn)算符是一個(gè)單目運(yùn)算符,用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位進(jìn)行取反,即0變1,1變0。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 67【例9.8】若a=0F0H=11110000B,則表達(dá)式a =a值為0FH,即:第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 68運(yùn)算符的優(yōu)先級(jí)比別的算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和其他運(yùn)算符都高。例如,a&b的運(yùn)算順序?yàn)橄茸鱝的運(yùn)算,再作&運(yùn)算。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基

34、礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 69六、“位左移”和“位右移”運(yùn)算符()位左移、位右移運(yùn)算符用來(lái)將一個(gè)數(shù)各二進(jìn)制位的全部左移或右移若干位,移位后,空白位補(bǔ)0,而溢出的位舍棄。移位運(yùn)算并不能改變?cè)兞勘旧恚俏覀儗⒁频慕Y(jié)果賦給另一變量。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 70【例9.9】a=6AH=01101010B,則表達(dá)式a=a2將a值右移兩位,結(jié)果為1AH。即:第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 72【例9.10】若a=11000011B=0C3H,將a值右

35、循環(huán)位移兩位。其實(shí)現(xiàn)過(guò)程分析如下:a右循環(huán)n位,即將a中原來(lái)左面(8-n)位右移n位,而將原來(lái)右端的n位移到最左面n位。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 739.3.5 自增減運(yùn)算符、復(fù)合運(yùn)算符及其表達(dá)式一、自增減運(yùn)算符自增減運(yùn)算符的作用是使變量值自動(dòng)加1或減1。例如:+i,-i:在使用之前,先使i值加(減)1。i+,i-:在使用之后,再使i值加(減)1。粗略地看,+i和i+的作用都相當(dāng)于i=i+1,但不同之處在于+i先執(zhí)行i=i+1,再使用i的值,而i+則是先使用i的值,再執(zhí)i=i+1。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接

36、口技術(shù)(第二版) 10/21/2013 74【例9.12】若i值原來(lái)為5,則執(zhí)行j=+i;語(yǔ)句后,j的值為6,i的值也為6。i值原來(lái)為5,執(zhí)行j=i+;語(yǔ)句后,j的值為5,i的值為6。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 75【 例 9 . 1 3 】 若 i 原 值 為 3 , 則 表 達(dá) 式k=(+i)+(+i)+(+i)的值為18。這是因?yàn)椋?i最先執(zhí)行,先對(duì)表達(dá)式進(jìn)行掃描,對(duì)i進(jìn)行三次自加(+1)則此時(shí)i=6,然后執(zhí)行k= 6+6+6=18,故k值為18。而表達(dá)式k=(i+)+(i+)+(i+)其結(jié)果是:k值為9,而i值為6。因?yàn)橄葘?duì)

37、i進(jìn)行三次相加,再執(zhí)行三次i的自加。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 76二、復(fù)合運(yùn)算符及其表達(dá)式凡是二目運(yùn)算符,都可以與賦值運(yùn)算符“=”一起組成復(fù)合賦值運(yùn)算符。C51提供了10種復(fù)合賦值運(yùn)算符。即:+=,-=,*=,/=,%=,=,&=,=,|=采用這種復(fù)合賦值運(yùn)算的目的,是為了簡(jiǎn)化程序,提高C程序編譯效率。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 77a+=c 相當(dāng)于a=a+c a %=b 相當(dāng)于a=a %ba-=d 相當(dāng)于a=a-d a=2 相當(dāng)于a=a=4 相當(dāng)于a=a4a/

38、=b 相當(dāng)于a=a/bPORTA &=0 xf7相當(dāng)于PORTA=PORTA&Oxf7,作用是使用&位運(yùn)算,將PORTA.3位置0。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 78【例9.15】使用P1口控制八路LED流水燈。電路圖如9-6所示。這里AT89C51的P1引腳為低電平才會(huì)點(diǎn)亮LED燈,P1口的八個(gè)引腳剛好對(duì)應(yīng)P1口特殊寄存器的八個(gè)二進(jìn)制位,如向P1口送數(shù)據(jù)OxFE,轉(zhuǎn)換成二進(jìn)制就是1111111OB,最低位D0為0,這里P1.0引腳輸出低電平,LED1被點(diǎn)亮,以此類推,根據(jù)自己想要的效果可以給端口送對(duì)應(yīng)的值了。

39、第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 79要求八個(gè)LED燈(LED1-LED8)依次點(diǎn)亮,然后又從LED8-LED1依次點(diǎn)亮,如此往返,可按如下方法編寫(xiě)程序。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 80圖9-6 八路LED流水燈控制電路圖第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 81#include #define uint unsigned int#define uchar unsigned charvoid Delayms(uint coun

40、t) /基于ms的延時(shí)函數(shù)uint i,j;for(i=0;icount;i+)for(j=0;j120;j+);第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 82main() uchar LEDIndex=0; bit LEDDirection=1;/點(diǎn)亮LED燈的方向標(biāo)志 while(1) if(LEDDirection) P1=(Ox01LEDIndex);/方向標(biāo)志為0,從LED8-LED0點(diǎn)亮 if(LEDIndex=7) LEDDirection=!LEDDirection; LEDIndex=(LEDIndex+1)%8; Delaym

41、s(100); 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 839.4 C51語(yǔ)言的程序流程控制9.4.1 條件語(yǔ)句條件語(yǔ)句是指由關(guān)鍵字if構(gòu)成,用于需要根據(jù)某些條件來(lái)控制執(zhí)行走向的程序。條件語(yǔ)句又被稱為if條件語(yǔ)句或者是“分支語(yǔ)句”。條件語(yǔ)句是很重用的程序控制語(yǔ)句,在C51的程序設(shè)計(jì)中經(jīng)常會(huì)用到。C51語(yǔ)言提供了多種形式的if條件語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 84一、單分支條件語(yǔ)句單分支條件語(yǔ)句只有一個(gè)語(yǔ)句分支或者語(yǔ)句塊分支。if(條件表達(dá)式) 分支語(yǔ)句;當(dāng)條件表達(dá)式的值為真,就執(zhí)

42、行分支語(yǔ)句;當(dāng)條件表達(dá)式的值為假,跳過(guò)分支語(yǔ)句。if條件語(yǔ)句執(zhí)行完后,執(zhí)行后續(xù)程序代碼。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 85【例9.16】#include /頭 文 件void main() /主 函 數(shù) int a,b; /變量聲明 a=10; /初始化變量 b=10; if(a=b) /單分支if條件語(yǔ)句 a+; /分支語(yǔ)句 b+; printf(“a=%d,b=%dn”,a); /輸出結(jié)果程序可在Keil uVision3環(huán)境下運(yùn)行,運(yùn)行的結(jié)果如下所示:a=11,b=11第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第

43、二版) 10/21/2013 86二、雙分支條件語(yǔ)句雙分支條件語(yǔ)句包含兩個(gè)語(yǔ)句分支,語(yǔ)句由關(guān)鍵字if和else構(gòu)成,其一般形式如下:if(條件表達(dá)式) 分支語(yǔ)句1;else 分支語(yǔ)句2;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 87【例9.17】#include /包含頭文件void main() /主 函 數(shù) int a,b; /變量聲明 a=10; /初始化變量 b=20; if(a=b) /雙分支if條件語(yǔ)句 a+; /分支語(yǔ)句1 b+; else a-; /分支語(yǔ)句2 b-; printf(“a=%d,b=%dn”,a); /輸出結(jié)果程序

44、可在Keil uVision3環(huán)境運(yùn)行,其運(yùn)行的結(jié)果如下所示:a=9,b=19第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 88三、多分支條件語(yǔ)句if(條件表達(dá)式1) 分支語(yǔ)句1;else if(條件表達(dá)式2) 分支語(yǔ)句2; else if(條件表達(dá)式3) 分支語(yǔ)句3; else if(條件表達(dá)式n) 分支語(yǔ)句n; else 分支語(yǔ)句n+1; 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 89多分支條件語(yǔ)句在執(zhí)行時(shí),從上到下逐個(gè)對(duì)條件表達(dá)式進(jìn)行判斷,一旦某個(gè)條件表達(dá)式的值為真,就執(zhí)行相應(yīng)的分支語(yǔ)句,其余分支

45、語(yǔ)句不再執(zhí)行;如果沒(méi)有一個(gè)判斷條件為真,則執(zhí)行最后一個(gè)else分支,即分支語(yǔ)句n+1。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 90【例9.18】#include /包含頭文件void main() /主 函 數(shù) int score; /聲明變量 char grade; score=79; /初始化成績(jī) if(score=90) /多分支條件語(yǔ)句,判斷成績(jī)的等級(jí) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; els

46、e grade=E; printf(“score=%d,grade=%cn”,score,grade); /輸出結(jié)果程序可在Keil uVision3環(huán)境運(yùn)行,其運(yùn)行的結(jié)果如下所示:score=79,grade=C第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 91在C51程序設(shè)計(jì)中,使用多分支條件語(yǔ)句時(shí),需要注意:1.在整個(gè)多分支條件語(yǔ)句中,只執(zhí)行其中的一條語(yǔ)句。2.如果分支語(yǔ)句只有一條語(yǔ)句,則可以省略“”,否則不可以省略“”。3.if和else配對(duì)使用,如果少了一個(gè)就會(huì)出現(xiàn)語(yǔ)法出錯(cuò),else總是與最臨近的if相配對(duì)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)

47、基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 92if(條件表達(dá)式)if(條件表達(dá)式)語(yǔ)句1;else語(yǔ)句2;elseif(條件表達(dá)式)語(yǔ)句3;else語(yǔ)句4;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 93四、switch語(yǔ)句switch(表達(dá)式) case 常量表達(dá)式1: 分支語(yǔ)句1; break;case 常量表達(dá)式2: 分支語(yǔ)句2; break;case 常量表達(dá)式3: 分支語(yǔ)句3; break; case 常量表達(dá)式n: 分支語(yǔ)句n; break;default: 分支語(yǔ)句n+1; break;第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)

48、基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 94開(kāi)關(guān)語(yǔ)句在執(zhí)行時(shí),首先計(jì)算switch后的表達(dá)式的值,然后與case后面的各個(gè)分支常量表達(dá)式相比較,如果相等則執(zhí)行對(duì)應(yīng)的分支語(yǔ)句,再執(zhí)行break語(yǔ)句跳出switch語(yǔ)句。如分支常量的值沒(méi)有一個(gè)和條件相等,就執(zhí)行關(guān)鍵字default后面的語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 95【例9.19】#include /包含頭文件void main() /主 函 數(shù) char ch; /聲明字符型變量ch ch=getchar(); /從鍵盤(pán)接受字符賦值給ch switch(ch)

49、/開(kāi)關(guān)語(yǔ)句 case A:printf(“按鍵A按下”);break; case B:printf(“按鍵B按下”);break; default:printf(“非按鍵A和B按下”);break; 該程序可以在Keil uVision3編譯環(huán)境中直接執(zhí)行,如果鍵盤(pán)輸入“A”,其運(yùn)行的結(jié)果如下所示:按鍵A按下第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 96使用switch開(kāi)關(guān)語(yǔ)句時(shí),需要注意以下幾點(diǎn):1.switch中的變量可以是整型變量,也可以是字符型變量。這樣便于進(jìn)行值的比較。2.每個(gè)分支后break語(yǔ)句必須有,否則將不能跨出開(kāi)關(guān)語(yǔ)句,而將繼續(xù)

50、執(zhí)行其他分支。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 973.case和default后面的分支語(yǔ)句可以是多個(gè)語(yǔ)句構(gòu)成的語(yǔ)句體,但是不需要使用“”括起來(lái)。 4.當(dāng)要求沒(méi)有符合的條件時(shí),可以不執(zhí)行任何語(yǔ)句,即可以省略default語(yǔ)句,而直接跳出該開(kāi)關(guān)語(yǔ)句。5.開(kāi)關(guān)語(yǔ)句可實(shí)現(xiàn)多分支if條件語(yǔ)句相同的功能,但switch開(kāi)關(guān)語(yǔ)句結(jié)構(gòu)更加清晰。 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 989.4.2 循環(huán)語(yǔ)句循環(huán)語(yǔ)句用于需要進(jìn)行反復(fù)多次執(zhí)行若干語(yǔ)句的操作。C51語(yǔ)言中包括3種循環(huán)語(yǔ)句:while語(yǔ)句、

51、do-while語(yǔ)句和for語(yǔ)句。雖然3個(gè)語(yǔ)句都是進(jìn)行循環(huán)操作,但作用和用法不盡相同。在程序中使用循環(huán)語(yǔ)句時(shí),要注意恰當(dāng)?shù)剡x擇合適的循環(huán)語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 99一、while語(yǔ)句while循環(huán)語(yǔ)句的一般形式為: while(表達(dá)式) 語(yǔ) 句; while語(yǔ)句在執(zhí)行時(shí)首先判斷表達(dá)式值是否為值,如果表達(dá)式的值為真,便執(zhí)行一次語(yǔ)句,然后再次判斷表達(dá)式的值,直到表達(dá)式的值被判定為假時(shí),才結(jié)束循環(huán)。while語(yǔ)句結(jié)束后,程序便可以接著執(zhí)行循環(huán)體外的后續(xù)語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10

52、/21/2013 100【例9.20】#include /包含頭文件void main() /主 函 數(shù) int i,s; /聲明變量 i=100;s=0; /初 始 化 while(i0) /while循環(huán),求和 s=s+i; /s累加 i=i-1; /循環(huán)次數(shù)減1 printf(“1+2+100=%dn”,s); /輸出求和結(jié)果程序可在Keil uVision3環(huán)境運(yùn)行,其運(yùn)行的結(jié)果如下:1+2+100=5050第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 101使用while循環(huán)語(yǔ)句時(shí),要注意以下幾點(diǎn):1.while語(yǔ)句的特點(diǎn)是先判斷表達(dá)式即條

53、件,后執(zhí)行語(yǔ)句。這樣可能不執(zhí)行任何語(yǔ)句就退出。2.如果循環(huán)體內(nèi)的語(yǔ)句只有一個(gè),則可以省略。如果由多行構(gòu)成,即語(yǔ)句是語(yǔ)句體時(shí),必須用括起來(lái)。 3.while語(yǔ)句“”后面無(wú)分號(hào)。4.while語(yǔ)句循環(huán)體內(nèi)允許空語(yǔ)句,此時(shí)while語(yǔ)句結(jié)尾需要添加分號(hào)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 102while(ch=getchar=()!=X0D);本例等待鍵盤(pán)輸入字符,直到鍵入回車時(shí),循環(huán)結(jié)束。循環(huán)語(yǔ)句只有表達(dá)式,作為判定條件,而沒(méi)有執(zhí)行語(yǔ)句。5.while語(yǔ)句循環(huán)允許多層循環(huán)嵌套使用。6.使用while循環(huán)語(yǔ)句時(shí),要將表達(dá)式或執(zhí)行語(yǔ)句進(jìn)行適當(dāng)?shù)男?/p>

54、改,使其可以跳出循環(huán),而不至于造成死循環(huán)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 103二、dowhile語(yǔ)句do-while語(yǔ)句的一般形式為:do 語(yǔ)句;while(表達(dá)式); 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 104do-while執(zhí)行時(shí),首先執(zhí)行一次do后面的語(yǔ)句,然后判斷while后的表達(dá)式值是否為真,如果表達(dá)式的值為真,返回再次執(zhí)行do后面的語(yǔ)句,直到表達(dá)式值為假時(shí),才結(jié)束循環(huán)。do-while循環(huán)語(yǔ)句結(jié)束后,程序才可以繼續(xù)執(zhí)行循環(huán)體外的后續(xù)語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)

55、基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 105【例9.21】 #include /包含頭文件void main() /主 函 數(shù) int i,s; /聲明變量 i=100;s=0; /初 始 化 do /do-while循環(huán),求和 s=s+i; /s累 加 i=i-1; /循環(huán)次數(shù)減1 while(i0); /表 達(dá) 式 printf(“1+2+100=%dn”,s); /輸出求和結(jié)果程序可在Keil uVision3環(huán)境運(yùn)行,其運(yùn)行的結(jié)果如下:1+2+100=5050第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 106使用do-w

56、hile循環(huán)語(yǔ)句時(shí),要注意以下幾點(diǎn):1.do-while語(yǔ)句特點(diǎn)是先執(zhí)行一次語(yǔ)句,然后判斷條件。因此,do-while語(yǔ)句至少執(zhí)行一次do后面的語(yǔ)句。2.如果do-while循環(huán)體內(nèi)的語(yǔ)句只有一條,可以省略。如果do-while循環(huán)體內(nèi)由多個(gè)語(yǔ)句構(gòu)成語(yǔ)句體時(shí),必須用括起來(lái),表示成復(fù)合語(yǔ)句的形式。 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 1073.do-while語(yǔ)句中的“”后面無(wú)分號(hào)。4.使用do-while語(yǔ)句時(shí),while(表達(dá)式)后的;不能遺漏。5.使用do-while語(yǔ)句循環(huán),需要注意避免構(gòu)成死循環(huán)。 第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基

57、礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 108三、for語(yǔ)句for語(yǔ)句的一般形式為: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ) 句; 表達(dá)式1一般為賦值語(yǔ)句,給循環(huán)變量進(jìn)行初始化賦值;表達(dá)式2是一個(gè)關(guān)系邏輯表達(dá)式,作為判斷循環(huán)條件的真假;表達(dá)式3定義循環(huán)變量變化方式。當(dāng)表達(dá)式1初始化循環(huán)變量后,由表達(dá)式2和表達(dá)式3確定循環(huán)次數(shù)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 109for語(yǔ)句在執(zhí)行時(shí),首先應(yīng)執(zhí)行表達(dá)式1,再判斷表達(dá)式2是否為真,如果為真,則執(zhí)行一次循環(huán)體內(nèi)部的語(yǔ)句和表達(dá)式3,否則將結(jié)束循環(huán)。for循環(huán)語(yǔ)句結(jié)束后,程序才

58、可以繼續(xù)執(zhí)行循環(huán)體外的后續(xù)語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 110【例9.22】#include /包含頭文件void main() /主 函 數(shù) int i,s; /聲 明 變量 i=100;s=0; /初 始 化 for(i=0;i=100;i+) /for循 環(huán) s=s+i; /表達(dá)式語(yǔ)句 printf(“1+2+100=%dn”,s); /輸出和結(jié)果程序可在Keil uVision3環(huán)境運(yùn)行,其運(yùn)行的結(jié)果如下所示:1+2+100=5050第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013

59、 111使用for循環(huán)語(yǔ)句時(shí),需要注意以下幾點(diǎn):1.for語(yǔ)句3個(gè)表達(dá)式都是可選擇項(xiàng),可以任意缺省,但不能省略。例如for( ; ; )表示一個(gè)無(wú)限循環(huán)。省略表達(dá)式1,即不對(duì)循環(huán)控制變量進(jìn)行初始化賦值。省略表達(dá)式2,即不判斷循環(huán)條件的真假。如果省略表達(dá)式3,即不對(duì)循環(huán)控制變量進(jìn)行操作。2.如果for語(yǔ)句中省略表達(dá)式3,則可以在循環(huán)語(yǔ)句體內(nèi)加入控制循環(huán)變量的語(yǔ)句,從而避免構(gòu)成一個(gè)死循環(huán)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 1123.for循環(huán)語(yǔ)句循環(huán)允許多層循環(huán)嵌套。4.for循環(huán)體中如果只有一條語(yǔ)句,則可省略“”。如循環(huán)體內(nèi)的語(yǔ)句是多個(gè)語(yǔ)句

60、構(gòu)成的語(yǔ)句體,則必須用括起來(lái)。5.for語(yǔ)句“”后面無(wú)分號(hào)。6.for循環(huán)體內(nèi)允許空語(yǔ)句,for語(yǔ)句結(jié)尾需要添加分號(hào)。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 1139.4.3 程序跳轉(zhuǎn)語(yǔ)句程序跳轉(zhuǎn)語(yǔ)句主要用于控制程序執(zhí)行的流程,跳轉(zhuǎn)或轉(zhuǎn)移程序的執(zhí)行順序。在C51語(yǔ)言中,主要包括三種跳轉(zhuǎn)語(yǔ)句:goto語(yǔ)句、break語(yǔ)句和continue語(yǔ)句。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(第二版) 10/21/2013 114一、goto語(yǔ)句goto語(yǔ)句是一個(gè)無(wú)條件的轉(zhuǎn)向語(yǔ)句,其一般形式如下: goto 語(yǔ)句標(biāo)號(hào);其中,語(yǔ)句標(biāo)號(hào)為一個(gè)帶冒號(hào)的有效標(biāo)識(shí)符。在C51中執(zhí)行到這個(gè)語(yǔ)句時(shí),程序指針就會(huì)無(wú)條件地跳轉(zhuǎn)到goto后面的標(biāo)號(hào)所指向的程序段。第9章 單片機(jī)C51語(yǔ)言程序設(shè)計(jì)基礎(chǔ)單片機(jī)原理及接口技術(shù)(

溫馨提示

  • 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)論