版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C51的概要、c語言是通用的編程語言,碼率高,數(shù)據(jù)類型和運(yùn)算符豐富,位操作能力高,適合各種應(yīng)用程序的編程。 用c語言進(jìn)行單片機(jī)的應(yīng)用系統(tǒng)開發(fā),具有編程靈活、調(diào)試容易、目標(biāo)代碼編譯效率高的特點(diǎn)。 c語言也是目前使用最廣泛的單片機(jī)應(yīng)用程序編程語言。 用c語言編程的單片機(jī)應(yīng)用程序被稱為單片機(jī)程序。 MCS-51系列單片機(jī)開發(fā)系統(tǒng)的編譯軟件能編譯51單片機(jī)c語言源程序,被稱為C51編譯器。 C51編譯軟件可以調(diào)試51單片機(jī)c語言程序。擴(kuò)展了訪問MCS-51單片機(jī)硬件的數(shù)據(jù)類型2 )存儲類型按MCS-51單片機(jī)的存儲空間分類3 )存儲模式遵循存儲空間中選擇的編譯器模式4 ) poi C51的特點(diǎn),C51
2、編譯器對MCS-51單片機(jī)硬件在以下方面進(jìn)行了ANSI C擴(kuò)展。 C51編程具有以下特征。 1 )可以管理內(nèi)部寄存器和存儲器的分配,編程時(shí)不需要考慮不同存儲器的地址和數(shù)據(jù)類型等詳細(xì)問題2 )程序由幾個(gè)函數(shù)構(gòu)成,具有良好的模塊結(jié)構(gòu),移植性好,項(xiàng)目的維護(hù)管理容易可以直接引用豐富的子程序庫,大大減少了用戶的編程工作量,提高了編程效率4 )與匯編語言的交叉編程。 用匯編語言編制與硬件相關(guān)的程序,用C51編制與硬件不相關(guān)的運(yùn)算程序,充分發(fā)揮兩種語言的優(yōu)點(diǎn),提高開發(fā)效率。 C51的特征,C51編程與匯編語言編程相同。 單片機(jī)c語言源程序可以通過編輯、編譯和連接,生成并執(zhí)行目標(biāo)程序(.BIN和. HEX )
3、文件。 調(diào)試51單片機(jī)c語言程序可以利用Keil C51編譯器。 注意:使用C51編程可以代替復(fù)雜的匯編語言編程,但是需要理解MCS-51單片機(jī)的硬件配置。 在單片機(jī)系統(tǒng)的開發(fā)中,組合匯編語言和C51編程的方法很有效。 C51的特征、C51與匯編器的比較、由匯編器作成的流水燈程序占有的存儲空間為00H18H,由C51作成的流水燈程序占有的存儲空間為00H48H,是匯編器的3倍。 標(biāo)識符是標(biāo)識源程序中對象的名稱,包括語句、數(shù)據(jù)類型、函數(shù)、變量、數(shù)組等。 標(biāo)識符由字符串、數(shù)字、下劃線等組成。 第一個(gè)字母必須是字母或下劃線,不能以數(shù)字開頭。 如果“1_a”錯(cuò)誤,則在編譯時(shí)會顯示錯(cuò)誤信息。 在C51編
4、譯器中,僅支持標(biāo)識符的前32位是有效的標(biāo)識符。 C51語言是區(qū)分大小寫的高級語言,“a_1”和“a_1”是完全不同的標(biāo)識符。標(biāo)識符和關(guān)鍵字以及C51中某些庫函數(shù)的標(biāo)識符以下劃線開始,因此用戶定義的標(biāo)識符通常不使用以下劃線開始的名稱。 標(biāo)識符在命名時(shí)必須簡單,意思清楚。 這個(gè)有助于理解程序。 關(guān)鍵字是編程語言保存的特殊標(biāo)識符,具有固定的名稱和意義,在程序創(chuàng)建過程中不能將關(guān)鍵字用于其他用途。 C51的關(guān)鍵字除了根據(jù)ANSI C標(biāo)準(zhǔn)的32個(gè)關(guān)鍵字外,還根據(jù)MCS-51單片機(jī)的特征擴(kuò)展了關(guān)鍵字。 C51關(guān)鍵字如表5-1所示。 在C51的文本編輯器中創(chuàng)建c程序時(shí),int關(guān)鍵字的默認(rèn)顏色可以用不同的顏色顯
5、示保留關(guān)鍵字,如天藍(lán)色。 標(biāo)識符和關(guān)鍵字、標(biāo)識符和關(guān)鍵字、標(biāo)識符和關(guān)鍵字、標(biāo)識符和關(guān)鍵字、C51的數(shù)據(jù)類型,C51具有ANSI C的所有標(biāo)準(zhǔn)數(shù)據(jù)類型。 基本數(shù)據(jù)類型為char、int、短、長、浮、雙精度。 在C51編譯器中,短型和int型相同,雙型和浮點(diǎn)型相同。 C51的數(shù)據(jù)類型、C51添加的特殊數(shù)據(jù)類型和指針類型本身是一個(gè)變量,該變量包含指向其他數(shù)據(jù)的地址。這個(gè)指針變量必須占用處理器的長度,但在C51中其長度通常為13字節(jié)。 C51的數(shù)據(jù)類型、sfr特殊功能寄存器,利用它可以訪問MCS-51單片機(jī)內(nèi)部的所有特殊功能寄存器。 如果在sfr P1=0 x90中定義特殊功能寄存器變量“P1”,則變
6、量P1指的是51單片機(jī)的P1端口。 sbit訪問芯片內(nèi)部RAM的可尋址位或特殊功能寄存器的可尋址位。 定義方法有以下3種: (1)sbit比特變量名=比特地址必須在80HFFH之間。 (2)sbit位變量名=特殊功能寄存器名位位置可尋址位在特殊功能寄存器中時(shí),可采用該方法。 比特位置是07之間的常數(shù)。 (3)sbit比特變量名=字節(jié)地址比特位置、sbit可地址比特、C51的數(shù)據(jù)類型、sbit和比特的差異: sbit定義特殊功能寄存器的可地址比特定義通常的比特變量,在一個(gè)函數(shù)中可以包含bit型的參數(shù)另外,MCS-51單片機(jī)的特殊功能寄存器及其可尋址位在文件reg51.h報(bào)頭文件中預(yù)先定義,只需要
7、在程序的開頭加#include或#include就可以了。 C51的數(shù)據(jù)類型,耦合性:從左到右。 優(yōu)先級:先除乘法,然后加減,先在括號內(nèi),然后在括號外。 模擬運(yùn)算如7%3那樣求出馀數(shù),結(jié)果是7除以3得到馀數(shù)1。 可以在變量之前或之后使用自增減運(yùn)算符。 例如,I或-i表示在使用I之前,將I的值加1或減1。 例如,使用I或i-,變量I后,將I的值增加1或1。 C51的算術(shù)運(yùn)算符、C51的算術(shù)運(yùn)算符有7種,C51的關(guān)系運(yùn)算符有6種。 優(yōu)先級:上位4位、下位2位“=”和“!=等級低。 結(jié)合性:從左向右。 關(guān)系式的結(jié)果是邏輯值“真”或“假”,在C51中用“1”表示真,用“0”表示假。 有六種類型的C51
8、關(guān)系運(yùn)算符和C51位運(yùn)算符。 注:換檔操作對零換檔進(jìn)行補(bǔ)充。 比特運(yùn)算符只能進(jìn)行整形和字符型的運(yùn)算,不能運(yùn)算實(shí)數(shù)型的數(shù)據(jù)。 示例: char a=0 x0f; 公式a=a的值為0 xf0。 示例: char a=0 x22; 公式a2的值是0x8。 也就是說,a的值向左移動2位,移動的空位加0。 位運(yùn)算符、Reg52.h報(bào)頭文件,該報(bào)頭文件定義了52內(nèi)核的單片機(jī)內(nèi)部的所有功能寄存器。 右鍵單擊#include并單擊打開文檔時(shí),頭文件:Reg52.h頭文件,右圖為頭文件的宏定義:例如“Sfr P0=0 x80; ”可以打開句子的意思是將單片機(jī)內(nèi)部的80H地址寄存器改名為P0。 有兩種方法可以添加
9、頭文件. 和“reg52.h”有點(diǎn)不同,被普遍采用。 今后要創(chuàng)建單片機(jī)的程序時(shí),在程序的第一行中包含頭文件。define宏定義,第02句“#define uint unsigned int”將uint unsigned更名為int。 定義int后,以下語句在int:12句中顯示“uint i; ”出現(xiàn)的Main ()主函數(shù)的寫法,Void main ()形式的注意:沒有分號,沒有返回值和參數(shù)。 Void表示“空”,沒有返回值。 我們可以只用()寫,也可以寫voidmain(voidmain )。 接下來是兩個(gè)括號,主程序從這里執(zhí)行。 所有代碼都寫在這個(gè)括號里,每個(gè)句子結(jié)束時(shí)都用分號(; 的雙曲
10、馀弦值。 例如,包括視頻主() P1=0xaa; 把/1010發(fā)送到P0 I/O端口,評論的寫法,在c語言中,評論有兩種寫法:1/這個(gè)評論只能寫一行。 2/* */此注釋可以注釋多行。 格式: for (式1; 式2; 公式3) for循環(huán)語句執(zhí)行如下。 1 )首先解式1。 2 )求式2,如果該值為真(非零),則執(zhí)行for語句中指定的嵌入語句,執(zhí)行下一步驟3。如果值為假(0),則結(jié)束循環(huán)。 求解for循環(huán)文,3 )式3。 4 )返回上述步驟2繼續(xù)執(zhí)行。 5 )循環(huán)結(jié)束,執(zhí)行跟在for文體之后的句子。例如:無符號char I; for(i=2; i0; i -) for (; )/*無循環(huán)條件、
11、無限循環(huán)*/、for循環(huán)語句、無參數(shù)函數(shù)的標(biāo)記,多次使用幾個(gè)語句,如果這些語句相同,就可以將這些語句記述為無參數(shù)的子函數(shù)。 設(shè)計(jì)通過、for使P1.1端口的LED閃爍的程序。 #包含re g51.h# defineuintunsignediintsbitp1_1=P1; uint i,j; void main() while(1) led1=0; for (i=1000; i0; i- ) for (j=110; j0; j- ); /點(diǎn)亮LED 1s led1=1; for (i=1000; i0; i- ) for (j=110; j0; j- ); 關(guān)閉LED 1s,在這里“; ”,編譯
12、器缺省情況下將第二個(gè)for作為第一個(gè)for的內(nèi)部語句,I減1,j減110。 調(diào)用沒有參數(shù)函數(shù)的標(biāo)記,void delay() uint i; for(i=0; i34530; I ),呼叫:寫法:while(1) led1=0; delay (); 另外,在上述子函數(shù)中,當(dāng)i=500時(shí),如果延遲500ms,則需要用子函數(shù)重新代入I,難以使用。 可以使用參數(shù)函數(shù)來解決這個(gè)問題。 vioddelayms (unsignedintxms ) uniti,j; for(i=xms; i0; i-) /i=xms即約xms毫秒for(j=110; j0; j- );帶參數(shù)函數(shù)的書寫方法、帶參數(shù)函數(shù)的調(diào)用、調(diào)用:while(1) led1=0; 點(diǎn)亮/led delay ms (1000 )/延遲1s led1=1; 關(guān)閉LED delayms(500 )延遲500ms,在for語句中延遲了實(shí)例516,# include“re g 51.h”void main () chara; for (; 沒有循環(huán)條件,無限循環(huán)*/a=P1
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防隊(duì)人員職業(yè)健康體檢合同3篇
- 2024年中國電子電動遙控玩具市場調(diào)查研究報(bào)告
- 2024年中國電力球監(jiān)控系統(tǒng)市場調(diào)查研究報(bào)告
- 2024年中國液壓沖切機(jī)市場調(diào)查研究報(bào)告
- 二零二五年度生物制藥行業(yè)勞動合同范本2篇
- 《英漢禁忌語語用對比》
- 《基于區(qū)間分析方法的不確定參數(shù)轉(zhuǎn)子系統(tǒng)動力學(xué)特性研究》
- 2024年雙工位收卷機(jī)項(xiàng)目可行性研究報(bào)告
- 2024年印刷機(jī)用卷筒擦拭紙項(xiàng)目可行性研究報(bào)告
- 2024年中國小閃燈市場調(diào)查研究報(bào)告
- 廣西桂林市(2024年-2025年小學(xué)三年級語文)部編版期末考試(上學(xué)期)試卷(含答案)
- 《體育科學(xué)研究方法》題庫
- 高級會計(jì)實(shí)務(wù)案例分析-第三章 企業(yè)全面預(yù)算管理
- DL∕T 5142-2012 火力發(fā)電廠除灰設(shè)計(jì)技術(shù)規(guī)程
- 城域網(wǎng)建設(shè)方案
- 政府會計(jì) 第二版 課件 第七章 凈資產(chǎn)與預(yù)算結(jié)余
- 2024年恩施州直事業(yè)單位選聘36人歷年(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 上海市楊浦區(qū)2023-2024學(xué)年九年級上學(xué)期期末考試語文試題(解析版)
- 衛(wèi)生事業(yè)管理考試題庫2022
- 廣東省課程思政示范高職院校申報(bào)書
- 電動汽車膠粘劑市場洞察報(bào)告
評論
0/150
提交評論