版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第4章_單片機的c51編程語言 單片機 學(xué)習(xí) 第4章 單片機的c51編程語言 2021-7-11 單片機 學(xué)習(xí) 第4章 單片機的c51編程語言 4.1 c51編程語言概述 4.2 c51的標(biāo)識符和關(guān)鍵字 4.3 c51的變量與數(shù)據(jù)類型 4.4 c51語言的數(shù)組、指針與結(jié)構(gòu) 4.5 c51的運算符和表達(dá)式 4.6 c51語言的程序結(jié)構(gòu) 4.7 c51語言的函數(shù) 4.8 中斷服務(wù)程序 4.9 c51的預(yù)處理 4.10 c51的庫函數(shù) 4.11 使用c5i編譯器時的留意事項2 2021-7-11 單片機 學(xué)習(xí) 4.1 c51編程語言概述c語言是一種結(jié)構(gòu)化語言,可產(chǎn)生緊湊代碼 c語言可以進(jìn)行很多機器級
2、函數(shù)掌握而不用匯編語 言。c語言目前已成為電子工程師進(jìn)行單片機系統(tǒng)編程 時的首選編程語言。用c語言來編寫目標(biāo)系統(tǒng)軟件 ,會大大縮短開發(fā)周期,且明顯地增加軟件的可讀 性,便于改進(jìn)和擴充?;?1系列單片機的c語言 或c語言編譯器簡稱為c51語言或c51。2021-7-11 3 單片機 學(xué)習(xí) c51語言編程與匯編語言編程相比的優(yōu)勢 1.可讀性好、編程調(diào)試敏捷便利 2.生成的代碼編譯效率高 3.完全模塊化 4.可移植性好 5.便于項目維護(hù)管理 2021-7-11 單片機 學(xué)習(xí) 單片機c51與標(biāo)準(zhǔn)ansl c編譯器的主要區(qū)分以keil公司的keil c5l(以下簡稱c5l)編譯器為例 c5l系列頭文件
3、集中體現(xiàn)了各系列芯片的不同功能 c5l比ansi c多一種“位”類型 數(shù)據(jù)存儲類型有很大的區(qū)分 函數(shù)的使用上,由于單片機系統(tǒng)的資源有限,它的編譯系統(tǒng)不允許太多的 程序嵌套 c5l與標(biāo)準(zhǔn)ansi c庫函數(shù),由于部分庫函數(shù)不適合單片機處理系統(tǒng),因此 被排解在外,如字符屏幕和圖形函數(shù)。也有一些庫函數(shù)連續(xù)使用,但這些庫 函數(shù)是廠家針對硬件特點相應(yīng)開發(fā)的,它們與ansi c的構(gòu)成及用法都有很 大的區(qū)分,如printf和scanf。在ansi c中這兩個函數(shù)通常用于屏幕打印和接 收字符,而在c5l中,它們則主要用于串行通信口數(shù)據(jù)的發(fā)送和接收。 2021-7-11 單片機 學(xué)習(xí) c51的開發(fā)過程例4-1 設(shè)
4、圖1-2系統(tǒng)要求是:當(dāng)s1閉合時,報警燈亮;而s1打開時,報警燈滅 。用c51語言編寫實現(xiàn)該功能的程序,程序名為ex4-1.c: #include reg51.h /定義mcs-51的特別功能寄存器sfr sbit p32 = p32; /定義 p3.2 為 p32 sbit p20 = p20; /定義 p2.0 為 p20 main( ) while(1) p32=1; if (p32=0) p20=1; else p20=0; 在c51中,使用“/* */”和“/”符號進(jìn)行解釋。解釋不影響程序的功能,用于說 明程序的用途、功能,增加程序的可讀性和可維護(hù)性。編譯后解釋不存在,不 影響運行文
5、件的大小。優(yōu)秀的程序設(shè)計人員要養(yǎng)成良好的解釋習(xí)慣,一般在程 序的開頭要寫解釋,表明程序的要求、功能,編寫人員,編寫日期,版本號等 信息。 2021-7-11 單片機 學(xué)習(xí) 使用任何文本編輯軟件,或keil c集成的編輯系統(tǒng)書寫 c以上程序。 使用keil c的c51編譯器和連接軟件(用keil c集 成開 發(fā)工具uvision中的build target批處理),生成可以寫入 單片機的目標(biāo)文件,通常為hex文件(ex4-1.hex) 用程序燒錄器將該文件寫入單片機,單片機上電即可運 行。 同時build target還生成很多中間文件,用于程序的調(diào)試 ,例如,從ex4-1.lst文件中可以觀察
6、c程序編譯后生成的 匯編程序,由此可以理解單片機硬件詳細(xì)的執(zhí)行過程, 還可以對c程序編程的效率進(jìn)行了解。 2021-7-11 單片機 學(xué)習(xí) ex4-1.lst文件 0000 0000 0002 0005 0007 0009 0009 000b ?c0001: d2b2 20b204 d2a0 80f7 ?c0003: c2a0 80f3 setb p32 jb p32,?c0003 setb p20 sjmp ?c0001 clr p20 sjmp ?c0001 可以看出,c編譯器編譯的結(jié)果與我們大多人用匯編語言的編程結(jié) 果相同,但是c51語言的可讀性更好,特殊是當(dāng)程序更加簡單時, c51語言
7、有明顯的優(yōu)勢。 2021-7-11 單片機 學(xué)習(xí) c51的標(biāo)識符和關(guān)鍵字 標(biāo)識符用來標(biāo)識源程序中某個對象的名字,這些對象可 以是語句、數(shù)據(jù)類型、函數(shù)、變量、數(shù)組等。 c語言是區(qū)分大小寫的一種高級語言。 標(biāo)識符由字符串、數(shù)字和下劃線等組成,第一個字符必 須是字母或下劃線 錯誤的標(biāo)識符,編譯時會有錯誤提示。 c5l中有些庫函數(shù)的標(biāo)識符是以下劃線開頭的,所以一 般不要以下劃線開頭命名標(biāo)識符。 2021-7-11 單片機 學(xué)習(xí) 表4-1 ansi c標(biāo)準(zhǔn)關(guān)鍵字 關(guān)鍵字 auto break 用途 存儲種類說明 程序語句 說明 用于聲明局部變量,為默認(rèn)值 退出最內(nèi)層循環(huán)體 casechar const
8、continue default do double else enum extern float for goto 程序語句數(shù)據(jù)類型聲明 存儲種類說明 程序語句 程序語句 程序語句 數(shù)據(jù)類型聲明 程序語句 數(shù)據(jù)類型聲明 存儲種類說明 數(shù)據(jù)類型聲明 程序語句 程序語句 switch語句中的選擇項單字節(jié)整型數(shù)或字符型數(shù)據(jù) 在程序執(zhí)行過程中不行修改的值 轉(zhuǎn)向下一次循環(huán) switch語句中缺省選擇項 構(gòu)成dowhile 循環(huán)結(jié)構(gòu) 雙精度浮點數(shù) 構(gòu)成ifelse 條件結(jié)構(gòu) 枚舉類型數(shù)據(jù) 在其他程序模塊中聲明白的全局變量 單精度浮點數(shù) 構(gòu)成for循環(huán)結(jié)構(gòu) 構(gòu)成goto循環(huán)結(jié)構(gòu) ifint2021-7-1
9、1 程序語句數(shù)據(jù)類型聲明 構(gòu)成ifelse 條件結(jié)構(gòu)整型數(shù)10 單片機 學(xué)習(xí) long register return short signed sizeof static struct switch typedef union unsigned void volatile while 數(shù)據(jù)類型聲明 存儲種類說明 程序語句 數(shù)據(jù)類型聲明 數(shù)據(jù)類型聲明 運算符 存儲種類說明 數(shù)據(jù)類型聲明 程序語句 數(shù)據(jù)類型聲明 數(shù)據(jù)類型聲明 數(shù)據(jù)類型聲明 數(shù)據(jù)類型聲明 數(shù)據(jù)類型聲明 程序語句 長整型數(shù) 使用cpu內(nèi)部寄存器變量 函數(shù)返回 短整型 有符號整型數(shù) 計算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù) 靜態(tài)變量 結(jié)構(gòu)體類型數(shù)
10、據(jù) 構(gòu)成switch選擇結(jié)構(gòu) 重新進(jìn)行數(shù)據(jù)類型定義 聯(lián)合類型數(shù)據(jù) 無符號數(shù)據(jù) 無類型數(shù)據(jù)或函數(shù) 聲明該變量在程序執(zhí)行中可被隱含 地轉(zhuǎn)變 構(gòu)成while和dowhile循環(huán)結(jié)構(gòu) 2021-7-11 單片機 學(xué)習(xí) 表4-2 c51編譯器擴充關(guān)鍵字 關(guān)鍵字_at_ _priority_ _task_ 用途地址定位 多任務(wù)優(yōu)先聲明 任務(wù)聲明 說明為變量進(jìn)行肯定地址定位 規(guī)定rtx51或rtx51 tiny的任務(wù)優(yōu)先級 定義實時多任務(wù)函數(shù) alienbdata bit code compact data 函數(shù)特性聲明存儲器類型聲明 位變量聲明 存儲器類型聲明 存儲器模式 存儲器類型聲明 用于聲明與pl/
11、m51兼容的函數(shù)可位尋址的mcs-51內(nèi)部數(shù)據(jù)存儲器 聲明一個位變量或位類型函數(shù) mcs-51的程序存儲空間 按compact模式安排變量的存儲空間 直接尋址mcs-51的內(nèi)部數(shù)據(jù)寄存器 2021-7-11 單片機 學(xué)習(xí) idata interrupt large pdata 存儲器類型聲明 中斷函數(shù)聲明 存儲器模式 存儲器類型聲明 間接尋址mcs-51的內(nèi)部數(shù)據(jù)寄存器 定義一個中斷服務(wù)函數(shù) 按large模式安排變量的存儲空間 分頁尋址的mcs-5外部數(shù)據(jù)空間 sbitsfr sfr16 small using xdata 位變量聲明特別功能寄存器聲明 特別功能寄存器聲明 存儲器模式 寄存器組
12、定義 存儲器類型聲明 聲明一個位變量聲明一個8位特別功能寄存器 聲明一個16位特別功能寄存器 按small模式安排變量的存儲空間 定義mcs-5的工作寄存器組 定義mcs-5外部數(shù)據(jù)空間 2021-7-11 單片機 學(xué)習(xí) 4.3 c51的變量與數(shù)據(jù)類型1.常量 常量又稱為標(biāo)量,它的值在程序執(zhí)行過程中不能轉(zhuǎn)變,常量的數(shù)據(jù)類型有整型 、浮點型字符型和字符串型等。 實際使用中用#define定義在程序中常常用到的常量,或者可能需要依據(jù)不同的 狀況進(jìn)行更改的常量,例如譯碼地址。而不是在程序中直接使用常量值。這樣 一方面有助于提高程序的可讀性,另一方面也便于程序的修改和維護(hù),例如: #define pi
13、 3.14 /以后的編程中用pi代替浮點數(shù)常量3.14,便于閱讀 /長整型常量用sysclk代替12mhz時鐘 /用字符true,在規(guī)律運算中代替1 /用star表示字符“*” /用uint 代替unsigned int,簡化編輯14 #define sysclk 12000000 #define true 1 #define star * #define uint unsigned int2021-7-11 單片機 學(xué)習(xí) 例如語句:if(key= =true) ,與語句if(key= =1) 相同。 c51語言(匯編語言也是同樣)編輯時,除解釋外,要使用英文符 號,例如上述定義的字符“*”,
14、在程序中是用英文的單引號,而 不是中文符號單引號; 2021-7-11 單片機 學(xué)習(xí) 常量分為: 1)整型常量。整型常量值:可用十進(jìn)制表示,如128,-35等;也可 以用十六進(jìn)制表示,如0x1000。 2)浮點型常量。如0.12、-10.3等。 3)字符型常量。字符型常量是用單引號括起來的一個字符,如a 、 0 、= 等,編譯程序?qū)堰@些字符型常量轉(zhuǎn)換為ascii碼,例如 a 等于0x41。對于不行顯示的掌握字符,可直接寫出字符的ascii 碼,或者在字符前加上反斜杠“”組 成轉(zhuǎn)義符。轉(zhuǎn)義符可以完成一些 特別功能和格式掌握。 4)字符串型常量。字符串型常量用一對雙引號括起一串字符來表示, 如“
15、hello”、“ok”等。字符串型常量由雙引號作為界限符。當(dāng)字符 串中需要消失雙引號時,需使用轉(zhuǎn)義字符“”來表示。 2021-7-11 單片機 學(xué)習(xí) 表4-3 常用的轉(zhuǎn)義符 轉(zhuǎn)義字符 0 含義 空字符(null) ascii碼 16進(jìn)制(10進(jìn)制) 0x00 nr t 換行符(lf)回車符(cr) 水平制表符(ht) 0x0a0x0d 0x09 ” 單引號雙引號 反斜杠 0x270x22 0x5c 2021-7-11 單片機 學(xué)習(xí) 變量變量是一種在程序執(zhí)行過程中,其數(shù)值不斷變化的量。 c51規(guī)定變量必需先定義后使用。 c51的變量主要有表4-4中的各種數(shù)據(jù)類型,而sfr、sfr16 、sbit三種數(shù)據(jù)類型用于對mcs-51單片機的特別功能寄存 器(sfr)的操作,
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 62841-3-8:2024 EN-FR Electric motor-operated hand-held tools,transportable tools and lawn and garden machinery - Safety - Part 3-8: Particular requirements for transpor
- 2024年廚房承包合同經(jīng)典版(三篇)
- 2024年安全生產(chǎn)隱患排查整改制度范例(二篇)
- 2024年工程材料購銷合同范本(二篇)
- 2024年商鋪租賃簡易合同參考范文(五篇)
- 2024年大學(xué)教師個人工作計劃例文(三篇)
- 2024年大學(xué)新學(xué)期學(xué)習(xí)計劃(六篇)
- 2024年安全生產(chǎn)專項資金使用制度例文(四篇)
- 【《廣州市番禺區(qū)河堤維修養(yǎng)護(hù)及質(zhì)量控制探究》4600字(論文)】
- 2024年安全生產(chǎn)自檢制度(二篇)
- 第一章單元試卷 浙教版科學(xué)八年級上冊
- 高三期中考試
- 《反間防諜教育》課件
- 透水磚鋪貼方案
- 部編版九年級世界歷史上冊教學(xué)案設(shè)計全套
- ST語言編程手冊
- 寺頭中學(xué)中考成績分析報告
- 房地產(chǎn)市場報告 -2023年第四季度佛山寫字樓市場報告
- 《國有企業(yè)采購操作規(guī)范》【2023修訂版】
- 2024年安徽交控集團招聘筆試參考題庫含答案解析
- 科技倫理課件
評論
0/150
提交評論