版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
——C
語言提高篇單片機原理及應用237.1.1標識符和關鍵字7.1.2C51數(shù)據(jù)類型7.1.34常量與變量C語言編程的基本概念和知識指針與指針變量。若定義變量x,&x即為x的指針,指針變量是指針的指針,若xp=&x,利用*xp即可訪問變量x。16函一數(shù)個函。C數(shù)語由言說程明序部由分一和個函主數(shù)函體數(shù)兩和部若分干組個成其。他函函數(shù)數(shù)說構明成部,分程是序對中函由數(shù)主名函、數(shù)函
數(shù)調類用型其、他形函參數(shù)名,和其形他參函類數(shù)型之等間所也做可的以說相明互。調用。C程序的執(zhí)行是從main()函數(shù)開始,而對該函數(shù)的位置無特殊的規(guī)定。2753849#源in程c序lu文de件(需包要含包處含理其命他令源)程。序一文個件源時文,件應將在另本一程個序源頭文部件用的包全含部命內令容包
#含in進c來lu,de或處者理說。把一個外部文件包含到本文件之中。C#d程e序fin中e的(一宏個定函義數(shù))需。要在調C程用序另中一,個可子以函指數(shù)定時一,標另志一符個去函定數(shù)義應一寫個在常前量面或,字否符則串應。聲明。150主C程函序數(shù)書名寫必格須式為自m由ai,n(一)。行C可程寫序一通個過語函句數(shù)或調幾用個去語執(zhí)句行。指每定個的語工句作結。尾用
“;”結束。1.標識符6標識符是用來表示源程序中自定義對象名稱的符號。其中的自定義對象可以是常量、變量、數(shù)組、結構、語句標號以及函數(shù)等。在C51語言中,標識符可以由字母(a~z,A~Z)、數(shù)字(0~9)和下劃線
“_”組成,最多可支持32個字符。C51標識符的定義不是隨意的,應遵循“簡潔”和“見名知意”的原則,并需要符合一定的規(guī)則:標識符的第一個字符必須是字母或者下劃線,不能為數(shù)字。由于有些編譯系統(tǒng)專用的標識符以下劃線開頭,所以用戶在定義標識符時一般不要以下劃線開頭。C51的標識符區(qū)分大小寫,例如“ch1”和“Ch1”表示兩個不同的標識符。用戶自定義的標識符不能與系統(tǒng)保留的關鍵字重復。2.關鍵字7關鍵字是C51編譯器保留的一些特殊標識符,具有特定的含義和用法。單片機C51程序語言繼承了
ANSI
C
標定義的32個關鍵字,如表7-1所示。表7-1
C51的關鍵字關字用途□明dsaotriunutbtoclte同時C51數(shù)存數(shù)儲據(jù)種類類型說明又結合單片機硬結用雙基構以精本類說度整型明浮型數(shù)局點數(shù)據(jù)部數(shù)變量,缺省值為此件的特點擴展了19個關鍵字:sbwelroelisntacegkh_at_數(shù)程據(jù)序類語型句說明idata構退構長成出成整s最i型fw…內數(shù)itec層lhs選e循選擇環(huán)擇結結構構sfr16
alientryecpgnaeiusdmetefr數(shù)存程據(jù)儲序類種語型類句說明S重枚使w新舉用itc進ChP行語U數(shù)句內據(jù)中部類的寄型選存定擇的義項變量eurcexninterrup
htiueaorrnt
small數(shù)存據(jù)儲程類種序型類語說句明bdata
large聯(lián)單在函合字其數(shù)類節(jié)他返型整程回數(shù)型序數(shù)?;驂K字中符說型明數(shù)了據(jù)的全局變量uncssfolhio_gnotansartttesdk_準存數(shù)據(jù)c類od型e說明無在單短符程精整b號序度型it數(shù)執(zhí)浮數(shù)據(jù)行點過數(shù)程中不可p更d改at的a常量值cosvingfoutoniinrsdeuidneg數(shù)據(jù)程re序e型語nt說句ra明nt無轉構有類向成符x型下f號odr數(shù)一數(shù)a循t據(jù)次,a環(huán)循二結環(huán)進構制數(shù)據(jù)c的o最m高pa位ct為符號位vdsoegilzfosaaebtuoiolileftt數(shù)據(jù)程d運類序a算t型語a符說句明S該構計w變成算itcs量g表hfor語在t達o句轉程式中移序或的結執(zhí)數(shù)失構行據(jù)敗中類選可型擇被的項隱字含節(jié)地數(shù)改變wstdhaiofitliec存程儲序種語類句說明構靜成態(tài)dwi變fo…h(huán)…量ileew和lshedi選loe循擇wh環(huán)結il結e構循構環(huán)語句表7-2列出了Keil
uVision2
C51編譯器所支持的數(shù)據(jù)類型。數(shù)據(jù)類型長度值域表7-2
C51編譯器所支持的數(shù)據(jù)類型unsigfnloeadtchar四單字節(jié)±0~1.127555494E-38~±3.402823E+38signe*d
char1~單3字字節(jié)節(jié)對-12象8~的+地12址7unsigbnited
int雙位字節(jié)0~或615535signsefrd
int單雙字節(jié)0-3~2726585~+32767unsigsnfre1d6
long雙四字節(jié)0~645259345967295signsebditlong四位字節(jié)0-2或1417483648~+214748364781.char字符類型char類型的長度是一個字節(jié),通常用于定義處理字符數(shù)據(jù)的變量或常量。char字符類型分為無符號字符類型(
unsigned
char )和有符號字符類型(
signedchar),默認值為signed
char類型。unsigned
char 類型用字節(jié)中所有的位來表示數(shù)值,可以表達的數(shù)值范圍是
0~
255
;
signed
char 類型中字節(jié)最高位表示數(shù)據(jù)的符號,
“
0
” 表示正數(shù),
“
1
”表示負數(shù)(負數(shù)用補碼表示),所能表示的數(shù)值范圍是-128~+127。unsigned
char常用于處理ASCII字符或小于等于255的整型數(shù)。正數(shù)的補碼與原碼相同,負二進制數(shù)的補碼等于它的絕對值按位取反后加1。說明92.int整型10int整型長度為兩個字節(jié),用于存放一個雙字節(jié)數(shù)據(jù)。分為有符號整型數(shù)
signed
int和無符號整型數(shù)unsigned
int,默認值為signed
int類型。signed
int 表示的數(shù)值范圍是
-32768
~
+32767 ,字節(jié)中最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負數(shù);unsignedint表示的數(shù)值范圍是0~65535。3.long長整型long長整型長度為四個字節(jié),用于存放一個四字節(jié)數(shù)據(jù)。分有符號長整型
signed
long和無符號長整型unsigned
long,默認值為signed
long類型。signed
int 表示的數(shù)值范圍是
-2147483648
~
+2147483647 ,字節(jié)中最高位表示數(shù)據(jù)的符號,
“
0
” 表示正數(shù),
“
1
” 表示負數(shù);
unsigned
long 表示范圍是0~4294967295。5.*指針型指針型數(shù)據(jù)本身是一個變量,在這個變量中存放著指向另一個數(shù)據(jù)的地址。根據(jù)處理器的不同,指針型數(shù)據(jù)所占的內存單元也不盡相同,在C51中它的長度一般為1~3個字節(jié)。4.float浮點型float浮點型在十進制中具有7位有效數(shù)字,是符合IEEE-754標準的單精度浮點型數(shù)據(jù),
占用四個字節(jié)。浮點數(shù)的結構較復雜,單片機使用較少。6.bit位標量bit 位標量是
C51 編譯器的一種擴充數(shù)據(jù)類型,利用它可定義一個位標量,但不能定義位指針,也不能定義位數(shù)組。它的值是一個二進制位,非0即1。定義格式:bit 變量名=變量值。7.sfr特殊功能寄存器sfr是一種擴充數(shù)據(jù)類型,占用一個內存單元,地址范圍為0x80~0xFF。定義格式為:sfr變量名=變量地址。利用它可以訪問51單片機內部的所有特殊功能寄存器。例如,用
“
sfr P1=0x90
”
這一句定P1為P1端口在片內的寄存器。11sbit
P1_1=0x91;8.sfr16
16位特殊功能寄存器sfr16是一種擴充數(shù)據(jù)類型,占用兩個內存單元,sfr16和sfr一樣用于操作特殊功能寄存器,所不同的是,此類型的變量可訪問16為特殊功能寄存器。定義格式:sfr16變量名=變量地址。此處的變量地址為16位中的低8位地址,其地址范圍為0x80~0xFF。通過sfr16變量讀16位特殊功能寄存器時,先讀低字節(jié),后讀高字節(jié);寫特殊功能寄存器時先寫高字節(jié),后寫低字節(jié)。9.sbit可位尋址位sbit是C51中的一種擴充數(shù)據(jù)類型,利用它可以訪問芯片內部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。定義格式:
sbit 變量名
=
位地址;
sbit 變量名
=SFR
地址
^
位序號;
sbit 變量名=sfr16變量^位序號。因P1端口的寄存器是可位尋址的,所以我們可以定義P1_1為P1中的P1.1引腳,同樣我們可以用
P1.1的地址去寫,這樣在以后的程序語句中就可以用P1_1來對P1.1引腳進行讀寫操作了。例如:sbit
P1_1=P1^1;121.常量13常量是在程序運行過程中不能改變的量,如固定的數(shù)據(jù)表、字符等。常量的數(shù)據(jù)類型只有整型、浮點型、字符型、字符串型和位標量。整型常量不同數(shù)據(jù)類型的整型常量表示方法不同,十進制如123,0,-89等;十六進制則以0x開頭如0x34,-0x3B等;長整型就在數(shù)字后面加字母L,如104L,034L,0xF340等。浮點型常量浮點型常量可分為十進制和指數(shù)表示形式。十進制浮點型常量由數(shù)字和小數(shù)點組成,整數(shù)或小數(shù)部分為0,可以省略但必須有小數(shù)點,如0.888,3345.345,0.0等。指數(shù)浮點型常量表示形式為:[±]數(shù)字[.數(shù)字]e[±]數(shù)字
[]中的內容為可選項,如125e3,7e9,-3.0e-3等。1.常量14常量是在程序運行過程中不能改變的量,如固定的數(shù)據(jù)表、字符等。常量的數(shù)據(jù)類型只有整型、浮點型、字符型、字符串型和位標量。(3)字符型常量字符型常量是單引號內的字符,如‘a(chǎn)’,‘d’等。表示不顯示的控制字符,可以在該字符前面加一個反斜杠“\”組成專用轉義字符,常用轉義字符如表7-3所示。表7-3 常用轉義字符表轉義字符含義ASCII
碼(16/10
進制)\\\ot'水空平字制符單表(引符N號(ULHLT)20790HH///3909\\bn"退換格行雙符引(號BLFS)020A28HH//31840\rf\回換車頁反符斜(杠CFFR)050DCH/191321.常量常量是在程序運行過程中不能改變的量,如固定的數(shù)據(jù)表、字符等。常量的數(shù)據(jù)類型只有整型、浮點型、字符型、字符串型和位標量。(4)字符串型常量字符串型常量由雙引號內的字符組成,如“test”,“OK”等。當引號內沒有字符時,為空字符串。在C中字符串常量是做為字符類型數(shù)組來處理的,在存儲字符串時系統(tǒng)會在字符串尾部加上“\0”轉義字符以作為該字符串的結束符。字符串常量“A”和字符常量‘A’是不同的,前者在存儲時多占用一個字節(jié)的空間。151.常量16常量是在程序運行過程中不能改變的量,如固定的數(shù)據(jù)表、字符等。常量的數(shù)據(jù)類型只有整型、浮點型、字符型、字符串型和位標量。(5)位標量位標量是C51編譯器的一種擴充數(shù)據(jù)類型,它的值是一個二進制位,不是0就是1。下面我們來看一些常量定義的例子:#define
False
0x0;//用預定義語句可以定義常量,這里定義False為0,True為1#define
True
0x1;//在程序中用到False編譯時自動用0替換,同理True替換為1unsigned
int
code
a=100;//這一句用code把a定義在程序存儲器中并賦值
const
unsigned
int
c=100;//用const定義c為無符號int常量并賦值以上兩句它們的值都保存在程序存儲器中,而程序存儲器在運行中是不允許被修改的,所以如果在這兩句后面用了類似a=110,a++這樣的賦值語句,編譯時將會出錯。2.變量變量是可以在程序運行過程中不斷變化的量,變量的定義可以使用所有C51編譯器支持的數(shù)據(jù)類型。要在程序中使用變量必須先用標識符作為變量名,并指出所用的數(shù)據(jù)類型和存儲模式,這樣編譯系統(tǒng)才能為變量分配相應的存儲空間。17(1)變量的定義和作用范圍定義一個變量的格式如下:[存儲類型] 數(shù)據(jù)類型 [存儲器類型] 變量名表在定義格式中除了數(shù)據(jù)類型和變量名表是必要的,其他都是可選項。存儲類型不同存儲類型的變量以及不同位置定義的變量具有不同的代碼有效范圍,也就是變量的作用域。在單片機程序中,按照變量的存儲類型,可以分為:自動變量、全局變量、靜態(tài)變量和寄存器變量。2.變量18自動型變量的作用域范圍是函數(shù)或者復合語句變量。序文件的最前面,那么這個變量便是全局變量。一般是靜在態(tài)函變數(shù)量的以內關部鍵或字者s復tat合ic語定句義中,使從用變。量作用的域內來部看。,在靜C態(tài)51變中量,和函自數(shù)動或變復量合類語似句,內作部用定域義只自動變是量定時義,該關變鍵量字的au函to數(shù)可內以部省。略如,果即靜默態(tài)認變?yōu)榱孔远▌恿x型在函在數(shù)程外序部執(zhí),行將過具程有中全,局自的動作變用量域是。動態(tài)分配存儲空間的而。從當內程存序占執(zhí)用行的到角該度變,量靜聲態(tài)明變語量句和時全,局根變據(jù)變量類型自動為其分配存儲空間。當該函數(shù)或者復合語量句類執(zhí)似行,完其畢始后終,占該有變內量存的空存間儲??臻g將立刻自動取消,此時,該自動變量失效,在函數(shù)或者復合語句外部將不能夠使用該變量。以關鍵字register聲明。全局由變于量單有片時機也對稱C為P外U寄部存變器量的。讀寫十分快,因此寄存器變量的操作速度要原高于其他類型的變在量編。譯寄程存序器時變,量全常局用變于量某將一被變靜量態(tài)名地頻分繁配使適用當?shù)那榇鏇r儲,空這間樣。做該可變以量提一高旦系分統(tǒng)配的空運間算,速在度整。個程序運由行于過單程片中機便資不源會有消限失,。程因序此中,只全允局許變同量時對整定個義程兩序個文寄件存都器有變效量,。即如全果局多變于量兩可個以,被在該編程譯序文
時件會中自的動任地何將函其數(shù)他使的用寄。存器變量當做非寄存器
變量來處理。④②寄全存局器變變量量單全片局機變的量C是P以U關寄鍵存字器e中x也ter可n標以識保的存變少量的型,
變如量果,一這個種變變量量定稱義為在寄所存有器函變數(shù)量的。外寄部存,器即變整量個程存儲類型①③自靜動態(tài)變量自動變量是以關鍵字auto標識的變量類型,其19存儲器類型存儲器類型的說明就是指定該變量在C51硬件系統(tǒng)中所使用的存儲區(qū)域,并在編譯時準確的定位。表7-4中是KEIL
uVision2所能認別的存儲器類型。表7-4 存儲器類型存儲器類型說明data直接訪問內部數(shù)據(jù)存儲器(128
字節(jié)),訪問速度最快bdata可位尋址內部數(shù)據(jù)存儲器(16
字節(jié)),允許位與字節(jié)混合訪問idata間接訪問內部數(shù)據(jù)存儲器(256
字節(jié)),允許訪問全部內部地址pdata分頁訪問外部數(shù)據(jù)存儲器(256
字節(jié)),用MOVX@Ri指令訪問xdata外部數(shù)據(jù)存儲器(64KB),用MOVX@DPTR指令訪問code程序存儲器(64KB),用MOVC@A+DPTR指令訪問在AT89C51芯片中RAM只有低
128位,位于80H到FFH的高128位則在52芯片中才有用,并和特殊寄存器地址重疊。說明20如果省略存儲器類型,系統(tǒng)則會按編譯模式small,compact或large所規(guī)定的默認存儲器類型去指定變量的存儲區(qū)域。①small存儲模式small存儲模式將函數(shù)參數(shù)和局部變量放在片內RAM(默認變量類型為DATA,最大128字節(jié))。另外所有對象包括棧都優(yōu)先放置在片內RAM,當片內RAM用滿,再向片外RAM放置。②compact存儲模式compact存儲模式中將參數(shù)和局部變量放在片外RAM(默認存儲類型是PDATA,最大
256字節(jié));通過R0、R1間接尋址。③large存儲模式large存儲模式將參數(shù)和局部變量直接放入片外RAM(默認的存儲類型是XDATA,最大64KB);使用數(shù)據(jù)指針DPTR間接尋址,因此訪問效率較低。21對變量進行絕對定位C51擴展的關鍵字_at_專門用于對變量作絕對定位,_at_使用在變量的定義中,其格式為:[存儲類型] 數(shù)據(jù)類型 [存儲區(qū)] 變量名1
_at_ 地址常數(shù)[,變量名2…]例如:①對data區(qū)域中的
unsigned char變量aa作絕對定位:unsigned
char
data
aa
_at_
0x30;②
對pdata區(qū)域中的
unsigned int數(shù)組cc作絕對定位:unsigned
int
pdata
cc[10] _at_
0x34;③
對xdata區(qū)域中的
unsigned char變量printer_port作絕對定位:unsigned
char
xdata
printer_port
_at_
0x7fff;22對變量進行絕對定位對變量絕對定位的幾點說明:①
絕對地址變量在定義時不能初始化,因此不能對code型常量絕對定位②絕對地址變量只能夠是全局變量,不能在函數(shù)中對變量絕對定位③絕對地址變量多用于I/O端口,一般情況下不對變量作絕對定位④位變量不能使用_at_絕對定位23(2)變量的初始化和賦值變量的初始化變量的初始化是指變量在被說明的同時賦給一個初值。外部變量和靜態(tài)全程變量在程序開始處被初始化,局部變量包括靜態(tài)局部變量是在進入定義它們的函數(shù)或復合語句時才作初始化。所有全程變量在沒有明確的初始化時將被自動清零,而局部變量和寄存器變量在未賦值前其值是不確定的。對于外部變量和靜態(tài)變量,初值必須是常數(shù)表達式,而自動變量和寄存器變量可以是任意的表達式,這個表達式可以包括常數(shù)和前面說明過的變量和函數(shù)。24//定義全程變量,在初始化時f0被清零,f1被賦0.225//定義靜態(tài)局部變量,初始化時i被賦10,j不確定//定義局部變量,初始化時k被賦10*5=50//定義字符型指什變量并初始化float
f0,f1=0.2;main(){static
int
i=10,j;int
k=i*5;char
c='y';}變量的初始化例如:變量的賦值變量賦值是給已說明的變量賦給一個特定值。單個變量的賦值:①整型變量和浮點變量。賦值格式如下:變量名=表達式;例如:int
a,m;a=100,m=20;C語言中允許給多個變量賦同一值時可用連等的方式。說明26main(){{ifnlotaat,bn,;c;an=ba*=mc=*00.;1;//定義局部整型變量a,m//定義局部浮點變量n//給變量賦值//同時給a,b,c賦值}變量的賦值②字符型變量。字符型變量可以用三種方法賦值。例如:main(){char
a0,a1,a2;//定義局部字符型變量a0,a1,a2a0='b';//將字母b賦給a0a1=50;//將十進制數(shù)字2的ASCII值50賦給a1a2='\x0d';//將回車符賦給a2}27287.2.1算術運算符7.2.2關系運算符7.2.3邏輯運算符7.2.4布爾“位”運算符7.2.5賦值運算符7.2.6遞增/遞減運算符7.2.729運算符的優(yōu)先級單片機C程序的運算符和表達式如下:②關系運算符6個>==<=<>=!=①算術運算符13個-
*/*=%/=+=%=+=++-=--③邏輯運算符3個&&(整體與)||(整體或)?、芪徊僮鬟\算符7個>>
<<&(按位變量與)
^~ &(取地址)⑤指針運算符:
*30算術運算符是執(zhí)行算術運算時的操作符,包括四則運算和取模運算符,如表7-5所示。表7-5 算術運算符符號作用舉例解釋+加A=x+yA的值為變量x與y之和-減B=x-yB的值為變量x與y之差*乘C=x*yC的值為變量x與y之積/除D=x/yD的值為變量x與y值商%取余數(shù)E=x%yE的值為變量x與y的余數(shù)31關系運算符用來對兩個變量的大小進行判斷的,如表7-6所示。32表7-6 關系運算符符號作用舉例解釋==相等x==y比較x與y變量的值是否相等,相等則結果為1,不相等結果為0!=不相等x!=y比較x與y變量的值是否相等,不相等則結果為1,相等則結果為0>大于x>y若x變量的值大于y變量的值,其結果為1,否則為0。<小于x<y若x變量的值小于y變量的值,其結果為1,否則為0。>=大于等于x>=y若x變量的值大于或等于y變量的值,則結果為1,否則為0。<=小于等于x<=y若x變量的值小于或等于y變量的值,則結果為0。邏輯運算符就是執(zhí)行邏輯運算功能的操作符號,包括與(AND)、或(OR)、非(NOT),邏輯運算的最終結果為真(值為1)或假(值為0),如表7-7所示。33表7-7 邏輯運算符符號作用舉例解釋==相等x==y若x變量的值大于y變量的值,且y變量的值也大于z變量的值,其結果為真(值為1),否則為假(值為0)||或運算(x>y)||(y>z)若x變量的值大于y變量的值,或y變量的值也大于z變量的值,其結果為真(值為1),否則為假(值為0)!非運算!(x>y)若x變量的值大于y變量的值,其結果為真(值為1),否則為假(值為0)布爾“位”運算符與邏輯運算符比較相似,不同之處在于邏輯運算的最終結果為真或假,而布爾“位”運算符的結果是一個具體數(shù)據(jù)。布爾“位”運算符如表7-8所示。表7-8布爾“位”運算符34符號作用舉例解釋&與運算A=x&y變量A的結果為將x與y變量的每個位進行AND運算|或運算B=x|y變量B的結果為將x與y變量的每個位進行OR運算^異或運算C=x^y變量C的結果為將x與y變量的每個位進行XOR運算~取反運算D=~x變量D的結果為將x與y變量的每個位進行取反運算<<左移運算E=x<<n變量E的結果為將變量x值左移n位。>>右移運算F=x>>n變量F的結果為將變量x值右移n位。賦值運算符包括“=”運算符,還有算術運算符,邏輯運算符等,如表7-9所示。35表7-9 賦值運算符符號作用舉例解釋&==賦賦值值與GA&=x=x將G變量的值與變量x的值進行AND運算,其結果存入G變量中,功能將x變量的值賦給變量A中相當于G=G&x+|
=賦值加或BH+|==x將BH變量的值與x變量的值相進加行,OR和運存算存,到結變果量存B入當H中變,量功中能,相功當能于相當B于=HB=+Hx&x^-
=賦賦值值異減或CI^-=x將CI變量的值與x變變量量的的值值進相行減X,O差R運存算存,到結變果量存C當入中I變,量功中能,相功當能于相當C于=IC=+I^xx<*<==左賦移值賦乘值JD<*<==xn將DJ變變量量的的值值左與移x變n位量,的其值功相能乘與,J積=J存<<入n相D當變量當中,功能相當于D=D*x>/>==右賦移值賦除值KE>/>==xn將EK變量的值除右于移變n位量,x,其商功存能入與到K=變K量<<En當相中當,功能相當于E=E/x%=賦值取余F%=x將F變量的值除于x變量,余數(shù)存入F變量中,功能相當于F=F%x遞增/遞減運算符也是一種比較有效的運算符,包括自增與自減運算符,如表7-10所示。表7-10 遞增/遞減運算符符號作用舉例解釋+
+自加1x++將x變量的值自加1--自減1x--將x變量的值自減136運算符的優(yōu)先級如表7-11所示。37表7-11 運算符的優(yōu)先級優(yōu)先級運算符或提示符解釋81(、&
)布小爾括“號位”AND運算符92~^、!布取爾補“碼位、”X反O相R運算符130+
+、|
--布自爾加“1位,”自O減R運1
算符141*、&/、&
%邏乘輯、運除算、符取A余N數(shù)D152+、||
-邏加輯、運減算符OR6<<、>>=、*=、/=、%=、+=、-=、左移、右移137<<=、>>=、&=、^=、|=<、>、<<=、>>=、==、!=賦值運算符關系運算符387.3.1循環(huán)指令7.3.239選擇指令循環(huán)指令就是將程序流控制在指定的循環(huán)里,直到符合指定條件才結束循環(huán),繼續(xù)往下執(zhí)行。Keil
C所提供的循環(huán)指令有for語句、while語句、do-while語句。}例如:}for(int
i=0;i<8;i++)for(int
x=100;x>0;x--)for(;;);123.前后計數(shù)條件循環(huán)循環(huán)dwfoohr-i語lwe句h語il是句e語一將句個判提很斷供實條先用件執(zhí)的放行計在再數(shù)語判循句斷環(huán)之的,前功其,能格稱,式為稱如前為下條后:件條循件環(huán)循,環(huán)其,格其式格如式下如:下:
dwfoohri(l表{e(達表…式達…1式;表)達式2;表達式3){
……{
指……令指;令;[指br令[eba;rke]a;k];[…b…re…a…k];}…w…h(huán)ile(表達式);40選擇指令的功能是根據(jù)條件決定程序的流程,Keil
C所提供的選擇指令有
if-else語句及switch-case語句。指令區(qū)域1;}else{……}else
if(表達…式…2)41{ 指令區(qū)域2;
}else if(表達式3)指令區(qū)域2;{ 指令區(qū)域3;
}else
{ 指令區(qū)域4;
}圖7-2
if-else
條件判斷多重選擇流程圖圖7-1
if-else條件選擇流程圖1.條件選擇if-的el多se重語條句件提判供斷條語件句判如斷下的,語其句流,程稱圖為如條圖件7選-2所擇示語。句,其格式(如下)與流程圖(如圖7-1):if(表達式)
i{f(表達式1){……指令區(qū)域1;
}2.多分支選擇switch-case語句提供多重選擇,就像是波段開關一樣,稱為多分支選擇語句。這種選擇方式不會有優(yōu)先等級的問題,其格式如下,switch-case語句的流程圖如圖7-3所示。switch(表達式){case(常數(shù)1);{ 指令區(qū)域1;}break;case(常數(shù)2):{指令區(qū)域2;}break;……default:{指令區(qū)域n;}
break;}圖7-3
switch-case多重選擇流程圖4243數(shù)組(array)是一種將同類型數(shù)據(jù)集合管理的數(shù)據(jù)結構,而指針(Pointer)是存放存儲器地址的變量,因此,數(shù)組與指針可謂是數(shù)據(jù)管理的好幫手。組1.數(shù)組數(shù)若組不也知是道一數(shù)種組變的量大,小將可一不堆填相數(shù)同組數(shù)大據(jù)小形,態(tài)而的由變程量序,來
處以理一,個例相如同:的變量名稱來表示。既然是一種變量,使用之前c就h得ar聲st明rin,g其1[]聲=明"w格e式lco如m下e:to
hua
dong
jiao
da
ligong數(shù)x據(jù)u類e
y型uan數(shù)"組名[數(shù)組大小]如例果如聲明整一數(shù)個(含有int5)個或字浮符點的數(shù)數(shù)(組f:loacth)ar數(shù)L組PC,[5也];要指定這其個初數(shù)始組值包,括可L利P用C[大0]~括L號P實C[現(xiàn)4],等語5個句字如符下,:是字符的數(shù)組i,nt相N當um于[常6]說={的30“,2字2,3符3串,44”,55。,6但6}是;
Keil
C
沒有“
字符串”若數(shù)要據(jù)定類義型多,維所數(shù)以組用,字可符以數(shù)按組如來下代形替式字:符串變量。數(shù)聲據(jù)明類數(shù)型組的同數(shù)時組也名可[以數(shù)賦組初大值小,1如][數(shù)組大小ch2a]r……[數(shù)
L大P小C[n5]];="ABCD"如經(jīng):過上int述N聲u明m后[3,][2L]P=C{{[100]=,1A1,},L{1P2C,1[13]}=,{B1,4,L1P5C}}[;2]=C,LPC[3]=D,LPC[4]="\0"。442.指針45執(zhí)指行針以是上用語來句存后放,存儲a變器量地的址地的址變就量被,放既入然p是tr1變指量針,變使量用。前當均然需,要這先些定操義作才主能要使是用針。對數(shù)組,通常會先取得數(shù)組的第一個元素的地址,如ptr1=&Num[0][0];數(shù)執(zhí)據(jù)行類以型上語*句變后量,名N稱u;m數(shù)組的首地址將被放入ptr1指針變量。若要將Num通[0常][0指]內針容都輸采出用到整P數(shù)2口數(shù),據(jù)可類執(zhí)型行,例如要聲明一個名為ptr的指針,語句如下:
iPn2t=*Nputrm;[0][0];或也以可指以針將變同量類的型方的式變實量現(xiàn)與以指上針操放作在,一語起句聲如明下,:語句如下:
iPn2t=*ptrr1;*ptr2,a,b,c;同與理指,針若息要息將相關Nu的m運[1算][1符]的是內“容&”賦,值該給運P2算,符語的句功如能下是:取變量的地址,運算符可以將P2指=定Nu的m變[1量][1的];地址放入指針變量,以便后續(xù)操作,語句如下:p或t以r1=指&針a變;
量的方式實現(xiàn)以上操作,語句如下:P2=*(ptr1+3);46函數(shù)(Function)和中斷子程序都屬于子程序。也可以稱函數(shù)為子程序,稱中斷子程序為中斷函數(shù)。1.函數(shù)函數(shù)的結構與主程序的結構類似,不過函數(shù)還能傳入自變量,其結構如下:void Sub_name(int
x){
……int i,
j
;/*關閉LED*/unsigned
char
LED;……LED=0xff;……
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年商業(yè)廣告燈箱安裝施工合同
- 2025年度大曰金地產(chǎn)樓盤銷售代理合同全案策劃執(zhí)行合同4篇
- 2025年私人住房買賣合同書含物業(yè)管理服務條款范本2篇
- 2025年度高端鈦礦資源批量采購合同
- 二零二五版鍋爐設備買賣合同附安全使用操作手冊3篇
- 2025年度醫(yī)療設備租賃合同擔保與維修保養(yǎng)服務范本4篇
- 二零二五年度屋頂防水隔熱一體化合同
- 2025年BEC商務英語專業(yè)課程研發(fā)與授權使用合同3篇
- 二零二五版智慧城市基礎設施用地租賃合同3篇
- 預應力專項施工方案
- GB/T 18101-2013難燃膠合板
- 根因分析(huangyan)課件
- 圓形蓄水池工程量及配筋Excel計算
- 浙教版初中科學八下《表示元素的符號》課件
- 總住院醫(yī)師管理制度
- 八年級上冊歷史 第二單元 社會主義制度的建立與社會主義建設的探索
- DB31T 360-2020 住宅物業(yè)管理服務規(guī)范
- 園林綠化工程大樹移植施工方案
- 應收賬款最高額質押擔保合同模版
- 基于新型光彈性實驗技術的力學實驗教學方法探索
- 訴前車輛保全申請書(5篇)
評論
0/150
提交評論