第4章_單片機(jī)的C51編程語(yǔ)言_1_第1頁(yè)
第4章_單片機(jī)的C51編程語(yǔ)言_1_第2頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第4章_單片機(jī)的c51編程語(yǔ)言 單片機(jī) 學(xué)習(xí) 第4章 單片機(jī)的c51編程語(yǔ)言 2021-7-11 單片機(jī) 學(xué)習(xí) 第4章 單片機(jī)的c51編程語(yǔ)言 4.1 c51編程語(yǔ)言概述 4.2 c51的標(biāo)識(shí)符和關(guān)鍵字 4.3 c51的變量與數(shù)據(jù)類(lèi)型 4.4 c51語(yǔ)言的數(shù)組、指針與結(jié)構(gòu) 4.5 c51的運(yùn)算符和表達(dá)式 4.6 c51語(yǔ)言的程序結(jié)構(gòu) 4.7 c51語(yǔ)言的函數(shù) 4.8 中斷服務(wù)程序 4.9 c51的預(yù)處理 4.10 c51的庫(kù)函數(shù) 4.11 使用c5i編譯器時(shí)的留意事項(xiàng)2 2021-7-11 單片機(jī) 學(xué)習(xí) 4.1 c51編程語(yǔ)言概述c語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言,可產(chǎn)生緊湊代碼 c語(yǔ)言可以進(jìn)行很多機(jī)器級(jí)

2、函數(shù)掌握而不用匯編語(yǔ) 言。c語(yǔ)言目前已成為電子工程師進(jìn)行單片機(jī)系統(tǒng)編程 時(shí)的首選編程語(yǔ)言。用c語(yǔ)言來(lái)編寫(xiě)目標(biāo)系統(tǒng)軟件 ,會(huì)大大縮短開(kāi)發(fā)周期,且明顯地增加軟件的可讀 性,便于改進(jìn)和擴(kuò)充?;?1系列單片機(jī)的c語(yǔ)言 或c語(yǔ)言編譯器簡(jiǎn)稱(chēng)為c51語(yǔ)言或c51。2021-7-11 3 單片機(jī) 學(xué)習(xí) c51語(yǔ)言編程與匯編語(yǔ)言編程相比的優(yōu)勢(shì) 1.可讀性好、編程調(diào)試敏捷便利 2.生成的代碼編譯效率高 3.完全模塊化 4.可移植性好 5.便于項(xiàng)目維護(hù)管理 2021-7-11 單片機(jī) 學(xué)習(xí) 單片機(jī)c51與標(biāo)準(zhǔn)ansl c編譯器的主要區(qū)分以keil公司的keil c5l(以下簡(jiǎn)稱(chēng)c5l)編譯器為例 c5l系列頭文件

3、集中體現(xiàn)了各系列芯片的不同功能 c5l比ansi c多一種“位”類(lèi)型 數(shù)據(jù)存儲(chǔ)類(lèi)型有很大的區(qū)分 函數(shù)的使用上,由于單片機(jī)系統(tǒng)的資源有限,它的編譯系統(tǒng)不允許太多的 程序嵌套 c5l與標(biāo)準(zhǔn)ansi c庫(kù)函數(shù),由于部分庫(kù)函數(shù)不適合單片機(jī)處理系統(tǒng),因此 被排解在外,如字符屏幕和圖形函數(shù)。也有一些庫(kù)函數(shù)連續(xù)使用,但這些庫(kù) 函數(shù)是廠(chǎng)家針對(duì)硬件特點(diǎn)相應(yīng)開(kāi)發(fā)的,它們與ansi c的構(gòu)成及用法都有很 大的區(qū)分,如printf和scanf。在ansi c中這兩個(gè)函數(shù)通常用于屏幕打印和接 收字符,而在c5l中,它們則主要用于串行通信口數(shù)據(jù)的發(fā)送和接收。 2021-7-11 單片機(jī) 學(xué)習(xí) c51的開(kāi)發(fā)過(guò)程例4-1 設(shè)

