版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(優(yōu)選)單片機(jī)語言基礎(chǔ)當(dāng)前第1頁\共有44頁\編于星期六\2點(diǎn)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)當(dāng)前第2頁\共有44頁\編于星期六\2點(diǎn)C-51與ASM-51相比,有如下優(yōu)點(diǎn):1.
對(duì)單片機(jī)的指令系統(tǒng)不要求了解,僅要求對(duì)8051的存貯器結(jié)構(gòu)有初步了解;2.
寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;3.
程序有規(guī)范的結(jié)構(gòu),可分成不同的函數(shù),這種方式可使程序結(jié)構(gòu)化;4.
提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力;5.
由于具有方便的模塊化編程技術(shù),使已編好程序可容易地移植;當(dāng)前第3頁\共有44頁\編于星期六\2點(diǎn)例子認(rèn)識(shí)C程序#include<REG51.h>
sbitA5=P1^0x04;intmain(void){//用戶代碼voiddelay_1s();return0;}voiddelay_1s(){//代碼}一、主程序(程序入口)intmain(void){//用戶代碼return0;}注:1、C程序模塊都是以“{”開頭“}”結(jié)尾,程序?yàn)楹瘮?shù)[主函數(shù)、子函數(shù)]2、每一行必須有結(jié)束號(hào)“;”3、養(yǎng)成注釋程序的習(xí)慣
“//”注釋該行
“/*---段落---*/”注解一段二、頭文件(編程預(yù)處理)#include<REG51.h>注:定義一些通用引腳及函數(shù)
三、自定義函數(shù)(子函數(shù))常用、重復(fù)引用的功能集成可用任何文本編輯軟件編寫,最后保存擴(kuò)展名為.C的程序源文件當(dāng)前第4頁\共有44頁\編于星期六\2點(diǎn)其值可以改變的量稱為變量。
一個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。變量應(yīng)該先定義后使用。要區(qū)分變量名和變量值是兩個(gè)不同的概念。a=3變量3存儲(chǔ)值存儲(chǔ)單元地址[a]
注:變量名a代表地址,編譯系統(tǒng)自動(dòng)分配,用戶不可見0x40當(dāng)前第5頁\共有44頁\編于星期六\2點(diǎn)一、C-51的變量類型1、基本數(shù)據(jù)類型類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255當(dāng)前第6頁\共有44頁\編于星期六\2點(diǎn)2、變量類型的定義格式:變量類型+變量名例如:
inta,b;//定義a,b為整型變更longsheng1,sheng2;//長(zhǎng)整型Floatc,d;//浮點(diǎn)(有小數(shù))Doublee,f;//雙精度chara;//有符號(hào)字符型Unsignedcharb;無符號(hào)字符型
注:變量類型為規(guī)定的類型;變量的名稱自由起,但通常要通俗,并要遵守如下規(guī)則c語言變量命名:數(shù)字、字母、下劃線,都可以為變量命名。做為變量名的開頭不能為數(shù)字,如3a_是錯(cuò)的,而a_3或_a3是正確變量名不能為關(guān)鍵字,像if'else'printf等等都不能當(dāng)前第7頁\共有44頁\編于星期六\2點(diǎn)標(biāo)準(zhǔn)C表1當(dāng)前第8頁\共有44頁\編于星期六\2點(diǎn)標(biāo)準(zhǔn)C表2當(dāng)前第9頁\共有44頁\編于星期六\2點(diǎn)C51擴(kuò)展當(dāng)前第10頁\共有44頁\編于星期六\2點(diǎn)3、C-51的數(shù)據(jù)類型擴(kuò)充定義sfr:特殊功能寄存器聲明sfr16:sfr的16位數(shù)據(jù)聲明sbit:特殊功能位聲明bit:位變量聲明當(dāng)前第11頁\共有44頁\編于星期六\2點(diǎn)1.sfr特殊功能寄存器。這也是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪問8051單片機(jī)的所有內(nèi)部特殊功能寄存器。sfr型數(shù)據(jù)占用一個(gè)內(nèi)存單元,其取值范圍0~255。2.sfr1616位特殊功能寄存器。它占用兩個(gè)內(nèi)存單元,取值范圍是0~65535。3.sbit可尋址位。這也是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪8051單片機(jī)內(nèi)部RAM中的可尋址位或特殊功能寄存器中的可尋址位。4.bit位標(biāo)量。這是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可定義一個(gè)位標(biāo)量,但不能定義位指針,也不能定義位數(shù)組。
當(dāng)前第12頁\共有44頁\編于星期六\2點(diǎn)例:sfrSCON=0X98;sfr16T2=0xCC;sbitOV=PSW^2當(dāng)前第13頁\共有44頁\編于星期六\2點(diǎn)4、數(shù)據(jù)類型修飾詞1)、data:固定指前面0x00-0x7f的128個(gè)RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小2)、code定義的數(shù)據(jù)要放在ROM(程序存儲(chǔ)區(qū))里面,寫入后就不能再更改,對(duì)應(yīng)的還有data是存入RAM的意思。例如:chardataa;//a變量存在上述RAM中intdatadisp;//disp變量存在上述RAM中例如:ucharcodeyima[]=//把數(shù)碼管位數(shù)據(jù)(因?yàn)椴蛔儯懭隦OM{0xeb,0x88,0xb3,0xba,0xd8,0x7a,0x7b,0xa8,0xfb,0xfa};當(dāng)前第14頁\共有44頁\編于星期六\2點(diǎn)4、數(shù)據(jù)類型修飾詞3)、當(dāng)前第15頁\共有44頁\編于星期六\2點(diǎn)4、數(shù)據(jù)類型修飾詞4)、當(dāng)前第16頁\共有44頁\編于星期六\2點(diǎn)5、變量的賦值inta,b;//定義a,b為整型變量
longsheng1,sheng2;//長(zhǎng)整型
floatc,d;//浮點(diǎn)(有小數(shù))
doublee,f;//雙精度
charg;//有符號(hào)字符型
Unsignedcharh;無符號(hào)字符型定義賦值a=12;a=0xff;a=0x00;b=0;b=08;b=03;C=0.214;c=-0.36;d=12e3;e=12e-12;g=10;G=‘A’;h=200;注:‘A’為字符常量,為該字符的ASCII代碼當(dāng)前第17頁\共有44頁\編于星期六\2點(diǎn)附當(dāng)前第18頁\共有44頁\編于星期六\2點(diǎn)C-51的包含的頭文件通常有:reg51.hreg52.hmath.hctype.hstdio.hstdlib.habsacc.h常用有:reg51.hreg52.h
(定義特殊功能寄存器和位寄存器);
math.h
(定義常用數(shù)學(xué)運(yùn)算);
當(dāng)前第19頁\共有44頁\編于星期六\2點(diǎn)二、C-51的運(yùn)算符1、算術(shù)運(yùn)算符+-*/%(加減乘除求余)說明:當(dāng)前第20頁\共有44頁\編于星期六\2點(diǎn)++:自加運(yùn)算符--自減運(yùn)算符當(dāng)前第21頁\共有44頁\編于星期六\2點(diǎn)2.邏輯運(yùn)算將兩個(gè)布爾量進(jìn)行運(yùn)算,結(jié)果為只有0或1的布爾量當(dāng)前第22頁\共有44頁\編于星期六\2點(diǎn)3.關(guān)系運(yùn)算運(yùn)算結(jié)果只有0或1的布爾量當(dāng)前第23頁\共有44頁\編于星期六\2點(diǎn)4.位運(yùn)算位操作,結(jié)果還是一個(gè)數(shù),注意與邏輯運(yùn)算的區(qū)別1)當(dāng)前第24頁\共有44頁\編于星期六\2點(diǎn)2).3).4)、當(dāng)前第25頁\共有44頁\編于星期六\2點(diǎn)5)、當(dāng)前第26頁\共有44頁\編于星期六\2點(diǎn)當(dāng)前第27頁\共有44頁\編于星期六\2點(diǎn)
二、C-51流程控制
與標(biāo)準(zhǔn)C語言基本相同:
if選擇語言switch/case多分支選擇語言
while循環(huán)語言
for循環(huán)語言
do-while循環(huán)語言當(dāng)前第28頁\共有44頁\編于星期六\2點(diǎn)1、if條件選擇語句1)、單分支語句inta,b,max;max=a;if(max<b)max=b;當(dāng)前第29頁\共有44頁\編于星期六\2點(diǎn)2)、雙分支語句main(){inta,b,max;if(a>b)max=a;elsemax=b;}當(dāng)前第30頁\共有44頁\編于星期六\2點(diǎn)3)、多分支語句依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語句。然后跳到整個(gè)if語句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語句n+1。然后繼續(xù)執(zhí)行后續(xù)程序。當(dāng)前第31頁\共有44頁\編于星期六\2點(diǎn)inta=10;If(a>0&&a<2)printf(“a是一0到2之間的數(shù)”);elseif(a>=2&&a<5)printf(“a是一2到5之間的數(shù)”);elseif(a>-5&&a<8)printf(“a是一5到8之間的數(shù)”);elseif(a>=8&&a<10)printf(“a是一8到10之間的數(shù)”);elseprintf(“a是一個(gè)沒知道的數(shù)”);
當(dāng)前第32頁\共有44頁\編于星期六\2點(diǎn)2、switch語句
switch(表達(dá)式){case常量表達(dá)式1:語句1;case常量表達(dá)式2:語句2;…case常量表達(dá)式n:語句n;default:語句n+1;}格式計(jì)算表達(dá)式的值。并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句。在使用switch語句時(shí)還應(yīng)注意以下幾點(diǎn):在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。在case后,允許有多個(gè)語句,可以不用{}括起來。各case和default子句的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。default子句可以省略不用。當(dāng)前第33頁\共有44頁\編于星期六\2點(diǎn)main(){floata,b;charc;printf("inputexpression:a+(-,*,/)b\n");scanf("%f%c%f",&a,&c,&b);switch(c){case'+':printf("%f\n",a+b);break;case'-':printf("%f\n",a-b);break;case'*':printf("%f\n",a*b);break;case'/':printf("%f\n",a/b);break;default:printf("inputerror\n");}}例子在使用switch語句時(shí)還應(yīng)注意以下幾點(diǎn):(1)在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。(2)在case后,允許有多個(gè)語句,可以不用{}括起來。(3)各case和default子句的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。(4)default子句可以省略不用。當(dāng)前第34頁\共有44頁\編于星期六\2點(diǎn)3、while語句
格式while(表達(dá)式)
{
語句
}while語句的語義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語句作用:循環(huán)執(zhí)行一段代碼當(dāng)前第35頁\共有44頁\編于星期六\2點(diǎn)例子:
While(1){
P0=0xff;delay1s();P0=0x00;delay1s();}While(1){delay1s();P0=~P0;}inti=100;While(i>0){delay1s();P0=~P0;i--;}main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);}當(dāng)前第36頁\共有44頁\編于星期六\2點(diǎn)4、for語句格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
語句
}作用:循環(huán)執(zhí)行一段代碼它的執(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è)語句當(dāng)前第37頁\共有44頁\編于星期六\2點(diǎn)Sum=0;for(i=1;i<=100;i++)
sum=sum+i;例子:inti;for(i=100;i>0;i--){//空語句,想想這段代碼有什么用}當(dāng)前第38頁\共有44頁\編于星期六\2點(diǎn)附:for循環(huán)的嵌套main(){inti,j,k;for(i=0;i<2;i++)for(j=0;j<2;j++)for(k=0;k<2;k++)printf(“%d%d%d\n",i,j,k);}當(dāng)前第39頁\共有44頁\編于星期六\2點(diǎn)5、do-while語句形式為:
do{語句}while(表達(dá)式)作用:循環(huán)執(zhí)行一段代碼這個(gè)循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年龍崗區(qū)稅務(wù)局飲用水安全風(fēng)險(xiǎn)評(píng)估與整改服務(wù)協(xié)議4篇
- 2025版鋁材行業(yè)培訓(xùn)與咨詢服務(wù)合同范本
- 2025年度高新技術(shù)企業(yè)研發(fā)項(xiàng)目成果轉(zhuǎn)化與技術(shù)支持協(xié)議下載2篇
- 2025年度內(nèi)部控制合同管理內(nèi)部控制手冊(cè)3篇
- 二零二五版羅絲與吳磊的離婚協(xié)議及子女撫養(yǎng)權(quán)轉(zhuǎn)讓協(xié)議4篇
- 二零二五年度廚師技能競(jìng)賽與評(píng)選活動(dòng)合同4篇
- 二零二五版特色小鎮(zhèn)物業(yè)合同財(cái)務(wù)管理與文化旅游融合協(xié)議3篇
- 二零二五版汽車維修店面使用權(quán)轉(zhuǎn)讓合同模板3篇
- 2025年度新能源產(chǎn)業(yè)合作推廣戰(zhàn)略框架協(xié)議書
- 二零二五年度LED燈具音響設(shè)備研發(fā)生產(chǎn)合作協(xié)議4篇
- 華為HCIA-Storage H13-629考試練習(xí)題
- Q∕GDW 516-2010 500kV~1000kV 輸電線路劣化懸式絕緣子檢測(cè)規(guī)程
- 遼寧省撫順五十中學(xué)2024屆中考化學(xué)全真模擬試卷含解析
- 2024年湖南汽車工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及答案解析
- 家長(zhǎng)心理健康教育知識(shí)講座
- GB/T 292-2023滾動(dòng)軸承角接觸球軸承外形尺寸
- 軍人結(jié)婚函調(diào)報(bào)告表
- 民用無人駕駛航空器實(shí)名制登記管理規(guī)定
- 北京地鐵6號(hào)線
- 航空油料計(jì)量統(tǒng)計(jì)員(初級(jí))理論考試復(fù)習(xí)題庫大全-上(單選題匯總)
評(píng)論
0/150
提交評(píng)論