《單片機(jī)原理與接口技術(shù)》-第2章_第1頁
《單片機(jī)原理與接口技術(shù)》-第2章_第2頁
《單片機(jī)原理與接口技術(shù)》-第2章_第3頁
《單片機(jī)原理與接口技術(shù)》-第2章_第4頁
《單片機(jī)原理與接口技術(shù)》-第2章_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2.18051的編程語言C語言作為一種非常方便的語言而得到廣泛的應(yīng)用,C語言程序本身并不依賴于機(jī)器硬件系統(tǒng),基本上不做修改就可根據(jù)單片機(jī)的不同較快地移植過來。最好的單片機(jī)編程者應(yīng)是由匯編語言轉(zhuǎn)用C語言而不是原來用過標(biāo)準(zhǔn)C語言的人。與匯編語言相比,C語言有如下優(yōu)點(diǎn):(1)對(duì)單片機(jī)的指令系統(tǒng)不要求了解,僅要求對(duì)8051的存儲(chǔ)器結(jié)構(gòu)有初步了解;(2)對(duì)寄存器的分配、不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;下一頁返回2.18051的編程語言

(3)程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),這種方式可使程序結(jié)構(gòu)化;(4)具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;(5)關(guān)鍵字及運(yùn)算函數(shù)可用近似人的思維過程方式使用;(6)編程及程序調(diào)試時(shí)間顯著縮短,從而提高效率;(7)提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力;(8)已編好的程序容易植入新程序,因?yàn)镃語言具有方便的模塊化編程技術(shù)。上一頁下一頁返回2.18051的編程語言

2.1.1C51編譯器各公司的編譯器各有特點(diǎn),其整體特性對(duì)照如表2.1所示。C51程序的開發(fā)過程如圖2.1所示。2.1.2C51程序結(jié)構(gòu)上一頁下一頁返回2.18051的編程語言

1.C語言程序的一般組成結(jié)構(gòu)上一頁下一頁返回2.18051的編程語言

2.C51程序的編程要點(diǎn)(1)C語言是由函數(shù)構(gòu)成的。一個(gè)C源程序至少包含一個(gè)函數(shù)(main),也可以包含一個(gè)main函數(shù)和若干其他函數(shù)。(2)一個(gè)函數(shù)由兩部分組成。①函數(shù)說明部分。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、形式參數(shù)類型。一個(gè)函數(shù)名后面必須跟一個(gè)圓括號(hào),但可以沒有參數(shù)。上一頁下一頁返回2.18051的編程語言

②函數(shù)體:{a:變量定義;b:執(zhí)行部分;}(3)一個(gè)C程序總是從main函數(shù)開始執(zhí)行,而無論main函數(shù)在整個(gè)程序中的位置如何。(4)C程序書寫格式自由。一行內(nèi)可以寫幾個(gè)語句,一個(gè)語句可以分寫在多行上。C程序無行號(hào)。上一頁下一頁返回2.18051的編程語言

(5)每個(gè)語句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。分號(hào)是C語句的必要組成部分。分號(hào)不可少,即使是程序中最后一個(gè)語句也應(yīng)包含分號(hào)。(6)C語言本身沒有輸入、輸出語句。輸入和輸出的操作是由函數(shù)sanf和printf等函數(shù)來完成的。(7)可以用“/*......*/”或“//”對(duì)C程序中的任何部分做注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)加上必要的注釋,以增加程序的可讀性。上一頁下一頁返回2.18051的編程語言

2.1.3單片機(jī)調(diào)試應(yīng)用下面舉兩個(gè)例子,分別用匯編語言和C語言實(shí)現(xiàn)一個(gè)相同的功能。例2.1把內(nèi)部RAM30H中的一個(gè)數(shù)據(jù)轉(zhuǎn)換為壓縮的BCD碼,百位放入內(nèi)部31H中,十位、個(gè)位放入32H中,編程實(shí)現(xiàn)之。(1)匯編語言程序?yàn)椋海ㄗ⒁猓簠R編語言程序不區(qū)分大小寫)Movr0,#30hMova,@r0Movb,#100Divab上一頁下一頁返回2.18051的編程語言

Mov31h,aMova,bMovb,#10DivabSwapaAdda,bMov32h,aEnd上一頁下一頁返回2.18051的編程語言

(2)C語言程序?yàn)椋海ㄗ⒁猓篊語言程序嚴(yán)格區(qū)分大小寫)#include<reg51.h>//對(duì)51中寄存器的定義的頭函數(shù)#include<absacc.h>//對(duì)絕對(duì)地址的定義的頭函數(shù)voidmain(){unsignedintdataa[20];a[0]=0xab;a[1]=a[0]/100;//百位DBYTE[0x31]=a[1];//百位存放入內(nèi)部RAM31H中上一頁下一頁返回2.18051的編程語言