4、圖1-2系統(tǒng)要求是:當(dāng)s1閉合時(shí),報(bào)警燈亮;而s1打開(kāi)時(shí),報(bào)警燈滅 。用c51語(yǔ)言編寫(xiě)實(shí)現(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中,使用“/* */”和“/”符號(hào)進(jìn)行解釋。解釋不影響程序的功能,用于說(shuō) 明程序的用途、功能,增加程序的可讀性和可維護(hù)性。編譯后解釋不存在,不 影響運(yùn)行文

5、件的大小。優(yōu)秀的程序設(shè)計(jì)人員要養(yǎng)成良好的解釋習(xí)慣,一般在程 序的開(kāi)頭要寫(xiě)解釋?zhuān)砻鞒绦虻囊?、功能,編?xiě)人員,編寫(xiě)日期,版本號(hào)等 信息。 2021-7-11 單片機(jī) 學(xué)習(xí) 使用任何文本編輯軟件,或keil c集成的編輯系統(tǒng)書(shū)寫(xiě) c以上程序。 使用keil c的c51編譯器和連接軟件(用keil c集 成開(kāi) 發(fā)工具uvision中的build target批處理),生成可以寫(xiě)入 單片機(jī)的目標(biāo)文件,通常為hex文件(ex4-1.hex) 用程序燒錄器將該文件寫(xiě)入單片機(jī),單片機(jī)上電即可運(yùn) 行。 同時(shí)build target還生成很多中間文件,用于程序的調(diào)試 ,例如,從ex4-1.lst文件中可以觀(guān)察

6、c程序編譯后生成的 匯編程序,由此可以理解單片機(jī)硬件詳細(xì)的執(zhí)行過(guò)程, 還可以對(duì)c程序編程的效率進(jìn)行了解。 2021-7-11 單片機(jī) 學(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é)果與我們大多人用匯編語(yǔ)言的編程結(jié) 果相同,但是c51語(yǔ)言的可讀性更好,特殊是當(dāng)程序更加簡(jiǎn)單時(shí), c51語(yǔ)言

7、有明顯的優(yōu)勢(shì)。 2021-7-11 單片機(jī) 學(xué)習(xí) c51的標(biāo)識(shí)符和關(guān)鍵字 標(biāo)識(shí)符用來(lái)標(biāo)識(shí)源程序中某個(gè)對(duì)象的名字,這些對(duì)象可 以是語(yǔ)句、數(shù)據(jù)類(lèi)型、函數(shù)、變量、數(shù)組等。 c語(yǔ)言是區(qū)分大小寫(xiě)的一種高級(jí)語(yǔ)言。 標(biāo)識(shí)符由字符串、數(shù)字和下劃線(xiàn)等組成,第一個(gè)字符必 須是字母或下劃線(xiàn) 錯(cuò)誤的標(biāo)識(shí)符,編譯時(shí)會(huì)有錯(cuò)誤提示。 c5l中有些庫(kù)函數(shù)的標(biāo)識(shí)符是以下劃線(xiàn)開(kāi)頭的,所以一 般不要以下劃線(xiàn)開(kāi)頭命名標(biāo)識(shí)符。 2021-7-11 單片機(jī) 學(xué)習(xí) 表4-1 ansi c標(biāo)準(zhǔn)關(guān)鍵字 關(guān)鍵字 auto break 用途 存儲(chǔ)種類(lèi)說(shuō)明 程序語(yǔ)句 說(shuō)明 用于聲明局部變量,為默認(rèn)值 退出最內(nèi)層循環(huán)體 casechar const

8、continue default do double else enum extern float for goto 程序語(yǔ)句數(shù)據(jù)類(lèi)型聲明 存儲(chǔ)種類(lèi)說(shuō)明 程序語(yǔ)句 程序語(yǔ)句 程序語(yǔ)句 數(shù)據(jù)類(lèi)型聲明 程序語(yǔ)句 數(shù)據(jù)類(lèi)型聲明 存儲(chǔ)種類(lèi)說(shuō)明 數(shù)據(jù)類(lèi)型聲明 程序語(yǔ)句 程序語(yǔ)句 switch語(yǔ)句中的選擇項(xiàng)單字節(jié)整型數(shù)或字符型數(shù)據(jù) 在程序執(zhí)行過(guò)程中不行修改的值 轉(zhuǎn)向下一次循環(huán) switch語(yǔ)句中缺省選擇項(xiàng) 構(gòu)成dowhile 循環(huán)結(jié)構(gòu) 雙精度浮點(diǎn)數(shù) 構(gòu)成ifelse 條件結(jié)構(gòu) 枚舉類(lèi)型數(shù)據(jù) 在其他程序模塊中聲明白的全局變量 單精度浮點(diǎn)數(shù) 構(gòu)成for循環(huán)結(jié)構(gòu) 構(gòu)成goto循環(huán)結(jié)構(gòu) ifint2021-7-1

