第4章511學時_第1頁
第4章511學時_第2頁
第4章511學時_第3頁
第4章511學時_第4頁
第4章511學時_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第4 4章章 c51c51程序設計入門程序設計入門 * * c51 c51的基本數據類型的基本數據類型 * * c51c51數據的數據的存儲類型存儲類型 * * c51c51的運算符的運算符 * * 數組數組 * * c51 c51的程序的結構的程序的結構 * * 程序的流程控制程序的流程控制 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編c-51c-51簡介簡介c c語言特點語言特點:本身不依賴于機器硬件系統(tǒng);本身不依賴于機器硬件系統(tǒng); 基本上不作修改就可互相移植;基本上不作修改就可互相移植; 提供數學函數、支持浮點運算;提供數學函數、支持浮點運算; 增加程序可讀性

2、和可維護性。增加程序可讀性和可維護性。 mcs-51mcs-51單片機的單片機的c c語言要采用語言要采用c51c51編譯器,目前最常用的是編譯器,目前最常用的是keil c51keil c51。c c源程序源程序c51c51編譯器編譯器l51l51(或(或bl51bl51)連接)連接/ /定位定位生成生成 .hex.hex目標程序目標程序流程流程 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編c51c51優(yōu)點優(yōu)點 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編類型類型符號符號關鍵字關鍵字所占所占位數位數數的表示范圍數的表示范圍整整型型有有(si

3、gned) int16-3276832767有有(signed) long int32-21474836482147483647無無unsigned int16065535有有unsigned long int3204294967295實實型型有有float323.4e-383.4e38無無double641.7e-3081.7e308字符字符型型有有char8-128127無無unsigned char80255位型位型無無bit10或或14.1 c51的基本數據類型的基本數據類型 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編4.2 c514.2 c51數據的存儲類

4、型數據的存儲類型數組型數組型 指針型指針型名名存儲空間位置存儲空間位置 位數位數范圍范圍說說 明明datadata直接尋址片內直接尋址片內ram8 80 0127127片內片內ram ram 00-7fh00-7fh的的128128個個字節(jié),訪問速度最快字節(jié),訪問速度最快bdatabdata可位尋址片內可位尋址片內ram 1 10/10/1位尋址片內位尋址片內ram20ram202fh,2fh,位與字節(jié)可混合訪問位與字節(jié)可混合訪問idata idata 間接尋址片內間接尋址片內ram 8 80 025525500-ffh00-ffh的的128128個片內個片內ram,ram,及及5252子系列

5、的高子系列的高128128字字節(jié)內部節(jié)內部ramram。訪問方式:。訪問方式:mov a, rimov a, ripdatapdata片外頁片外頁ram 8 80 0255255尋址片外尋址片外ram ram 低低256256字節(jié)字節(jié), ,由由movx a,rimovx a,ri訪問訪問xdataxdata片外片外ram ram 16160 06553565535片外片外ramram全部全部64kb,64kb,由由movx a,dptrmovx a,dptr訪問訪問code code 程序程序rom 16160 06553565535romrom區(qū)全部區(qū)全部64kb,64kb,由由movc a

6、movc a,a+dptra+dptr訪問訪問 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編存儲模式存儲模式說說 明明small默認默認datadata,參數及局部變量放入可,參數及局部變量放入可直接尋址片內直接尋址片內ramram的用戶區(qū)中的用戶區(qū)中( (最大最大128128字節(jié)字節(jié)) )。另外所有對象。另外所有對象( (包括堆棧包括堆棧) ),都必須嵌入片內,都必須嵌入片內ramram。compact默認默認pdatapdata,參數及局部變量放入分頁的,參數及局部變量放入分頁的外部數據存儲區(qū)外部數據存儲區(qū),通過通過r0r0或或r1r1間接訪問,棧空間位于片內數據

7、存儲區(qū)中。間接訪問,??臻g位于片內數據存儲區(qū)中。large默認默認xdataxdata,參數及局部變量直接放入,參數及局部變量直接放入片外數據存儲區(qū)片外數據存儲區(qū),使用數據指針,使用數據指針dptrdptr來進行尋址。用此數據指針進行訪問效率較低,尤其對兩個或多來進行尋址。用此數據指針進行訪問效率較低,尤其對兩個或多個字節(jié)的變量,這種數據類型的訪問機制直接影響代碼的長度。個字節(jié)的變量,這種數據類型的訪問機制直接影響代碼的長度。建議首先選用建議首先選用small c51c51數據的存儲模式(編譯模式)數據的存儲模式(編譯模式) 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授

