第二講:指令系統(tǒng)及開(kāi)發(fā)語(yǔ)言_第1頁(yè)
第二講:指令系統(tǒng)及開(kāi)發(fā)語(yǔ)言_第2頁(yè)
第二講:指令系統(tǒng)及開(kāi)發(fā)語(yǔ)言_第3頁(yè)
第二講:指令系統(tǒng)及開(kāi)發(fā)語(yǔ)言_第4頁(yè)
第二講:指令系統(tǒng)及開(kāi)發(fā)語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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、第二講 指令系統(tǒng)及開(kāi)發(fā)語(yǔ)言,主要內(nèi)容: 一、概述 二、 指令系統(tǒng) 三、匯編語(yǔ)言程序設(shè)計(jì)舉例 四、C51程序設(shè)計(jì)舉例,一、指令系統(tǒng)概述,1、指令分類(lèi) MCS-51系列單片機(jī)共有111條指令 按功能可分成5類(lèi)指令: 數(shù)據(jù)傳送指令(29條) 算術(shù)運(yùn)算指令(24條) 邏輯運(yùn)算指令(24條) 控制轉(zhuǎn)移指令(17條) 位操作類(lèi)指令(17條),1) 指令執(zhí)行時(shí)間快 單周期指令65條 (1us, 12MHz晶振) 雙周期指令44條 (2us , 12MHz晶振) 四周期指令2條 (4us , 12MHz晶振) 2) 指令短 單字節(jié)指令49條 雙字節(jié)指令46條 三字節(jié)指令 16條 3) 單指令實(shí)現(xiàn)字節(jié)相乘或相除

2、運(yùn)算 4) 具有豐富的位操作類(lèi)指令,2、指令特點(diǎn),3、尋址方式,7種尋址方式: 立即尋址 直接尋址 寄存器尋址 寄存器間接尋址 相對(duì)尋址 變址尋址 位尋址,二、51單片機(jī)指令系統(tǒng)介紹,1、指令中常用符號(hào)說(shuō)明 2、數(shù)據(jù)傳送指令 3、算術(shù)運(yùn)算指令 4、邏輯運(yùn)算指令 5、控制轉(zhuǎn)移指令 6、位操作類(lèi)指令,1、指令中常用符號(hào)說(shuō)明,Rn 當(dāng)前寄存器區(qū)的RoR7(其中n07)Ri 當(dāng)前寄存器區(qū)中的R0和R1(其中i0,1) direct 8位直接字節(jié)地址(片內(nèi)RAM和SFR空間) #data 8位立即數(shù)。#data1616位立即數(shù)。addr1616位地址值。Addr1111位地址值。rel8位帶符號(hào)地址偏移

3、量(128127) bit片內(nèi)RAM和SFR中的可直接尋址位 間接尋址寄存器或基址寄存器的前綴 ( ) 表示括號(hào)中的內(nèi)容( ) 表示間址尋址的內(nèi)容,2、數(shù)據(jù)傳送指令(1),MOVA, Rn MOVA, direct MOVA, Ri MOVA, #data MOVRn, A MOVRn, direct MOVRn, #data,2、數(shù)據(jù)傳送指令(2),MOV direct, A MOVdirect, Rn MOVdirect, direct MOVdirect, Ri MOV direct, #data MOV Ri, A MOVRi, direct,MOVDPTR, #data16 MOVC

4、A, A+DPTR MOVCA, A+PC MOVXA, Ri MOVXA, DPTR MOVXRi, A MOVXDPTR, A,2、數(shù)據(jù)傳送指令(3),PUSHdirect POPdirect XCHA, Rn XCHA, direct XCHA, Ri XCHDA, Ri SWAPA,2、數(shù)據(jù)傳送指令(4),3、算術(shù)運(yùn)算指令,ADDA, Rn ADDA, direct ADDA, Ri ADDA, #data ADDCA, Rn ADDCA, direct,ADDCA, Ri ADDCA, #data SUBBA, Rn SUBBA, direct SUBBA, Ri SUBBA, #d

5、ata,INCA INCRn INCRi DECA DECRn,DECdirect DECRi INCDPTR MULAB DIVAB DAA,4、邏輯運(yùn)算指令,ANLA, Rn ANLA, direct ANLA, Ri ANLA, #data ANLdirect, A ANLdirect, #data,ORLA, Rn ORLA, direct ORLA, Ri ORLA, #data ORLdirect, A ORLdirect, #data,XRLA, Rn XRLA, Ri XRLA, #data XRLdirect, A XRLdirect, #data,CLRA CPLA RLA

