第5講單片機(jī)C語言程序設(shè)計(jì)(3)解析_第1頁
第5講單片機(jī)C語言程序設(shè)計(jì)(3)解析_第2頁
第5講單片機(jī)C語言程序設(shè)計(jì)(3)解析_第3頁
第5講單片機(jī)C語言程序設(shè)計(jì)(3)解析_第4頁
第5講單片機(jī)C語言程序設(shè)計(jì)(3)解析_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2Chuzhou University.Ar)hui,ChinaHTTP:/HTTP:/第五講 單片機(jī)c語皆程序設(shè)計(jì)(3)單片機(jī)原理與應(yīng)用Single Chip Conuter Principle and AlicaticMi滁州學(xué)院計(jì)算機(jī)與信息工程學(xué)院 于紅利Chuzhou Universityr)hui,China一、C51語言的基本運(yùn)算與流程控制語句二、C51語言的構(gòu)造函數(shù)類型三、C51語言設(shè)計(jì)的其他問J教學(xué)目標(biāo)掌握:C51語言的基本運(yùn)算與流程控制語句理解:C51語言的基本結(jié)構(gòu)與構(gòu)造數(shù)據(jù)類型了解:C51語言程序設(shè)計(jì)的其他問題Chuzhou UniversityAnhui,ChinaHTT

2、P:/3仁C51的基本運(yùn)算一.C51語言的基本運(yùn)算與控制語句,C51的基本運(yùn)算包括算術(shù)運(yùn)算.關(guān)系運(yùn)算.邏輯運(yùn)算、位運(yùn)算和幅值運(yùn)并及表達(dá)式等。(1)算術(shù)運(yùn)算符C51中支持的算術(shù)運(yùn)算符有:4Chuzhou UniversityAnhui,ChinaHTTP:/運(yùn)算符號(hào)功能+加或取正值運(yùn)算符減或取負(fù)值運(yùn)算符乘運(yùn)算符/除運(yùn)算符%取余運(yùn)算符+自增加運(yùn)算符 自減運(yùn)算符注:若相除兩個(gè)數(shù)為浮點(diǎn)數(shù),則結(jié)果 也為浮點(diǎn)數(shù),若相除的兩個(gè)數(shù)為整數(shù),則 結(jié)果也為整數(shù)。如25.0/20.0=1.25.而 25/20=1 o時(shí)丁取余運(yùn)算,則要求參加運(yùn)算的兩 個(gè)數(shù)必須為整數(shù),如:5%3=2o(2)關(guān)系運(yùn)算符C51中有6種關(guān)系運(yùn)

3、算符:Chuzhou Univer引ty“Anhui,ChinaHTTP:/運(yùn)算符號(hào)大于=大于等于=I等于!=不等于(3)邏輯運(yùn)算符關(guān)系運(yùn)算用于比較兩個(gè)數(shù)的人小,關(guān)系衷達(dá)式的值為邏輯值0,1之一。HTTP:/工力C51有3種邏輯運(yùn)算符:|(邏輯或)、齦(邏輯與)、!(邏輯非)邏輯運(yùn)算符則用于求條件式的邏輯值,用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式了就是邏輯農(nóng)達(dá)式。(4)位運(yùn)算符運(yùn)算符號(hào)功能&按位與I按位或A按位異或!按位取反位左移位右移位運(yùn)算是按位對(duì)變 量進(jìn)行運(yùn)算,并不改變 參與運(yùn)算的變量的值。注:C51中位運(yùn)篦符只能對(duì)幣和字符熨數(shù)據(jù)操作,不能對(duì)浮點(diǎn)數(shù)進(jìn)行操作。;:(5)賦值運(yùn)算符將一個(gè)