9、1 程序語(yǔ)句數(shù)據(jù)類(lèi)型聲明 構(gòu)成ifelse 條件結(jié)構(gòu)整型數(shù)10 單片機(jī) 學(xué)習(xí) long register return short signed sizeof static struct switch typedef union unsigned void volatile while 數(shù)據(jù)類(lèi)型聲明 存儲(chǔ)種類(lèi)說(shuō)明 程序語(yǔ)句 數(shù)據(jù)類(lèi)型聲明 數(shù)據(jù)類(lèi)型聲明 運(yùn)算符 存儲(chǔ)種類(lèi)說(shuō)明 數(shù)據(jù)類(lèi)型聲明 程序語(yǔ)句 數(shù)據(jù)類(lèi)型聲明 數(shù)據(jù)類(lèi)型聲明 數(shù)據(jù)類(lèi)型聲明 數(shù)據(jù)類(lèi)型聲明 數(shù)據(jù)類(lèi)型聲明 程序語(yǔ)句 長(zhǎng)整型數(shù) 使用cpu內(nèi)部寄存器變量 函數(shù)返回 短整型 有符號(hào)整型數(shù) 計(jì)算表達(dá)式或數(shù)據(jù)類(lèi)型的字節(jié)數(shù) 靜態(tài)變量 結(jié)構(gòu)體類(lèi)型數(shù)

10、據(jù) 構(gòu)成switch選擇結(jié)構(gòu) 重新進(jìn)行數(shù)據(jù)類(lèi)型定義 聯(lián)合類(lèi)型數(shù)據(jù) 無(wú)符號(hào)數(shù)據(jù) 無(wú)類(lèi)型數(shù)據(jù)或函數(shù) 聲明該變量在程序執(zhí)行中可被隱含 地轉(zhuǎn)變 構(gòu)成while和dowhile循環(huán)結(jié)構(gòu) 2021-7-11 單片機(jī) 學(xué)習(xí) 表4-2 c51編譯器擴(kuò)充關(guān)鍵字 關(guān)鍵字_at_ _priority_ _task_ 用途地址定位 多任務(wù)優(yōu)先聲明 任務(wù)聲明 說(shuō)明為變量進(jìn)行肯定地址定位 規(guī)定rtx51或rtx51 tiny的任務(wù)優(yōu)先級(jí) 定義實(shí)時(shí)多任務(wù)函數(shù) alienbdata bit code compact data 函數(shù)特性聲明存儲(chǔ)器類(lèi)型聲明 位變量聲明 存儲(chǔ)器類(lèi)型聲明 存儲(chǔ)器模式 存儲(chǔ)器類(lèi)型聲明 用于聲明與pl/

11、m51兼容的函數(shù)可位尋址的mcs-51內(nèi)部數(shù)據(jù)存儲(chǔ)器 聲明一個(gè)位變量或位類(lèi)型函數(shù) mcs-51的程序存儲(chǔ)空間 按compact模式安排變量的存儲(chǔ)空間 直接尋址mcs-51的內(nèi)部數(shù)據(jù)寄存器 2021-7-11 單片機(jī) 學(xué)習(xí) idata interrupt large pdata 存儲(chǔ)器類(lèi)型聲明 中斷函數(shù)聲明 存儲(chǔ)器模式 存儲(chǔ)器類(lèi)型聲明 間接尋址mcs-51的內(nèi)部數(shù)據(jù)寄存器 定義一個(gè)中斷服務(wù)函數(shù) 按large模式安排變量的存儲(chǔ)空間 分頁(yè)尋址的mcs-5外部數(shù)據(jù)空間 sbitsfr sfr16 small using xdata 位變量聲明特別功能寄存器聲明 特別功能寄存器聲明 存儲(chǔ)器模式 寄存器組

