版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、工學(xué)ch04-C51及編程工學(xué)ch04-C51及編程C語(yǔ)言的特點(diǎn)和應(yīng)用n編譯型程序設(shè)計(jì)語(yǔ)言n兼有高級(jí)語(yǔ)言之特點(diǎn),匯編語(yǔ)言之功能n結(jié)構(gòu)化,模塊化支持n可讀性強(qiáng),便于維護(hù),縮短開(kāi)發(fā)周期n代碼可重用,可移植n已成為嵌入式系統(tǒng)開(kāi)發(fā)的主流選擇n可以與匯編混合編程C語(yǔ)言的優(yōu)點(diǎn)語(yǔ)言的優(yōu)點(diǎn)n 廣泛的支持廣泛的支持u非常方便非常方便u編譯,集成開(kāi)發(fā)環(huán)境編譯,集成開(kāi)發(fā)環(huán)境n 可移植可移植u源代碼不依賴特定的硬件體系源代碼不依賴特定的硬件體系(指令系統(tǒng)指令系統(tǒng))u源代碼另行編譯就可支持其它系列的源代碼另行編譯就可支持其它系列的CPUn 庫(kù)函數(shù)豐富庫(kù)函數(shù)豐富u內(nèi)部函數(shù)支持內(nèi)部函數(shù)支持C語(yǔ)言的運(yùn)算語(yǔ)言的運(yùn)算u數(shù)學(xué)函數(shù)、
2、特別是浮點(diǎn)運(yùn)算庫(kù)數(shù)學(xué)函數(shù)、特別是浮點(diǎn)運(yùn)算庫(kù)u字符串處理字符串處理n 嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)u簡(jiǎn)化的程序開(kāi)發(fā)簡(jiǎn)化的程序開(kāi)發(fā)u向平臺(tái)應(yīng)用靠攏向平臺(tái)應(yīng)用靠攏 C-51與與ASM-51對(duì)比對(duì)比n只要求了解,不要求徹底掌握指令系統(tǒng)只要求了解,不要求徹底掌握指令系統(tǒng)n寄存器分配、不同存貯器的尋址由編譯器管理;寄存器分配、不同存貯器的尋址由編譯器管理;n通過(guò)庫(kù)函數(shù),支持更多數(shù)據(jù)類型,甚至浮點(diǎn)數(shù);通過(guò)庫(kù)函數(shù),支持更多數(shù)據(jù)類型,甚至浮點(diǎn)數(shù);n程序結(jié)構(gòu)化:即函數(shù)調(diào)用函數(shù);程序結(jié)構(gòu)化:即函數(shù)調(diào)用函數(shù);n代碼效率高,可讀性好;代碼效率高,可讀性好;C51與ANSI C的區(qū)別n 要求掌握要求掌握MCS-51MCS
3、-51系列的存貯器組織;系列的存貯器組織;n 變量的定義必須具體指出存儲(chǔ)空間,否則編譯器變量的定義必須具體指出存儲(chǔ)空間,否則編譯器不能正確地分配和定位。不能正確地分配和定位。n 增加了位變量增加了位變量n 增加了特殊功能寄存器增加了特殊功能寄存器n 增加了中斷函數(shù)的支持增加了中斷函數(shù)的支持n 如果你對(duì)如果你對(duì)C已經(jīng)忘掉,就應(yīng)該復(fù)習(xí)一下。已經(jīng)忘掉,就應(yīng)該復(fù)習(xí)一下。n 考不及格的都是不肯接受該建議,也不肯好好做實(shí)驗(yàn)考不及格的都是不肯接受該建議,也不肯好好做實(shí)驗(yàn)的。的。關(guān)鍵詞關(guān)鍵詞 存儲(chǔ)空間存儲(chǔ)空間 地址范圍地址范圍data 直接尋址片內(nèi)直接尋址片內(nèi)RAM0 x00-0 x7fidata 間接尋址片
4、內(nèi)間接尋址片內(nèi)RAM 0 x00-0 xffbdata 可位尋址片內(nèi)可位尋址片內(nèi)RAM0 x20-0 x2F 按字節(jié)訪問(wèn)按字節(jié)訪問(wèn)bit 在在bdata空間定空間定義義0 x00-0 x7F 按位訪問(wèn)按位訪問(wèn)sfr 特殊功能寄存器特殊功能寄存器0 x80-0 xff sbit 特殊功能寄存器中的可位尋址的位特殊功能寄存器中的可位尋址的位xdata 擴(kuò)展擴(kuò)展 RAM 0 x0000-0 xffff pdata 頁(yè)式尋址擴(kuò)展頁(yè)式尋址擴(kuò)展RAM0 xPP00-0 xPPff PP=(P2)code 程序程序ROM 0 x0000-0 xffffC-51數(shù)據(jù)的存儲(chǔ)類型數(shù)據(jù)的存儲(chǔ)類型存儲(chǔ)類型的變量的定義
5、n 一般格式 數(shù)據(jù)類型 存儲(chǔ)類型 變量名;n 帶存儲(chǔ)類型的變量定義舉例char data var1;bit bdata flags;float idata x,y,z;unsigned int pdata var2;unsigned char vector34;char data var1;bit flags;unsigned char xdata vector10;存儲(chǔ)模式存儲(chǔ)模式nSMALL默認(rèn)的存儲(chǔ)類型是datanCOMPACT默認(rèn)的存儲(chǔ)類型是pdatanLARGE默認(rèn)的存儲(chǔ)類型是xdata開(kāi)發(fā)環(huán)境默認(rèn)的初始狀態(tài)是SMALL可以修改C51的基本數(shù)據(jù)類型的基本數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度(bit)
6、長(zhǎng)度(byte)值域bit110,1unsigned char810255signed char81128127unsigned int 162065535signed int 1623276832767unsigned long32404294967295signed long 32421474836482147483647float 3241.176E383.40E+38(6位數(shù)字)double6481.176E383.40E+38(10位數(shù)字)整型數(shù)的存儲(chǔ)結(jié)構(gòu) 0 x120 x34+0+1地址 0 x120 x340 x560 x78.+0+1+2+3地址 長(zhǎng)整型變量的存儲(chǔ)結(jié)構(gòu) 浮點(diǎn)型變
7、量(float)n 4個(gè)字節(jié)(32位),IEEE-754標(biāo)準(zhǔn)n 含數(shù)符、階碼和尾數(shù)三部分u 1位符號(hào)位: “0正1負(fù)”u 8位階碼(2的指數(shù)):偏移0 x7Fu 24位尾數(shù)。最高位始終為“1”,實(shí)際不占位,只保存23位。具有24位精度例:浮點(diǎn)數(shù) 的存儲(chǔ)形式是: 0 xC1480000C51的數(shù)據(jù)類型擴(kuò)充定義的數(shù)據(jù)類型擴(kuò)充定義SFRnsfr:特殊功能寄存器聲明特殊功能寄存器聲明 sfr sfr-name = 地址;nsfr16:16位位sfr的寄存器聲明的寄存器聲明例:例:sfr SCON = 0 x98; / 串口通信方式字地址 sfr TMOD = 0 x89;/ 定時(shí)/計(jì)數(shù)器方式字地址 s
8、fr P0 = 0 x80 ; / 定義P0口地址 sfr P1 = 0 x90 ; / 定義P1口地址 sfr16 T2 = 0 xCC; n用法:頭文件預(yù)定義所有用法:頭文件預(yù)定義所有SFR,只要加,只要加include到源程序頭部即可。到源程序頭部即可。C51的數(shù)據(jù)類型擴(kuò)充定義的數(shù)據(jù)類型擴(kuò)充定義bitnbit:位變量聲明位變量聲明nsbit:u特殊功能寄存器的位聲明特殊功能寄存器的位聲明 例:例:sbit OV = PSW2;u已聲明已聲明bdata型型8位或位或16位變量的按位定義位變量的按位定義例:例:unsigned char bdata x1; sbit Motor = x15;
9、例例1 先定義變量的數(shù)據(jù)類型和存儲(chǔ)類型:bdata int ibase; /* 定義ibase為bdata整型變量 */bdata char bary4;/* bary4定義為bdata字符型數(shù)組 */然后可使用sbit定義可獨(dú)立尋址訪問(wèn)的對(duì)象位:sbit mybit0 = ibase0 ;/* mybit0定義為ibase的第0位 */sbit mybit15 = ibase15;/* mybit0定義為ibase的第15位 */sbit Ary07 = bary07 ; /* Ary07定義為abry0的第7位 */sbit Ary37 = bary37 ; /* Ary37定義為abry
10、3的第7位 */ 對(duì)象ibase和bary也可以字節(jié)尋址: ary37=0; /* bary3的第7位賦值為0 */ bary3=a; /* 字節(jié)尋址,bary3 賦值為a */ sfr PSW=0 xD0 ; /* 定義PSW寄存器地址為D0H */ sbit OV=PSW2 ; /* 定義OV位為,地址為D2H */ sbit CY=PSW7 ; /* 定義CY位為,地址為D7H */ C-51的常用頭文件的常用頭文件n reg51.h 定義特殊功能寄存器和位寄存器定義特殊功能寄存器和位寄存器n 浮點(diǎn)運(yùn)算庫(kù)浮點(diǎn)運(yùn)算庫(kù)n 字符函數(shù)字符函數(shù)n 標(biāo)準(zhǔn)輸入輸出標(biāo)準(zhǔn)輸入輸出n 標(biāo)準(zhǔn)庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)n
11、 輔助宏,支持絕對(duì)地址說(shuō)明輔助宏,支持絕對(duì)地址說(shuō)明例:例:I/O口定義口定義#include #define port XBYTE0 x1000+ - + - * * / / (加(加 減減 乘乘 除)除) = = (位右移(位右移 位左移)位左移)& |& | ( (按位與按位與 按位或按位或) ) ( (按位異或按位異或 按位取反按位取反) )C51的運(yùn)算符(與的運(yùn)算符(與ANSI C相同相同)清零程序清零程序 ( (將將202XH20FFH202XH20FFH的內(nèi)容清零的內(nèi)容清零) ) C C5151程序程序#include #include main( )main( ) int i;
12、int i; unsigned char xdata unsigned char xdata * *p=0 x202X;p=0 x202X; / / 指針指向指針指向202XH202XH單元單元 for(i=0;i256;i+)for(i=0;i256;i+) * *p=0;p=0; p+; p+; / /* *清零清零202XH-20FFH202XH-20FFH單元單元* */ / ; 匯編語(yǔ)言程序匯編語(yǔ)言程序 ORG 0000HORG 0000HL00: MOV R0,#10H ;L00: MOV R0,#10H ;查找查找1616個(gè)字節(jié)個(gè)字節(jié) MOV R1,#00HMOV R1,#00H
13、 MOV DPTR,#202XH MOV DPTR,#202XHL11: MOVX A,DPTRL11: MOVX A,DPTR CJNE A,#00H,L16 ; CJNE A,#00H,L16 ;取出內(nèi)容與取出內(nèi)容與00H00H相等嗎相等嗎? ? INC R1 ; INC R1 ;取出個(gè)數(shù)加取出個(gè)數(shù)加1 1L16: INC DPTRL16: INC DPTR DJNZ R0,L11 ; DJNZ R0,L11 ;未完繼續(xù)未完繼續(xù) MOV DPTR,#2100HMOV DPTR,#2100H MOV A,R1 MOV A,R1 MOVX DPTR,A ; MOVX DPTR,A ;相同數(shù)個(gè)數(shù)
14、送相同數(shù)個(gè)數(shù)送2100H2100HL1E: SJMP L1EL1E: SJMP L1E例:查找零的個(gè)數(shù)(在例:查找零的個(gè)數(shù)(在202XH-200FH202XH-200FH中查出有幾個(gè)字中查出有幾個(gè)字 節(jié)節(jié)是零,把個(gè)數(shù)放在是零,把個(gè)數(shù)放在2100H2100H單元中)匯編很麻煩單元中)匯編很麻煩C51查找零的個(gè)數(shù)程序查找零的個(gè)數(shù)程序#include main ( ) unsigned char xdata *p = 0 x202X; /指針指針p指向指向202XH單元單元 int n=0,i; for (i=0;i16;i+) if(*p=0) n+; / 若該單元內(nèi)容為零,則若該單元內(nèi)容為零,則
15、n+1 p+; / 指針指向下一單元指針指向下一單元 p = 0 x2100; / 指針指針p指向指向2100H單元單元 *p = n; / 把個(gè)數(shù)放在把個(gè)數(shù)放在2100H單元中單元中C51-程序開(kāi)發(fā)環(huán)境C51編譯器連接器(多模塊目標(biāo)代碼,庫(kù))生成可執(zhí)行的代碼程序集成環(huán)境KEIL/Franklin代碼緊湊和使用方便存儲(chǔ)器類型idataxdatapdatadatacode值12345通用指針通用指針n ANSI C的指針被C51沿用,表示地址;n 擴(kuò)展通用一般指針:n C51所特有,增加了指針變量的類型,由3個(gè)字節(jié)構(gòu)成存儲(chǔ)類型偏移地址高位偏移地址低位指針存儲(chǔ)地址+0+1+2例:指向擴(kuò)展RAM 的
16、0 x1234地址,指針可表示為地址+0+1+2內(nèi)容0 x020 x120 x34 用常數(shù)作指針,常用于一些宏,例如XBYTE #define XBYTE ( (char *) 0 x202X0L) / 類型2 偏移量0000H 如果將常數(shù)值0 x09寫(xiě)入絕對(duì)地址為0 x8000的外部數(shù)據(jù)存儲(chǔ)器。語(yǔ)句可以為XBYTE0 x8000 = 0 x09 ; XBYTE被定義為一般指針, XBYTE8000指向外部數(shù)據(jù)存儲(chǔ)器的0 x8000絕對(duì)地址。Keil編程環(huán)境的使用nKeil支持MCS-51n以工程為單位管理源代碼只一個(gè)模塊也要建立工程n模塊化的開(kāi)發(fā)n連接生成可下載到芯片的執(zhí)行程序n支持聯(lián)機(jī)調(diào)試
17、n軟件模擬運(yùn)行逼真可信調(diào)試:觀察執(zhí)行過(guò)程中的寄存器存儲(chǔ)器(變量)CPU狀態(tài),外設(shè)輸入輸出等;模塊化編程ASM FilesC51 Files匯編編譯.OBJ.OBJLibLIB51LINK, LOCHexLibHex文件可以固化到芯片中運(yùn)行文件可以固化到芯片中運(yùn)行集成開(kāi)發(fā)環(huán)境Keil Vision2n功能:51系列開(kāi)發(fā)環(huán)境/各大廠商芯片支持n語(yǔ)言:C51高級(jí)語(yǔ)言/ASM51匯編語(yǔ)言/混合編程n編輯、匯編、編譯、生成目標(biāo)代碼n調(diào)試:純軟件模擬/聯(lián)機(jī)調(diào)試n觀察修改寄存器窗口、源程序窗口、內(nèi)部數(shù)據(jù)窗口、代碼窗口、外部數(shù)據(jù)窗口n單步、宏單步跟蹤執(zhí)行、連續(xù)執(zhí)行n斷點(diǎn)n執(zhí)行時(shí)間觀察,主窗口文件菜單n建立新文
18、件n打開(kāi)已存在文件n 保存n 另存為n保存全部工程菜單n 建立新工程n 打開(kāi)新工程n 關(guān)閉工程n 其余不常用或使用工具欄已有工程可以利用文件關(guān)聯(lián),雙擊自動(dòng)打開(kāi)。新建一個(gè)工程nWindows功能新建一個(gè)文件夾;nKeil新建一個(gè)文本文件,并保存,(也可以是拷貝一個(gè)文件到該文件夾)n新建工程,輸入工程名,選擇到上述文件夾并保存n彈出器件選擇顯示為廠商,再點(diǎn)擊前面的“+”號(hào),就能展開(kāi)選擇廠商選擇器件類似可選其它廠商的其它型號(hào)工程窗口nTarget項(xiàng),點(diǎn)擊可以改名(如需要)n在Target區(qū)域點(diǎn)擊右鍵,將出現(xiàn)浮動(dòng)窗口n點(diǎn)擊Options for Option_Targetn Xtal中選晶體頻率,影響
19、指令執(zhí)行時(shí)間的顯示n 核選Use On-Chip ROM(0 x0-ox1FFF)n Off-Chip選項(xiàng)Option_Output如果需要,預(yù)先建立一個(gè)文件夾以存放中間文件,這里點(diǎn)擊“Select Fold for Objects”如果目標(biāo)代碼需要下載到芯片中運(yùn)行,就需要核選Create Hex File添加文件Target前有加號(hào),表示已經(jīng)有程序組;如沒(méi)有,右鍵點(diǎn)選Targets,Group,Files創(chuàng)建;右鍵點(diǎn)擊一個(gè)組,選擇Add Files to Group 工程文件的組成可以有多個(gè)組每個(gè)組可以有多個(gè)文件編輯修改文件n點(diǎn)擊工程窗口的文件名,編輯窗中出現(xiàn)文件,可以任意修改,只要符合語(yǔ)法;n語(yǔ)法敏感編譯/匯編/連接n 對(duì)C51語(yǔ)言是編譯;對(duì)ASM51語(yǔ)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 誠(chéng)信教育活動(dòng)方案
- 培養(yǎng)管理能力
- 品質(zhì)經(jīng)理的年終總結(jié)
- 禮貌課課件教學(xué)課件
- 采樣定理課件教學(xué)課件
- 2.3.2氣體摩爾體積 課件高一上學(xué)期化學(xué)人教版(2019)必修第一冊(cè)
- 吉林省2024七年級(jí)數(shù)學(xué)上冊(cè)第2章整式及其加減階段綜合訓(xùn)練范圍2.4課件新版華東師大版
- 流行病調(diào)查畢業(yè)論文
- 文明出行校園交通安全教育主題班會(huì)課件
- 模特形象培訓(xùn)課程
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設(shè)計(jì)規(guī)范
- 綜合實(shí)踐活動(dòng)課《早餐與健康》優(yōu)質(zhì)課件
- 《中華民族共同體概論》考試復(fù)習(xí)題庫(kù)(含答案)
- 2022-2023學(xué)年武漢市江岸區(qū)七年級(jí)英語(yǔ)上學(xué)期期中質(zhì)量檢測(cè)卷附答案
- 新能源汽車技術(shù)職業(yè)生涯人物訪談報(bào)告
- 綠化養(yǎng)護(hù)報(bào)價(jià)表(共8頁(yè))
- 結(jié)構(gòu)工程工作危害分析(JHA)
- 列管式冷卻器GLC型冷卻器尺寸表
- 中考物理專題21 歐姆定律的動(dòng)態(tài)電路計(jì)算(原卷版)
- 辦公室辦文工作流程圖
- 工程鉆機(jī)產(chǎn)品合格證
評(píng)論
0/150
提交評(píng)論