6、 RLCA RRA RRCA,5、控制轉(zhuǎn)移指令,ACALLaddr11 LCALL addr16 RET RETI AJMPaddr11 LJMPaddr16 SJMPrel JMPA+DPTR,JZrel JNZrel CJNEA, direct, rel CJNEA, #data, rel CJNERi, #data, rel DJNZRn, rel DJNZdirect, rel NOP,6、位操作類(lèi)指令,CLR C CLR bit SETBC SETBbit CPL C CPL bit ANLC, bit ANLC, /bit,ORL C, bit ORL C, /bit MOV C,

7、 bit MOV bit, C JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel,三、匯編語(yǔ)言程序設(shè)計(jì)舉例,舉例1: 設(shè)計(jì)一個(gè)報(bào)警程序,要求當(dāng)報(bào)警按鍵按下后,蜂鳴器發(fā)出報(bào)警聲。 設(shè)P1.0口驅(qū)動(dòng)蜂鳴器 P1.1口作為報(bào)警按鍵輸入 P1.2口驅(qū)動(dòng)發(fā)光報(bào)警 接口電路設(shè)計(jì)見(jiàn)右圖,ORG0000H LJMPSTART ORG0100H START:MOVSP,#60H LOOP1:JBP1.1, $ JNBP1.1, $ LCALL SOUND SJMPLOOP1,SOUND: MOVR7, #5 SOUND1:CLRP1.0 MOVR0, #2

8、0 LCALL DELAY SETBP1.0 MOVR0, #10 LCALL DELAY DJNZR7, SOUND1 RET,DELAY:MOV R1,#100 ;100ms DELAY1:MOV R2,#200 ;1ms DELAY2:NOP NOP NOP DJNZR2, DELAY2 DJNZR1, DELAY1 DJNZR0, DELAY RET,四、C51程序設(shè)計(jì)舉例,1、C51是專(zhuān)用于51單片機(jī)硬件開(kāi)發(fā)的C語(yǔ)言。 2、C51與標(biāo)準(zhǔn)C的區(qū)別,大致可分為8類(lèi): a)8051存儲(chǔ)類(lèi)型及存儲(chǔ)區(qū)域; b)存儲(chǔ)模式; c)存儲(chǔ)器類(lèi)型聲明; d)變量類(lèi)型聲明; e)位變量與位尋址; f)特殊

9、功能寄存器; g)C51指針; h)函數(shù)屬性。,a)存儲(chǔ)類(lèi)型及存儲(chǔ)區(qū)域 code:程序存儲(chǔ)區(qū) 內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū): data:直接尋址區(qū),內(nèi)部RAM低128位(00H7FH) idata:間接尋址區(qū),整個(gè)內(nèi)部RAM(00HFFH) bdata:可位尋址區(qū)(20H2FH) 外部數(shù)據(jù)存儲(chǔ)區(qū): xdata:可指定64K外部RAM(0000H0FFFFH) pdata:能訪(fǎng)問(wèn)1頁(yè)(256Byte)的外部RAM 特殊功能寄存器: sfr:字節(jié)尋址 比如 sfr P0=0 x80;為PO口地址為80H sfr16:字尋址,如sfr16 T2=0 xcc;指定Timer2口地址T2L=0 xcc T2H=0 x

10、CD; sbit:位尋址,如sbit EA=0 xAF,b)存儲(chǔ)模式,存儲(chǔ)模式?jīng)Q定了沒(méi)有明確指定存儲(chǔ)類(lèi)型的變量,函數(shù)參數(shù)等的缺省存儲(chǔ)區(qū)域,共三種(在C51編譯器選項(xiàng)中選擇): Small模式所有缺省變量參數(shù)均裝入內(nèi)部RAM,優(yōu)點(diǎn)是訪(fǎng)問(wèn)速度快,缺點(diǎn)是空間有限,只適用于小程序。 Compact模式所有缺省變量均位于外部RAM區(qū)的一頁(yè)(256Bytes),具體哪一頁(yè)可由P2口指定,在STARTUP.A51文件中說(shuō)明,也可用pdata指定,優(yōu)點(diǎn)是空間較Small寬裕,速度較Small慢,較large要快,是一種中間狀態(tài)。 Large模式所有缺省變量可放在多達(dá)64KB的外部RAM區(qū),優(yōu)點(diǎn)是空間大,可存變