12、定義 存儲(chǔ)器類(lèi)型聲明 聲明一個(gè)位變量聲明一個(gè)8位特別功能寄存器 聲明一個(gè)16位特別功能寄存器 按small模式安排變量的存儲(chǔ)空間 定義mcs-5的工作寄存器組 定義mcs-5外部數(shù)據(jù)空間 2021-7-11 單片機(jī) 學(xué)習(xí) 4.3 c51的變量與數(shù)據(jù)類(lèi)型1.常量 常量又稱(chēng)為標(biāo)量,它的值在程序執(zhí)行過(guò)程中不能轉(zhuǎn)變,常量的數(shù)據(jù)類(lèi)型有整型 、浮點(diǎn)型字符型和字符串型等。 實(shí)際使用中用#define定義在程序中常常用到的常量,或者可能需要依據(jù)不同的 狀況進(jìn)行更改的常量,例如譯碼地址。而不是在程序中直接使用常量值。這樣 一方面有助于提高程序的可讀性,另一方面也便于程序的修改和維護(hù),例如: #define pi

13、 3.14 /以后的編程中用pi代替浮點(diǎn)數(shù)常量3.14,便于閱讀 /長(zhǎng)整型常量用sysclk代替12mhz時(shí)鐘 /用字符true,在規(guī)律運(yùn)算中代替1 /用star表示字符“*” /用uint 代替unsigned int,簡(jiǎn)化編輯14 #define sysclk 12000000 #define true 1 #define star * #define uint unsigned int2021-7-11 單片機(jī) 學(xué)習(xí) 例如語(yǔ)句:if(key= =true) ,與語(yǔ)句if(key= =1) 相同。 c51語(yǔ)言(匯編語(yǔ)言也是同樣)編輯時(shí),除解釋外,要使用英文符 號(hào),例如上述定義的字符“*”,

14、在程序中是用英文的單引號(hào),而 不是中文符號(hào)單引號(hào); 2021-7-11 單片機(jī) 學(xué)習(xí) 常量分為: 1)整型常量。整型常量值:可用十進(jìn)制表示,如128,-35等;也可 以用十六進(jìn)制表示,如0x1000。 2)浮點(diǎn)型常量。如0.12、-10.3等。 3)字符型常量。字符型常量是用單引號(hào)括起來(lái)的一個(gè)字符,如a 、 0 、= 等,編譯程序?qū)堰@些字符型常量轉(zhuǎn)換為ascii碼,例如 a 等于0x41。對(duì)于不行顯示的掌握字符,可直接寫(xiě)出字符的ascii 碼,或者在字符前加上反斜杠“”組 成轉(zhuǎn)義符。轉(zhuǎn)義符可以完成一些 特別功能和格式掌握。 4)字符串型常量。字符串型常量用一對(duì)雙引號(hào)括起一串字符來(lái)表示, 如“

15、hello”、“ok”等。字符串型常量由雙引號(hào)作為界限符。當(dāng)字符 串中需要消失雙引號(hào)時(shí),需使用轉(zhuǎn)義字符“”來(lái)表示。 2021-7-11 單片機(jī) 學(xué)習(xí) 表4-3 常用的轉(zhuǎn)義符 轉(zhuǎn)義字符 0 含義 空字符(null) ascii碼 16進(jìn)制(10進(jìn)制) 0x00 nr t 換行符(lf)回車(chē)符(cr) 水平制表符(ht) 0x0a0x0d 0x09 ” 單引號(hào)雙引號(hào) 反斜杠 0x270x22 0x5c 2021-7-11 單片機(jī) 學(xué)習(xí) 變量變量是一種在程序執(zhí)行過(guò)程中,其數(shù)值不斷變化的量。 c51規(guī)定變量必需先定義后使用。 c51的變量主要有表4-4中的各種數(shù)據(jù)類(lèi)型,而sfr、sfr16 、sbit三種數(shù)據(jù)類(lèi)型用于對(duì)mcs-51單片機(jī)的特別功能寄存 器(sfr)的操作,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論