單片機(jī)語言基礎(chǔ)演示_第1頁
單片機(jī)語言基礎(chǔ)演示_第2頁
單片機(jī)語言基礎(chǔ)演示_第3頁
單片機(jī)語言基礎(chǔ)演示_第4頁
單片機(jī)語言基礎(chǔ)演示_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、(優(yōu)選)單片機(jī)語言基礎(chǔ)第一頁,共四十四頁。C語言作為一種非常方便的語言而得到廣泛的支持,很多硬件開發(fā)都用C語言編程,如:各種單片機(jī)、DSP、ARM等.C語言程序本身不依賴于機(jī)器硬件系統(tǒng),基本上不作修改就可將程序從不同的單片機(jī)中移植過來。C提供了很多數(shù)學(xué)函數(shù)并支持浮點(diǎn)運(yùn)算,開發(fā)效率高,故可縮短開發(fā)時(shí)間,增加程序可讀性和可維護(hù)性。 C-51的特點(diǎn)第二頁,共四十四頁。C-51與ASM-51相比,有如下優(yōu)點(diǎn):1.對單片機(jī)的指令系統(tǒng)不要求了解,僅要求對8051 的存貯器結(jié)構(gòu)有初步了解;2.寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;3.程序有規(guī)范的結(jié)構(gòu),可分成不同的函數(shù),這種方式可使程序

2、結(jié)構(gòu)化;4.提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力;5.由于具有方便的模塊化編程技術(shù),使已編好程序可容易地移植;第三頁,共四十四頁。例子認(rèn)識C程序#include sbit A5=P10 x04;int main(void) /用戶代碼 void delay_1s(); return 0; void delay_1s() /代碼一、主程序(程序入口) int main(void) /用戶代碼 return 0; 注:1、C程序模塊都是以“”開頭“”結(jié)尾,程序?yàn)楹瘮?shù)主函數(shù)、子函數(shù) 2、每一行必須有結(jié)束號“;” 3、養(yǎng)成注釋程序的習(xí)慣 “/”注釋該行 “ /* -段落-*/”注解一段二

3、、頭文件(編程預(yù)處理)#include 注:定義一些通用引腳及函數(shù) 三、自定義函數(shù)(子函數(shù))常用、重復(fù)引用的功能集成可用任何文本編輯軟件編寫,最后保存擴(kuò)展名為.C的程序源文件第四頁,共四十四頁。其值可以改變的量稱為變量。 一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲單元。變量應(yīng)該先定義后使用。要區(qū)分變量名和變量值是兩個(gè)不同的概念。a=3 變量3存儲值存儲單元地址a注:變量名a代表地址,編譯系統(tǒng)自動分配,用戶不可見0 x40第五頁,共四十四頁。一、C51的變量類型1、基本數(shù)據(jù)類型類型符號關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(signed) int16-3276832767(signed

4、) short16-3276832767(signed) long32-2147483648214748364716unsigned int0655353204294967295unsigned long intunsigned short int16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127無unsigned char80255第六頁,共四十四頁。2、變量類型的定義格式 : 變量類型 + 變量名例如: int a,b; /定義a,b為整型變更 long sheng1,sheng2;/長整型 Float c,

5、d; /浮點(diǎn)(有小數(shù)) Double e,f; /雙精度 char a ;/有符號字符型 Unsigned char b;無符號字符型 注:變量類型為規(guī)定的類型;變量的名稱自由起,但通常要通俗,并要遵守如下規(guī)則c語言變量命名:數(shù)字、字母、下劃線,都可以為變量命名。做為變量名的開頭不能為數(shù)字,如 3a_是錯(cuò)的,而a_3或_a3是正確變量名不能為關(guān)鍵字,像ifelseprintf 等等都不能 第七頁,共四十四頁。標(biāo)準(zhǔn)C表1第八頁,共四十四頁。標(biāo)準(zhǔn)C表2第九頁,共四十四頁。C51擴(kuò)展第十頁,共四十四頁。3、C51的數(shù)據(jù)類型擴(kuò)充定義sfr:特殊功能寄存器聲明sfr16:sfr的16位數(shù)據(jù)聲明sbit:

6、特殊功能位聲明bit:位變量聲明第十一頁,共四十四頁。1sfr 特殊功能寄存器。這也是C 51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪問8051單片機(jī)的所有內(nèi)部特殊功能寄存器。sfr型數(shù)據(jù)占用一個(gè)內(nèi)存單元,其取值范圍0255。2sfr16 16位特殊功能寄存器。它占用兩個(gè)內(nèi)存單元,取值范圍是065535。3sbit 可尋址位。這也是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪8051單片機(jī)內(nèi)部RAM中的可尋址位或特殊功能寄存器中的可尋址位。4.bit 位標(biāo)量。這是C 51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可定義一個(gè)位標(biāo)量,但不能定義位指針,也不能定義位數(shù)組。 第十二頁,共四十四頁。例:sfr SC