11、量多,缺點(diǎn)是速度較慢。,C)存儲(chǔ)器類(lèi)型聲明,變量或參數(shù)的存儲(chǔ)類(lèi)型可由存儲(chǔ)模式指定缺省類(lèi)型,也可由關(guān)鍵字直接聲明指定。各類(lèi)型分別用:code,data,idata,xdata,pdata說(shuō)明 例:data uar1; char code array “hello!”;unsigned char xdata arr104;,d)變量類(lèi)型聲明,C51提供以下幾種擴(kuò)展數(shù)據(jù)類(lèi)型:bit :位變量值為0或1sbit :從字節(jié)中定義的位變量 0或1sfr :sfr字節(jié)地址 0255sfr16 :sfr字地址 065535其余數(shù)據(jù)類(lèi)型如:char,enum,short,int,long,float等與ANSI

12、 C(標(biāo)準(zhǔn)C)相同。,e)位變量與位尋址,位變量定義用bit,存儲(chǔ)于內(nèi)部RAM的20H2FH 可位尋址區(qū)說(shuō)明: 可作如下定義:int bdata i;unsigned char bdata arr3,然后:sbit bit0i0;sbit bit15=i15;sbit arr07=arr07;sbit arr17=arr17;,f)特殊功能寄存器 g)C51指針 一般指針的聲明與標(biāo)準(zhǔn)C的相同,不過(guò)同時(shí)還可以說(shuō)明指針的類(lèi)型,如: char * xdata ptr;ptr為一個(gè)指向char數(shù)據(jù)的指針,而ptr本身放于外部RAM區(qū),以上的long,char等指針指向的數(shù)據(jù)可存放于任何存儲(chǔ)器中。 存儲(chǔ)

13、器指針 基于存儲(chǔ)器的指針說(shuō)明時(shí)即指定了存貯類(lèi)型,如:char data * str;str指向data區(qū)中char型數(shù)據(jù)int xdata * pow; pow指向外部RAM的int型整數(shù)。,h)函數(shù)屬性,C51中函數(shù)的聲明: 普通函數(shù)的聲明:uint RecOder(uchar a) uint:函數(shù)返回的值類(lèi)型為uint RecOder:函數(shù)名 (uchar a):括號(hào)中為對(duì)傳遞變量的聲明 中斷函數(shù)的聲明: void SerialISR ( ) interrupt 4 using 1 SerialISR:中斷函數(shù)名 interrupt 4:中斷類(lèi)型號(hào),4為串口中斷 using 1:指定存儲(chǔ)工

14、作區(qū),可缺省,由編譯器指定,3、Keil C51開(kāi)發(fā)軟件介紹,Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),是眾多單片機(jī)應(yīng)用開(kāi)發(fā)的優(yōu)秀軟件之一,它集編輯,編譯,仿真于一體,支持匯編,PLM 語(yǔ)言和 C 語(yǔ)言的程序設(shè)計(jì),界面友好,易學(xué)易用。 與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。 Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),Keil C51生成的目標(biāo)代碼效率相當(dāng)高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。

15、,KEIL軟件開(kāi)發(fā)基本步驟: a)新建工程; b)選擇單片機(jī)型號(hào); c)新建工程文件,即代碼,并將其添加到工程中; d)編譯修改編譯編譯通過(guò); e)軟件調(diào)試; f)硬件調(diào)試。,4、Keil中C語(yǔ)言的書(shū)寫(xiě)風(fēng)格,好的程序應(yīng)該是簡(jiǎn)潔、易懂的,除了從程序的邏輯性出發(fā),還應(yīng)該形成良好的書(shū)寫(xiě)風(fēng)格。主要有以下幾個(gè)方面: 1)縮進(jìn)格式; 2)大符號(hào)的位置,如 ; 3)變量的命名; 4)函數(shù)的命名; 5)程序的分塊,盡量使函數(shù)功能單一; 6)添加注釋。,5、C51程序示例,舉例一: include sbit Led=P12;/P要大寫(xiě),否則和頭文件 sbit Bell=P10;/中的定義不相符,編譯 sbit Sw1=P11;/出錯(cuò) void main( ) if(Sw1=0)/如果有按鍵 Led=0;/亮Led Bell=0;/蜂鳴器響 else Led=1;/滅Led Bell=1;/蜂鳴器關(guān) ,舉例二: 將示例一中查詢(xún)按鍵的程序放入定時(shí)中斷中,每隔一定

溫馨提示

  • 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)論