4、數(shù)據(jù)的值賦給一個(gè)變疑。*在C51中,賦值運(yùn)算符“才變量二表達(dá)式;執(zhí)行時(shí)先計(jì)笄出右邊農(nóng)達(dá)式的值,然后賦給左邊的變量。例如:x=8+9;廣將8+9的值賦紿變量汐賦值符號(hào)前加上其他運(yùn)算符構(gòu)成符合運(yùn)算符號(hào),如卜:Z+= 加法賦值-+減法賦值*=乘法賦值/=除法賦值%= 取模賦值&=邏輯與賦值|= 邏輯或賦值八=邏輯異或賦值=邏輯非賦值=右移位賦值=左移位賦值丿賦值運(yùn)算中,若“二”兩側(cè)數(shù)據(jù)類型不一致,系統(tǒng)自動(dòng)絡(luò)右側(cè)表達(dá)式換成左側(cè)類型.HTTP:/Chuzhou UniversitynhuiXnaC51程序基本結(jié)構(gòu)與構(gòu)造函數(shù)類型C51的基本結(jié)構(gòu)(1)順序結(jié)構(gòu)順序結(jié)構(gòu)是最基本、最簡單 的結(jié)構(gòu),在這種結(jié)構(gòu)中,

5、程序由 低地址到高地址依次執(zhí)行,如圖 給出順序結(jié)構(gòu)流程圖,程序先執(zhí) 行A操作,然后再執(zhí)行B操作。順庁結(jié)構(gòu)流程圖8Chuzhou UniversitynhuiXnaHTTP:/【例1】計(jì)算半徑為r的岡面積、球體積。# include # define PI 3.1415926Void main()float r,sfv; scanf(“f,&r); S=PI*r*r;V=4.0/3.0*r*r*r;PrintfC 圓面積:%f,s);Printf(“ 球體積:f:v); HTTP:/Chuzhou University“Anhui,China在C51中,實(shí)現(xiàn)選擇結(jié)構(gòu)的語句為if/else, if

6、/else if語句。另外在C51中 還支持多分支結(jié)構(gòu),多分支結(jié)構(gòu)既可以通過if和else if語句嵌套實(shí)現(xiàn),可用 swith/case語句實(shí)現(xiàn)。個(gè)分支,如圖4.4。分支結(jié)構(gòu)語句有if和switch兩種。/ if語句(1) if(2) if(表達(dá)式)語句仁else語句2例如:輸入一個(gè)整數(shù),判斷是奇數(shù)還是偶數(shù)。# include int main(void)(3) if (衣達(dá)式)語句else if語句2;int number;tot o vt*vKo* ft*Chuzhou University,AnhuiChinaHTTP:www.chzu.eckj.tn例2計(jì)算如下分段函數(shù)。# inclu

7、de int main(void)04x2.5x- 10.5x 5double x, y; printf(ftEnter x:M);scanf(M%ir &x);if(xO)y = O;else if(X = 15) v = 4 * x / 3; else y = 2.5 * x - 10.5;printf(Mf(%.2f) = %.2fnf x, y); return 0;if語句的幾種形式:if形式.if.else形式.多選擇if語句形式。(表達(dá)式)語句;若表達(dá)式為真,則運(yùn)行if語句,否則,接著執(zhí)行。/ switch 語句switch(表達(dá)式)case常量表達(dá)式1:語句段1:case常量表

8、達(dá)式2:語句段2: case常量農(nóng)達(dá)式n:語句段n;default:語句段n+114Chuzhou University,Anhui,ChinaHTTP:/Chuzhou University,Anhui,ChinaHTTP:/3)循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)在程序處理過程中,有時(shí)需 要某一段程序壷復(fù)執(zhí)行多次,這 時(shí)就需要循環(huán)結(jié)構(gòu)來實(shí)現(xiàn),循環(huán) 結(jié)構(gòu)就是能夠使程序段重復(fù)執(zhí)行 的結(jié)構(gòu)。循環(huán)結(jié)構(gòu)又分為兩種 當(dāng)(while)型循環(huán)結(jié)構(gòu)和直到(do.while)型循環(huán)結(jié)構(gòu)。(1)當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)如右圖,當(dāng)條 件P成立(“真”)時(shí),重復(fù)執(zhí)行語 句A,當(dāng)條件不成立(“假”)時(shí)才 停止直復(fù),執(zhí)行后面的程序。H