7、ON = 0X98; sfr16 T2 = 0 xCC; sbit OV = PSW2第十三頁,共四十四頁。4、數(shù)據(jù)類型修飾詞1)、data:固定指前面0 x00-0 x7f的128個(gè)RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小2)、code定義的數(shù)據(jù)要放在ROM(程序存儲區(qū))里面,寫入后就不能再更改,對應(yīng)的還有data是存入RAM的意思。例如: char data a; /a變量存在上述RAM中 int data disp; /disp變量存在上述RAM中例如: uchar code yima= /把數(shù)碼管位數(shù)據(jù)(因?yàn)椴蛔儯懭隦OM0 xeb,0 x88,0 xb3,0 xb

8、a,0 xd8,0 x7a,0 x7b,0 xa8,0 xfb,0 xfa;第十四頁,共四十四頁。4、數(shù)據(jù)類型修飾詞3)、第十五頁,共四十四頁。4、數(shù)據(jù)類型修飾詞4)、第十六頁,共四十四頁。5、變量的賦值 int a,b; /定義a,b為整型變量 long sheng1,sheng2;/長整型 float c,d; /浮點(diǎn)(有小數(shù)) double e,f; /雙精度 char g ;/有符號字符型 Unsigned char h;無符號字符型定義賦值a12; a=0 xff; a=0 x00;b=0; b=08 ; b=03;C=0.214; c=-0.36 ;d=12e3;e=12e-12;

9、g=10;G=A;h=200;注:A為字符常量,為該字符的ASCII代碼第十七頁,共四十四頁。附第十八頁,共四十四頁。C-51的包含的頭文件通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h常用有:reg51.h reg52.h (定義特殊功能寄存器和位寄存器); math.h (定義常用數(shù)學(xué)運(yùn)算); 第十九頁,共四十四頁。二、C-51的運(yùn)算符1、算術(shù)運(yùn)算符+ - * / % (加 減 乘 除 求余 )說明:第二十頁,共四十四頁。+:自加運(yùn)算符 自減運(yùn)算符第二十一頁,共四十四頁。2.邏輯運(yùn)算將兩個(gè)布爾量進(jìn)行運(yùn)算,結(jié)果為只有0

10、或1的布爾量第二十二頁,共四十四頁。3.關(guān)系運(yùn)算運(yùn)算結(jié)果只有0或1的布爾量第二十三頁,共四十四頁。4.位運(yùn)算位操作,結(jié)果還是一個(gè)數(shù),注意與邏輯運(yùn)算的區(qū)別1)第二十四頁,共四十四頁。2).3).4)、第二十五頁,共四十四頁。5)、第二十六頁,共四十四頁。第二十七頁,共四十四頁。 二、C-51流程控制 與標(biāo)準(zhǔn)C語言基本相同: if 選擇語言 switch/case 多分支選擇語言 while 循環(huán)語言 for 循環(huán)語言 do-while 循環(huán)語言 第二十八頁,共四十四頁。1、if 條件選擇語句1)、單分支語句 int a,b,max; max=a; if (maxb) max=a; else ma

11、x=b;第三十頁,共四十四頁。3)、多分支語句依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對應(yīng)的語句。然后跳到整個(gè)if語句之外繼續(xù)執(zhí)行程序。 如果所有的表達(dá)式均為假,則執(zhí)行語句n+1。然后繼續(xù)執(zhí)行后續(xù)程序。第三十一頁,共四十四頁。int a=10;If(a0 & a=2 & a-5 & a=8 & a0) delay1s(); P0=P0; i-; main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%dn,sum);第三十六頁,共四十四頁。4、for語句格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句作用:循環(huán)執(zhí)行一段代

12、碼它的執(zhí)行過程如下:1) 先求解表達(dá)式1。2) 求解表達(dá)式2,若其值為真(非0),則執(zhí)行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下面第3)步;若其值為假(0),則結(jié)束循環(huán),轉(zhuǎn)到第5)步。3) 求解表達(dá)式3。4) 轉(zhuǎn)回上面第2)步繼續(xù)執(zhí)行。5) 循環(huán)結(jié)束,執(zhí)行for語句下面的一個(gè)語句第三十七頁,共四十四頁。Sum=0;for(i=1; i0; i-) /空語句,想想這段代碼有什么用 第三十八頁,共四十四頁。附:for循環(huán)的嵌套main() int i, j, k;for (i=0; i2; i+) for(j=0; j2; j+) for(k=0; k2; k+) printf(“%d %d %dn

13、, i, j, k); 第三十九頁,共四十四頁。、do - while語句形式為: do 語句 while(表達(dá)式)作用:循環(huán)執(zhí)行一段代碼這個(gè)循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的語句,然后再判斷表達(dá)式是否為真, 如果為真則繼續(xù)循環(huán);如果為假, 則終止循環(huán)。因此, do-while循環(huán)至少要執(zhí)行一次循環(huán)語句第四十頁,共四十四頁。main() int i,sum=0; i=1; do sum=sum+i; i+; while(i5 ? 1:0;Y輸出什么值?第四十二頁,共四十四頁。7、循環(huán)體的退出(一)、break語句、當(dāng)break用于開關(guān)語句switch中時(shí),可使程序跳出switch而執(zhí)行switch以后的語句、當(dāng)break語句用于do

溫馨提示

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

評論

0/150

提交評論