8、編 = = = (大于(大于 大于等于大于等于 小于小于 小于等于)小于等于)= != = != (測試等于(測試等于 測試不等于)測試不等于)& | ! & | ! (邏輯與(邏輯與 邏輯或邏輯或 邏輯非邏輯非 )4.3 c514.3 c51的運算符的運算符 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編 四川省精品課單片機原理與應用自增、自減運算符自增、自減運算符 自增運算符;自增運算符;- - -自減運算符。自減運算符。j+ j+ 表示先取值,后加表示先取值,后加1 1。 相當于相當于j jj j1 1;j- j- 表示先取值,后減表示先取值,后減

9、1 1。 相當于相當于j jj-1j-1;復合運算符復合運算符a+=b; a+=b; 等價于等價于a aa+ba+bx x* *=a+b; =a+b; 等價于等價于x xx x* *(a+b)(a+b)a&=b; a&=b; 等價于等價于a aa&ba&b相當于第相當于第1 1個變量的值等于把等號去掉的運算。個變量的值等于把等號去掉的運算。4.4 4.4 數組數組n一維數組的定義一維數組的定義數據類型數據類型 數組名常量表達式;數組名常量表達式; 例:例:unsitned int a10;n它表示定義一個無符號整形數組名為它表示定義一個無符號整形數組名為a a,

10、此,此數組有數組有1010個元素。個元素。 四川省精品課單片機原理與應用n說明:說明:1) 數組名后是用方括弧括起來的常量表達式,不數組名后是用方括弧括起來的常量表達式,不能用圓括弧。下面用法不對:能用圓括弧。下面用法不對:int a(10)int a(10);2) 2) 常量表達式表示元素的個數,即數組長度。常量表達式表示元素的個數,即數組長度。例,在例,在a a1010中,中,1010表示表示a a數組有數組有1010個元素,下標個元素,下標從從0 0開始,開始,a a0 0,a a1,1,a a9 9。 注意不能使用數組元素注意不能使用數組元素a a1010;3) 3) 常量表達式中可以

11、包括常量和符號常量,不能包常量表達式中可以包括常量和符號常量,不能包含變量。也就是說,含變量。也就是說,c51c51不允許對數組的大小作動不允許對數組的大小作動態(tài)定義,即數組的大小不依賴于程序運行過程中態(tài)定義,即數組的大小不依賴于程序運行過程中變量的值。變量的值。 例:例:unsigned char i; unsigned char i=10;unsigned char i; unsigned char i=10; ai; ai; 錯誤錯誤定義定義 ai; ai; 正確定義正確定義 四川省精品課單片機原理與應用一維數組的初始化一維數組的初始化對數組元素的初始化可以用以下方法實現:對數組元素的初

12、始化可以用以下方法實現:1)1)在定義數組時對數組元素賦以初值。例在定義數組時對數組元素賦以初值。例: :int aint a1010=0=0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9;9; 2) 2) 可以只給一部分元素賦值。可以只給一部分元素賦值。例例: :int aint a1010=0=0,1 1,2 2,3 3,4;4; 定義定義a a數組有數組有1010個元素,但花括弧內只提供個元素,但花括弧內只提供5 5個個初值,這表示只給前面初值,這表示只給前面5 5個元素賦初值,后個元素賦初值,后5 5個個元素值為元素值為0 0。 四川省精品課單片機原理與應用3)

13、3) 如果想使一個數組中全部元素值為如果想使一個數組中全部元素值為0 0,可以寫成,可以寫成int aint a1010=0=0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0;0; 不能寫成不能寫成int aint a1010=0=0* *10;10;4) 4) 對全部數組元素賦初值時,可以不指定數組長度。對全部數組元素賦初值時,可以不指定數組長度。 例例: :int aint a5 5=1=1,2 2,3 3,4 4,5;5;可以寫成可以寫成int aint a=1=1,2 2,3 3,4 4,55 四川省精品課單片機原理與應用一維數組元素的引用一維數組元素的引用 數組

14、必須先定義,后使用。數組必須先定義,后使用。c51c51語言規(guī)語言規(guī)定只能逐個引用數組元素而不能一次引用定只能逐個引用數組元素而不能一次引用整個數組。整個數組。 數組元素的表示形式為數組元素的表示形式為: : 數組名下標數組名下標 下標可以是整型常量或整型表達式。例如下標可以是整型常量或整型表達式。例如: : a0=a5+a7-a2*3 四川省精品課單片機原理與應用*二維數組的定義二維數組的定義n二維數組定義的一般形式為二維數組定義的一般形式為 數據類型數據類型 數組名常量表達式常量表達式數組名常量表達式常量表達式 例:例: float a34,b510;n不能寫成不能寫成 float a3,

15、4,b5,10;二維數組賦初值:二維數組賦初值: int key23=1,2,4,2,2,1; 四川省精品課單片機原理與應用二維數組元素的引用二維數組元素的引用形式為:形式為:數組名數組名行下標表達式行下標表達式列下標表達式列下標表達式1)“行下標表達式行下標表達式”和和“列下標表達式列下標表達式”的值,的值,都應在已定義數組大小的范圍內。假設有數組都應在已定義數組大小的范圍內。假設有數組x34x34,則可用的行下標范圍為,則可用的行下標范圍為0 02 2,列下標,列下標范圍為范圍為0 03 3。2)對基本數據類型的變量所能進行的操作,也都對基本數據類型的變量所能進行的操作,也都適合于相同數據