9、TTP:/15【例3】(2)直到型循環(huán)結(jié)構(gòu) 直到型循環(huán)結(jié)構(gòu)如右圖, 先執(zhí)行語句A,再判斷條件P, 當(dāng)條件成立(為“真”)時(shí), 再貞復(fù)執(zhí)行語句A,直到條件 不成立(為“假”)時(shí)才停 止重復(fù),執(zhí)行后面的程序。直到型循環(huán)結(jié)構(gòu)此外,循環(huán)結(jié)構(gòu)的語句還有:for、goto等。編程序用do.while語句,求2+4+6.+100的和。# include Void main()int k=2s=0;do s=s+k;k=k+2;while (k=100);printf(2 +4+.+100=%d;s); Chuzhou Univer引ty“Anhui,ChinaHTTP:/數(shù)組中各:胳 1數(shù)組兀索類空2C51

10、構(gòu)造數(shù)據(jù)類型標(biāo)識(shí)符元索個(gè)數(shù)數(shù)組的數(shù)組長度,給數(shù)組兀維數(shù)組E數(shù)組只有一個(gè)下弗定義的形:I下:數(shù)據(jù)類型說明符 勉組名常量表達(dá)式=初值,前值)1素賦初直Chuzhou UniversityAnhuiXnsHTTP:/注意:C51語言中數(shù)組的下標(biāo)是從0開始的,T、 的5個(gè)元素分別是:刈0刈4。的3個(gè)元素分 別是:y0=1; y1=2: y2=3oC51規(guī)定在引用數(shù)組時(shí),只能逐個(gè)引用數(shù)組中 的各個(gè)元素,而不能次引用整個(gè)數(shù)組。但如Chuzhou Univer引ty“Anhui,ChindHTTP:/例4用數(shù)組計(jì)算并輸出Fibonacci數(shù)列的前20項(xiàng)。例如:下面是定義數(shù)組疝 unsigned char x

11、5; unsigned int y3= 定義了一個(gè)無符號(hào)字 定義了一個(gè)無符號(hào)整義的同時(shí)給數(shù)組中的三很孕是字符數(shù)組則可以次引用整個(gè)數(shù)組。-Fibonacci數(shù)列在數(shù)學(xué)和計(jì)算機(jī)算法中十分有用。Fibonacci數(shù)列是這樣的 組數(shù):第一個(gè)數(shù)字為0,第二個(gè)數(shù)字為仁之后每個(gè)數(shù)字都是前兩個(gè)數(shù)字之和。設(shè)計(jì)時(shí)通過數(shù)組存放Fibonacci數(shù)列,從第三項(xiàng)開始町通過累加的方 法計(jì)算得到。程序如下:#include 包含特殊功能寄存器庫#include 包含I/O函數(shù)庫main()int fib20,i;fibO=O;fib1=1;for (l=2;i20;i+) fibi=fibi-2+fibi-1;for (i

12、=0;i20;i+)if (i%5= =0) printf(lnM);printf(“6d:fibi);while(1);程序執(zhí)行結(jié)果:0112358132134558914423337761098715972584414819Chuzhou UniversiAnhui,HTTP:/字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組稱為字符數(shù)組,是一種常用的數(shù)組。在C51語 言中,字符數(shù)組用于存放一組字符或字符串,字符串以“0作為結(jié)束符,只 存放一般字符的字符數(shù)組的賦值與使用和一般的數(shù)組完全相同 例如:char string110;char string220;上面定義了兩個(gè)字符數(shù)組,分別定義了 10個(gè)元素和20

