版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C51的概要、c語言是通用的編程語言,碼率高,數(shù)據(jù)類型和運算符豐富,位操作能力高,適合各種應(yīng)用程序的編程。 用c語言進行單片機的應(yīng)用系統(tǒng)開發(fā),具有編程靈活、調(diào)試容易、目標代碼編譯效率高的特點。 c語言也是目前使用最廣泛的單片機應(yīng)用程序編程語言。 用c語言編程的單片機應(yīng)用程序被稱為單片機程序。 MCS-51系列單片機開發(fā)系統(tǒng)的編譯軟件能編譯51單片機c語言源程序,被稱為C51編譯器。 C51編譯軟件可以調(diào)試51單片機c語言程序。擴展了訪問MCS-51單片機硬件的數(shù)據(jù)類型2 )存儲類型按MCS-51單片機的存儲空間分類3 )存儲模式遵循存儲空間中選擇的編譯器模式4 ) poi C51的特點,C51
2、編譯器對MCS-51單片機硬件在以下方面進行了ANSI C擴展。 C51編程具有以下特征。 1 )可以管理內(nèi)部寄存器和存儲器的分配,編程時不需要考慮不同存儲器的地址和數(shù)據(jù)類型等詳細問題2 )程序由幾個函數(shù)構(gòu)成,具有良好的模塊結(jié)構(gòu),移植性好,項目的維護管理容易可以直接引用豐富的子程序庫,大大減少了用戶的編程工作量,提高了編程效率4 )與匯編語言的交叉編程。 用匯編語言編制與硬件相關(guān)的程序,用C51編制與硬件不相關(guān)的運算程序,充分發(fā)揮兩種語言的優(yōu)點,提高開發(fā)效率。 C51的特征,C51編程與匯編語言編程相同。 單片機c語言源程序可以通過編輯、編譯和連接,生成并執(zhí)行目標程序(.BIN和. HEX )
3、文件。 調(diào)試51單片機c語言程序可以利用Keil C51編譯器。 注意:使用C51編程可以代替復(fù)雜的匯編語言編程,但是需要理解MCS-51單片機的硬件配置。 在單片機系統(tǒng)的開發(fā)中,組合匯編語言和C51編程的方法很有效。 C51的特征、C51與匯編器的比較、由匯編器作成的流水燈程序占有的存儲空間為00H18H,由C51作成的流水燈程序占有的存儲空間為00H48H,是匯編器的3倍。 標識符是標識源程序中對象的名稱,包括語句、數(shù)據(jù)類型、函數(shù)、變量、數(shù)組等。 標識符由字符串、數(shù)字、下劃線等組成。 第一個字母必須是字母或下劃線,不能以數(shù)字開頭。 如果“1_a”錯誤,則在編譯時會顯示錯誤信息。 在C51編
4、譯器中,僅支持標識符的前32位是有效的標識符。 C51語言是區(qū)分大小寫的高級語言,“a_1”和“a_1”是完全不同的標識符。標識符和關(guān)鍵字以及C51中某些庫函數(shù)的標識符以下劃線開始,因此用戶定義的標識符通常不使用以下劃線開始的名稱。 標識符在命名時必須簡單,意思清楚。 這個有助于理解程序。 關(guān)鍵字是編程語言保存的特殊標識符,具有固定的名稱和意義,在程序創(chuàng)建過程中不能將關(guān)鍵字用于其他用途。 C51的關(guān)鍵字除了根據(jù)ANSI C標準的32個關(guān)鍵字外,還根據(jù)MCS-51單片機的特征擴展了關(guān)鍵字。 C51關(guān)鍵字如表5-1所示。 在C51的文本編輯器中創(chuàng)建c程序時,int關(guān)鍵字的默認顏色可以用不同的顏色顯
5、示保留關(guān)鍵字,如天藍色。 標識符和關(guān)鍵字、標識符和關(guān)鍵字、標識符和關(guān)鍵字、標識符和關(guān)鍵字、C51的數(shù)據(jù)類型,C51具有ANSI C的所有標準數(shù)據(jù)類型。 基本數(shù)據(jù)類型為char、int、短、長、浮、雙精度。 在C51編譯器中,短型和int型相同,雙型和浮點型相同。 C51的數(shù)據(jù)類型、C51添加的特殊數(shù)據(jù)類型和指針類型本身是一個變量,該變量包含指向其他數(shù)據(jù)的地址。這個指針變量必須占用處理器的長度,但在C51中其長度通常為13字節(jié)。 C51的數(shù)據(jù)類型、sfr特殊功能寄存器,利用它可以訪問MCS-51單片機內(nèi)部的所有特殊功能寄存器。 如果在sfr P1=0 x90中定義特殊功能寄存器變量“P1”,則變
6、量P1指的是51單片機的P1端口。 sbit訪問芯片內(nèi)部RAM的可尋址位或特殊功能寄存器的可尋址位。 定義方法有以下3種: (1)sbit比特變量名=比特地址必須在80HFFH之間。 (2)sbit位變量名=特殊功能寄存器名位位置可尋址位在特殊功能寄存器中時,可采用該方法。 比特位置是07之間的常數(shù)。 (3)sbit比特變量名=字節(jié)地址比特位置、sbit可地址比特、C51的數(shù)據(jù)類型、sbit和比特的差異: sbit定義特殊功能寄存器的可地址比特定義通常的比特變量,在一個函數(shù)中可以包含bit型的參數(shù)另外,MCS-51單片機的特殊功能寄存器及其可尋址位在文件reg51.h報頭文件中預(yù)先定義,只需要
7、在程序的開頭加#include或#include就可以了。 C51的數(shù)據(jù)類型,耦合性:從左到右。 優(yōu)先級:先除乘法,然后加減,先在括號內(nèi),然后在括號外。 模擬運算如7%3那樣求出馀數(shù),結(jié)果是7除以3得到馀數(shù)1。 可以在變量之前或之后使用自增減運算符。 例如,I或-i表示在使用I之前,將I的值加1或減1。 例如,使用I或i-,變量I后,將I的值增加1或1。 C51的算術(shù)運算符、C51的算術(shù)運算符有7種,C51的關(guān)系運算符有6種。 優(yōu)先級:上位4位、下位2位“=”和“!=等級低。 結(jié)合性:從左向右。 關(guān)系式的結(jié)果是邏輯值“真”或“假”,在C51中用“1”表示真,用“0”表示假。 有六種類型的C51
8、關(guān)系運算符和C51位運算符。 注:換檔操作對零換檔進行補充。 比特運算符只能進行整形和字符型的運算,不能運算實數(shù)型的數(shù)據(jù)。 示例: char a=0 x0f; 公式a=a的值為0 xf0。 示例: char a=0 x22; 公式a2的值是0x8。 也就是說,a的值向左移動2位,移動的空位加0。 位運算符、Reg52.h報頭文件,該報頭文件定義了52內(nèi)核的單片機內(nèi)部的所有功能寄存器。 右鍵單擊#include并單擊打開文檔時,頭文件:Reg52.h頭文件,右圖為頭文件的宏定義:例如“Sfr P0=0 x80; ”可以打開句子的意思是將單片機內(nèi)部的80H地址寄存器改名為P0。 有兩種方法可以添加
9、頭文件. 和“reg52.h”有點不同,被普遍采用。 今后要創(chuàng)建單片機的程序時,在程序的第一行中包含頭文件。define宏定義,第02句“#define uint unsigned int”將uint unsigned更名為int。 定義int后,以下語句在int:12句中顯示“uint i; ”出現(xiàn)的Main ()主函數(shù)的寫法,Void main ()形式的注意:沒有分號,沒有返回值和參數(shù)。 Void表示“空”,沒有返回值。 我們可以只用()寫,也可以寫voidmain(voidmain )。 接下來是兩個括號,主程序從這里執(zhí)行。 所有代碼都寫在這個括號里,每個句子結(jié)束時都用分號(; 的雙曲
10、馀弦值。 例如,包括視頻主() P1=0xaa; 把/1010發(fā)送到P0 I/O端口,評論的寫法,在c語言中,評論有兩種寫法:1/這個評論只能寫一行。 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ù)的標記,多次使用幾個語句,如果這些語句相同,就可以將這些語句記述為無參數(shù)的子函數(shù)。 設(shè)計通過、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- ); /點亮LED 1s led1=1; for (i=1000; i0; i- ) for (j=110; j0; j- ); 關(guān)閉LED 1s,在這里“; ”,編譯
12、器缺省情況下將第二個for作為第一個for的內(nèi)部語句,I減1,j減110。 調(diào)用沒有參數(shù)函數(shù)的標記,void delay() uint i; for(i=0; i34530; I ),呼叫:寫法:while(1) led1=0; delay (); 另外,在上述子函數(shù)中,當i=500時,如果延遲500ms,則需要用子函數(shù)重新代入I,難以使用。 可以使用參數(shù)函數(shù)來解決這個問題。 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; 點亮/led delay ms (1000 )/延遲1s led1=1; 關(guān)閉LED delayms(500 )延遲500ms,在for語句中延遲了實例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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購框架合同共成長3篇
- 采購合同會審制度的應(yīng)用探討3篇
- 采購合同談判策略3篇
- 采購戰(zhàn)略合同的制定與執(zhí)行3篇
- 采購合同的管理流程3篇
- 采購合同分析3篇
- 2024年地暖工程智能化控制系統(tǒng)研發(fā)與制造合同3篇
- 2024年度教育機構(gòu)經(jīng)費預(yù)算與使用合同3篇
- 2024年度文化旅游項目招投標合同管理與文化遺產(chǎn)保護合同3篇
- 2024年標準外貿(mào)銷售合同中英文本版
- 01中國電信云計算產(chǎn)品體系架構(gòu)
- 飲食基因與文化智慧樹知到期末考試答案2024年
- 廣東省課程思政示范高職院校申報書
- 墻面修復(fù)施工方案
- 徐工集團招聘測評題庫
- 初中語文九年級下冊《短詩五首-月夜》+教學(xué)課件
- 開荒保潔物業(yè)管理開荒保潔服務(wù)實施方案
- 山東省煙臺市萊州市2023-2024學(xué)年五年級上學(xué)期期末考試數(shù)學(xué)試題
- 2016-2023年南京信息職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年考點試題甄選合集含答案解析
- 山東省棗莊市滕州市2023-2024學(xué)年高二上學(xué)期1月期末考試物理試題
- 售前解決方案部門管理規(guī)章制度
評論
0/150
提交評論