16、類型的二維數組元素。適合于相同數據類型的二維數組元素。字符數組字符數組n用來存放字符量的數組稱為字符數組。用來存放字符量的數組稱為字符數組。n字符數組類型說明的形式與前面介紹的數值字符數組類型說明的形式與前面介紹的數值數組相同。數組相同。例如例如: :char c5=h,e,l,l, o; 字符數組字符數組 char c6=hello; 字符字符串串數組數組 * *實際上是以上字符的實際上是以上字符的 asciiascii碼。碼。 * * 0 0為字符串的結束標志,字符串數組會自動加上。為字符串的結束標志,字符串數組會自動加上。4.7 c514.7 c51的程序設計的程序設計4.7.1 c51

17、4.7.1 c51程序結構程序結構常用常用c51c51的的頭文件:頭文件:reg51.h (定義特殊功能寄存器等);(定義特殊功能寄存器等);math.h (數學函數);(數學函數); ctype.h (字符函數);(字符函數); stdio.h (一般(一般io函數);函數); stdlib.h (標準函數);(標準函數); absacc.h (絕對地址訪問);(絕對地址訪問); string.h (串函數)(串函數) .func1() 局部變量定義局部變量定義 funcn() 局部變量定義局部變量定義 main() 局部變量定義局部變量定義 包含包含 函數類型說明函數類型說明全程變量定義全

18、程變量定義 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編4.7.2 c514.7.2 c51流程控制流程控制1.選擇語句選擇語句ifif(表達式表達式) 語句語句; 例:例:if(p1!=0) c=30; if (條件表達式條件表達式) 語句語句1; else 語句語句2;例:例:if (a=b) a+; else a-;當當 a 等于等于 b 時,時, a=a+1,否則否則 a=a-1 if (表達式表達式1) 語句語句1; else if (表達式表達式2) 語句語句2; else if (表達式表達式3) 語句語句3; else if (表達式表達式m) 語句語

19、句m; else 語句語句n;注:語句中為單一語句,注:語句中為單一語句, 可以不用花括弧??梢圆挥没ɡɑ?。 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編switch (表達式表達式) case case 常量表達式常量表達式1:1:語句語句1;break;1;break; case case 常量表達式常量表達式2:2:語句語句2;break;2;break; case case 常量表達式常量表達式3:3:語句語句3;break;3;break; case case 常量表達式常量表達式n:n:語句語句n;break;n;break; default: defau

20、lt:語句語句n+1;n+1;例:例:switch (k) case 0: x=1; break; case 2: c=6; b=5; break; case 3: x=12; break; default: break; 2. switch/case語句語句 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編3. while語句語句while (條件表達式真條件表達式真) 語句語句; while(p0!=0) x=p0;先判斷先判斷后循環(huán)后循環(huán)例例 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編do 語句語句; while (條件表達式真條件表達式

21、真) ; int sum=0, i;do sum= sum+i ; i+; while(i=10) 先循環(huán)先循環(huán)后判斷后判斷例例 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編for (for (初值設定表達式初值設定表達式;循環(huán)條件表達式循環(huán)條件表達式;條件更新表達式條件更新表達式) ) 循環(huán)語句循環(huán)語句; ; 例:例:int i, sum=0 ;int i, sum=0 ; for (i=0; i=10; i+) for (i=0; i=10; i+) sum=sum+i; sum=sum+i; 四川省精品課單片機原理與應用 西華大學機械工程與自動化學院黃惟公教授編

22、4.8 4.8 函數的定義與調用函數的定義與調用函數是語句塊的一種封裝,可以在程序中多次使用。函數是語句塊的一種封裝,可以在程序中多次使用。函數與函數與“子程序子程序”或或“過程過程”是同樣的事情。函數是同樣的事情。函數用來將一個程序的操作元素分成多個基本部分。這用來將一個程序的操作元素分成多個基本部分。這樣使程序員可以調試某個元素,然后反復使用。樣使程序員可以調試某個元素,然后反復使用。 從用戶的角度看從用戶的角度看c c語言有兩種函數:標準庫函數和語言有兩種函數:標準庫函數和用戶自定義的函數。標準庫函數是用戶自定義的函數。標準庫函數是c c編譯器提供的,編譯器提供的,不需要用戶進行定義,可

23、以直接調用。不需要用戶進行定義,可以直接調用。 函數的一個主要優(yōu)點就是可以作為庫的擴展。它還函數的一個主要優(yōu)點就是可以作為庫的擴展。它還可在其它程序中重復使用。這樣可以節(jié)省時間,便可在其它程序中重復使用。這樣可以節(jié)省時間,便于合作。于合作。 自定義函數的一般形式為:自定義函數的一般形式為:函數類型函數類型 函數名(形式參數表)函數名(形式參數表) 局部變量定義;局部變量定義; 函數體語句;函數體語句; 函數類型:函數類型:說明了所定義函數返回值的類型。如函數不需要返說明了所定義函數返回值的類型。如函數不需要返回值可以寫作回值可以寫作“void”void”。形式參數:形式參數:是指調用函數時要傳入到函數體內參與運算的變量,是指調用函數時

溫馨提示

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

評論

0/150

提交評論