13、個(gè)元索。20Chuzhou Universitynhui,ChinaHTTP:/3.指針變量的定義指針變量所指 向的變量類型指針變量的定義與一粵箏匍$義類似,定義的一般形式為:數(shù)據(jù)類型說劇1存儲(chǔ)器類型.指針變量名;23Chuzhou Universitynhui,ChinaHTTP:/可選項(xiàng),是C5I編譯器的一種擴(kuò)展。若帶此選項(xiàng),指針被定義為基 于存儲(chǔ)器的指針。否則定義為一般指針,這兩種扌旨針的區(qū)別在于它 們占的存儲(chǔ)字節(jié)不同。下面是兒個(gè)指針變量定義的例子:int *p1;廣定義一個(gè)指向整型變量的指針變p17char *p2;廣定義一個(gè)指向字符變量的指針變p27char data * p3;廣定

14、義一個(gè)指向字符變量的指針變量p3,該指針訪問 的數(shù)據(jù)在片內(nèi)數(shù)據(jù)存儲(chǔ)器中,該指針在內(nèi)存中占一個(gè)字節(jié)/float xdata * p4;廣定義一個(gè)指向字符變量的指針變量p4,該指針訪問的數(shù)據(jù)在片外數(shù)據(jù)存儲(chǔ)器中,該指針在內(nèi)存中占兩個(gè)字節(jié)/變量使用時(shí)注恵兩個(gè)運(yùn)算符:&和J其中:“&是取地址運(yùn)算符,是指針運(yùn)算符。通過取地址運(yùn)算符可以把一個(gè)變量的地址送給指針變量,使抬針變量指向該變量;通過“指針運(yùn)算符可以實(shí)現(xiàn)通過指針變量訪問它所指向的變量的值。指針變量經(jīng)過定義之后町以彖其他基本類型變量樣引用。例如:int x, * px, * py;廣變量及指針變量定義*/px=&x:廠將變量x的地址賦給指針變Mpx,使

15、px指向變雖:x*/* px=5;廣等價(jià)于x=57py=px;廣將指針變量px中的地址賦給指針變量py,使py也指向x*/例5輸入兩個(gè)整數(shù)x與y,經(jīng)比較后按大小順庁輸出。include 包含特殊功能寄存器庫#include 包含I/O函數(shù)庫 extern serialjnitial();main()int x,y;int * p,* p1,* p2;serial_initial();pintf(uinput x and y:nn);sea nf(u%d%d,&x, & y);p1=&x;p2=&y;if (xy) p=p1;p1=p2;p2=p; printf(umax=%d1min=%dn,

16、*p1t*p2);while(1);程序執(zhí)行結(jié)果:input x and y:4 8max=8,min=423Chuzhou University,Anhui,ChinaHTTP:/三、C51語言設(shè)計(jì)的其他問題;1 :幾類垂要的庫函數(shù) 專用寄存器包文件reg51. h(reg52. h): 絕對(duì)地址包含文件absacc. h: 動(dòng)態(tài)內(nèi)存分配函數(shù),位于stdlib.h文件中。 緩沖區(qū)處理函數(shù),位于string, h文件中,包括復(fù)制、移動(dòng)、比較 等函數(shù),這樣便于對(duì)緩沖區(qū)進(jìn)行處理。 輸入/輸出流函數(shù),位于stdio.h文件中,流函數(shù)通過51單片機(jī)的 串口或用戶定義的I/O讀寫數(shù)據(jù),默認(rèn)為51單片機(jī)的串口。Chuzhou University,Anhui,ChinaHTTP:/ sb* - 2!AiuIE9Hk9io語言程序設(shè)計(jì)C51語言的基本運(yùn)算與流程控制語句C51語言的構(gòu)造函數(shù)類型1C51語言設(shè)計(jì)的其他問題HTTP:/作業(yè)Chuzhou Universitynhui

溫馨提示

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