第二講:指令系統(tǒng)及開發(fā)語言_第1頁
第二講:指令系統(tǒng)及開發(fā)語言_第2頁
第二講:指令系統(tǒng)及開發(fā)語言_第3頁
第二講:指令系統(tǒng)及開發(fā)語言_第4頁
第二講:指令系統(tǒng)及開發(fā)語言_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、運(yùn)算 4) 具有豐富的位操作類指令,2、指令特點,3、尋址方式,7種尋址方式: 立即尋址 直接尋址 寄存器尋址 寄存器間接尋址 相對尋址 變址尋址 位尋址,二、51單片機(jī)指令系統(tǒng)介紹,1、指令中常用符號說明 2、數(shù)據(jù)傳送指令 3、算術(shù)運(yùn)算指令 4、邏輯運(yùn)算指令 5、控制轉(zhuǎn)移指令 6、位操作類指令,1、指令中常用符號說明,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位帶符號地址偏移

3、量(128127) bit片內(nèi)RAM和SFR中的可直接尋址位 間接尋址寄存器或基址寄存器的前綴 ( ) 表示括號中的內(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、位操作類指令,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,三、匯編語言程序設(shè)計舉例,舉例1: 設(shè)計一個報警程序,要求當(dāng)報警按鍵按下后,蜂鳴器發(fā)出報警聲。 設(shè)P1.0口驅(qū)動蜂鳴器 P1.1口作為報警按鍵輸入 P1.2口驅(qū)動發(fā)光報警 接口電路設(shè)計見右圖,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è)計舉例,1、C51是專用于51單片機(jī)硬件開發(fā)的C語言。 2、C51與標(biāo)準(zhǔn)C的區(qū)別,大致可分為8類: a)8051存儲類型及存儲區(qū)域; b)存儲模式; c)存儲器類型聲明; d)變量類型聲明; e)位變量與位尋址; f)特殊

9、功能寄存器; g)C51指針; h)函數(shù)屬性。,a)存儲類型及存儲區(qū)域 code:程序存儲區(qū) 內(nèi)部數(shù)據(jù)存儲區(qū): data:直接尋址區(qū),內(nèi)部RAM低128位(00H7FH) idata:間接尋址區(qū),整個內(nèi)部RAM(00HFFH) bdata:可位尋址區(qū)(20H2FH) 外部數(shù)據(jù)存儲區(qū): xdata:可指定64K外部RAM(0000H0FFFFH) pdata:能訪問1頁(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)存儲模式,存儲模式?jīng)Q定了沒有明確指定存儲類型的變量,函數(shù)參數(shù)等的缺省存儲區(qū)域,共三種(在C51編譯器選項中選擇): Small模式所有缺省變量參數(shù)均裝入內(nèi)部RAM,優(yōu)點是訪問速度快,缺點是空間有限,只適用于小程序。 Compact模式所有缺省變量均位于外部RAM區(qū)的一頁(256Bytes),具體哪一頁可由P2口指定,在STARTUP.A51文件中說明,也可用pdata指定,優(yōu)點是空間較Small寬裕,速度較Small慢,較large要快,是一種中間狀態(tài)。 Large模式所有缺省變量可放在多達(dá)64KB的外部RAM區(qū),優(yōu)點是空間大,可存變

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

12、 C(標(biāo)準(zhǔn)C)相同。,e)位變量與位尋址,位變量定義用bit,存儲于內(nèi)部RAM的20H2FH 可位尋址區(qū)說明: 可作如下定義: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的相同,不過同時還可以說明指針的類型,如: char * xdata ptr;ptr為一個指向char數(shù)據(jù)的指針,而ptr本身放于外部RAM區(qū),以上的long,char等指針指向的數(shù)據(jù)可存放于任何存儲器中。 存儲

13、器指針 基于存儲器的指針說明時即指定了存貯類型,如: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ù)返回的值類型為uint RecOder:函數(shù)名 (uchar a):括號中為對傳遞變量的聲明 中斷函數(shù)的聲明: void SerialISR ( ) interrupt 4 using 1 SerialISR:中斷函數(shù)名 interrupt 4:中斷類型號,4為串口中斷 using 1:指定存儲工

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

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

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論