a[2]=a[0]a[1]*100;a[3]=a[2]/10;//十位a[4]=a[2]a[3]*10;//個(gè)位a[2]=a[3]<<4;//左移4次a[2]=a[2]|a[4];//得十位與個(gè)位值DBYTE[0x32]=a[2];//十位?個(gè)位的BCD碼存放入內(nèi)部RAM32H中while(1);}用Keil軟件運(yùn)行,其結(jié)果如圖2.2所示。上一頁返回2.2單片機(jī)編譯軟件包KeilC51的使用2.2.1KeilC51的使用方法下述程序是實(shí)現(xiàn)將一個(gè)十六進(jìn)制轉(zhuǎn)換為壓縮的BCD碼的功能的程序,即例2.1程序。其編譯步驟如下。(1)啟動(dòng)KeilC51后,建立工程,其過程如圖2.4所示。即選擇“Project”→“New”→“VisionProject”命令來建立工程。(2)在相應(yīng)的文件夾下,建一個(gè)工程項(xiàng)目,例如工程項(xiàng)目名為“z1”,如圖2.5所示。(3)選擇一個(gè)CPU,如圖2.6所示。注意:所選的CPU必須如系統(tǒng)相同的CPU。下一頁返回2.2單片機(jī)編譯軟件包KeilC51的使用

(4)在下述提示后,選擇“是”按鈕,應(yīng)答界面如圖2.7所示。(5)當(dāng)出現(xiàn)應(yīng)答界面后,并且肯定問答后,即出現(xiàn)如圖2.8所示界面,此為工程項(xiàng)目建立結(jié)束界面。(6)此時(shí),在“SourceGroup1”上按右鍵,出現(xiàn)圖2.9所示界面,即向工程項(xiàng)目加入源程序。注意:我們建議源程序用記事本輸入,而不用KeilC51自帶的編輯軟件,此時(shí)源程序的擴(kuò)展名為“.c”,且放在所建立的文件夾下,如圖2.10所示。(7)把源程序加上后,如圖2.11所示。(8)按如圖2.12所示的按鈕進(jìn)行編譯。上一頁下一頁返回2.2單片機(jī)編譯軟件包KeilC51的使用

如果沒有錯(cuò)誤,例2.1則出現(xiàn)如圖2.13所示編譯的結(jié)果。沒錯(cuò)則可進(jìn)行下一步調(diào)試,否則改正之,直到?jīng)]有錯(cuò)誤為止。2.2.2調(diào)試步驟(1)當(dāng)編譯沒有錯(cuò)誤后,就按圖2.14所示步驟進(jìn)行程序調(diào)試,即選擇“Debug”菜單下的“Start”按鈕啟動(dòng)調(diào)試。調(diào)試窗口界面如圖2.15所示。(2)調(diào)試程序時(shí),一般采用單步執(zhí)行方式。以例2.1為例,當(dāng)按單步按鈕后,如圖2.16所示,可知執(zhí)行到第6行,即a[0]=0xab時(shí),而執(zhí)行后的結(jié)果值a[0]=0xab,即期望值與實(shí)際值相符,結(jié)果正確。上一頁下一頁返回2.2單片機(jī)編譯軟件包KeilC51的使用

(3)整個(gè)程序執(zhí)行后,可通過查詢內(nèi)存窗口查詢結(jié)果,如圖2.17所示。注意:在“Address”欄中,若輸入d:xx代表的是內(nèi)部RAM,其中xx代表的是地址值如d:0x30代表內(nèi)部RAM30H。若輸入x:xxxx代表的是外部RAM,其中xxxx代表的是地址值,如x:0x30代表外部RAM30H。用內(nèi)存窗口查詢結(jié)果,如圖2.18所示。例2.1結(jié)果:0ABH轉(zhuǎn)換為壓縮BCD碼為01H、71H,即171D,結(jié)果正確。查詢中間結(jié)果的方法:?jiǎn)螕羧鐖D2.19所示的按鍵(眼鏡),出現(xiàn)如圖2.20所示界面。上一頁下一頁返回2.2單片機(jī)編譯軟件包KeilC51的使用

此時(shí)鍵入F2鍵,輸入變量名,采用單步運(yùn)行方式即可。向內(nèi)存置數(shù)的方法:在命令窗口中輸入“Ed:0x30=0x31,0x32”,含義如下:“E”代表edit;“d:”代表內(nèi)部RAM,若為“x:”則為外部RAM;“0x30”代表地址;“0x31、0x32”代表地址0x30的值為31H,后一個(gè)地址為32H,即31H的內(nèi)容為32H。上一頁返回表2.1各公司的編譯器比較返回圖2.1C51程序的開發(fā)過程返回圖2.2Keil軟件運(yùn)行結(jié)果返回圖2.4建立工程返回圖2.5創(chuàng)建一個(gè)工程項(xiàng)目返回圖2.6選擇一個(gè)CPU返回圖2.7應(yīng)答界面返回圖2.8工程項(xiàng)目建立結(jié)束返回圖2.9向工程項(xiàng)目加入源程序返回

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論