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

下載本文檔

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

文檔簡介

第二講指令系統(tǒng)及開發(fā)語言主要內(nèi)容: 一、概述 二、指令系統(tǒng) 三、匯編語言程序設計舉例 四、C51程序設計舉例一、指令系統(tǒng)概述1、指令分類 MCS-51系列單片機共有111條指令

按功能可分成5類指令:

數(shù)據(jù)傳送指令(29條) 算術(shù)運算指令(24條)

邏輯運算指令(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é)相乘或相除運算

4)具有豐富的位操作類指令

2、指令特點二、51單片機指令系統(tǒng)介紹1、指令中常用符號說明2、數(shù)據(jù)傳送指令3、算術(shù)運算指令4、邏輯運算指令5、控制轉(zhuǎn)移指令6、位操作類指令1、指令中常用符號說明

Rn 當前寄存器區(qū)的Ro~R7(其中n=0~7)

Ri 當前寄存器區(qū)中的R0和R1(其中i=0,1)

direct 8位直接字節(jié)地址(片內(nèi)RAM和SFR空間)

#data 8位立即數(shù)。

#data16 16位立即數(shù)。

addr16 16位地址值。

Addr11 11位地址值。

rel 8位帶符號地址偏移量(-128~+127)bit 片內(nèi)RAM和SFR中的可直接尋址位@ 間接尋址寄存器或基址寄存器的前綴() 表示括號中的內(nèi)容

(())表示間址尋址的內(nèi)容2、數(shù)據(jù)傳送指令(1)MOV A,RnMOV A,directMOV A,@RiMOV A,#dataMOV Rn,AMOV Rn,directMOV Rn,#data2、數(shù)據(jù)傳送指令(2)MOV direct,AMOV direct,RnMOV direct,directMOV direct,@RiMOV direct,#dataMOV @Ri,AMOV @Ri,directMOV DPTR,#data16MOVC A,@A+DPTRMOVC A,@A+PCMOVX A,@RiMOVX A,@DPTRMOVX @Ri,AMOVX @DPTR,A2、數(shù)據(jù)傳送指令(3)PUSH directPOP directXCH A,RnXCH A,directXCH A,@RiXCHD A,@RiSWAP A2、數(shù)據(jù)傳送指令(4)3、算術(shù)運算指令ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataSUBB A,RnSUBB A,directSUBB A,@RiSUBB A,#dataINC AINC RnINC @RiDEC ADEC RnDEC directDEC @RiINC DPTRMUL ABDIV ABDA A4、邏輯運算指令ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataORL A,RnORL A,directORL A,@RiORL A,#dataORL direct,AORL direct,#dataXRL A,RnXRL A,@RiXRL A,#dataXRL direct,AXRL direct,#dataCLR ACPL ARL ARLC ARR ARRC A5、控制轉(zhuǎn)移指令ACALL addr11LCALL addr16RETRETIAJMP addr11LJMP addr16SJMP relJMP @A+DPTRJZ relJNZ relCJNE A,direct,relCJNE A,#data,relCJNE @Ri,#data,relDJNZ Rn,relDJNZ direct,relNOP6、位操作類指令CLR CCLR bitSETB CSETB bitCPL CCPL bitANL C,bitANL C,/bitORL C,bitORL C,/bitMOV C,bitMOV bit,CJC relJNC relJB bit,relJNB bit,relJBC bit,rel三、匯編語言程序設計舉例舉例1:

設計一個報警程序,要求當報警按鍵按下后,蜂鳴器發(fā)出報警聲。

設P1.0口驅(qū)動蜂鳴器P1.1口作為報警按鍵輸入 P1.2口驅(qū)動發(fā)光報警

接口電路設計見右圖

R1330P1.2+5VD1LED4.7KP1.0R2+5VQ18550B1BELL+5VP1.1R310KSW1

ORG 0000H LJMP START

ORG 0100HSTART: MOV SP,#60HLOOP1: JB P1.1,$ JNB P1.1,$ LCALL SOUND SJMP LOOP1SOUND:MOV R7,#5SOUND1: CLR P1.0 MOV R0,#20 LCALL DELAY SETB P1.0 MOV R0,#10 LCALL DELAY DJNZ R7,SOUND1 RETDELAY: MOV R1,#100 ;100msDELAY1: MOV R2,#200 ;1msDELAY2: NOP NOP NOP DJNZ R2,DELAY2 DJNZ R1,DELAY1 DJNZ R0,DELAY RET四、C51程序設計舉例1、C51是專用于51單片機硬件開發(fā)的C語言。2、C51與標準C的區(qū)別,大致可分為8類:

a)8051存儲類型及存儲區(qū)域; b)存儲模式; c)存儲器類型聲明; d)變量類型聲明; e)位變量與位尋址; f)特殊功能寄存器; g)C51指針; h)函數(shù)屬性。a)存儲類型及存儲區(qū)域 code: 程序存儲區(qū)

內(nèi)部數(shù)據(jù)存儲區(qū): data:直接尋址區(qū),內(nèi)部RAM低128位(00H~7FH) idata:間接尋址區(qū),整個內(nèi)部RAM(00H~FFH) bdata:可位尋址區(qū)(20H~2FH)

外部數(shù)據(jù)存儲區(qū): xdata:可指定64K外部RAM(0000H~0FFFFH) pdata:能訪問1頁(256Byte)的外部RAM

特殊功能寄存器: sfr:字節(jié)尋址比如sfrP0=0x80;為PO口地址為80H sfr16:字尋址,如sfr16T2=0xcc;指定Timer2口地址 T2L=0xccT2H=0xCD; sbit:位尋址,如sbitEA=0xAF

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模式

所有缺省變量可放在多達64KB的外部RAM區(qū),優(yōu)點是空間大,可存變量多,缺點是速度較慢。

C)存儲器類型聲明 變量或參數(shù)的存儲類型可由存儲模式指定缺省類型,也可由關(guān)鍵字直接聲明指定。各類型分別用:code,data,idata,xdata,pdata說明例:

datauar1; charcodearray[]=“hello!”;

unsignedcharxdataarr[10][4];d)變量類型聲明C51提供以下幾種擴展數(shù)據(jù)類型:

bit:位變量值為0或1

sbit:從字節(jié)中定義的位變量0或1

sfr:sfr字節(jié)地址0~255

sfr16:sfr字地址0~65535

其余數(shù)據(jù)類型如:char,enum,short,int,long,float等與ANSIC(標準C)相同。e)位變量與位尋址●位變量定義用bit,存儲于內(nèi)部RAM的20H~2FH●可位尋址區(qū)說明:

可作如下定義:

intbdatai;

unsignedcharbdataarr[3],

然后:

sbitbit0=i^0;sbitbit15=i^15;

sbitarr07=arr[0]^7;sbitarr17=arr[1]^7;

f)特殊功能寄存器g)C51指針 ●一般指針的聲明與標準C的相同,不過同時還可以說明指針的類型,如:

char*xdataptr;ptr為一個指向char數(shù)據(jù)的指針,而ptr本身放于外部RAM區(qū),以上的long,char等指針指向的數(shù)據(jù)可存放于任何存儲器中。

●存儲器指針 基于存儲器的指針說明時即指定了存貯類型,如:

chardata*str;str指向data區(qū)中char型數(shù)據(jù)

intxdata*pow;pow指向外部RAM的int型整數(shù)。

h)函數(shù)屬性C51中函數(shù)的聲明:●普通函數(shù)的聲明:uintRecOder(uchara)

uint:函數(shù)返回的值類型為uint RecOder:函數(shù)名 (uchara):括號中為對傳遞變量的聲明●中斷函數(shù)的聲明: voidSerialISR()interrupt4using1

SerialISR:中斷函數(shù)名 interrupt4:中斷類型號,4為串口中斷 using1:指定存儲工作區(qū),可缺省,由編譯器指定3、KeilC51開發(fā)軟件介紹

KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),是眾多單片機應用開發(fā)的優(yōu)秀軟件之一,它集編輯,編譯,仿真于一體,支持匯編,PLM語言和C語言的程序設計,界面友好,易學易用。 與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。 KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,KeilC51生成的目標代碼效率相當高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。 KEIL軟件開發(fā)基本步驟: a)新建工程; b)選擇單片機型號; c)新建工程文件,即代碼,并將其添加到工程中; d)編譯修改編譯……編譯通過; e)軟件調(diào)試; f)硬件調(diào)試。4、Keil中C語言的書寫風格

好的程序應該是簡潔、易懂的,除了從程序的邏輯性出發(fā),還應該形成良好的書寫風格。主要有以下幾個方面:

1)縮進格式; 2)大符號的位置,如{}; 3)變量的命名; 4)函數(shù)的命名; 5)程序的分塊,盡量使函數(shù)功能單一; 6)添加注釋。5、C51程序示例舉例一:include<reg51.h>sbitLed=P1^2; //P要大寫,否則和頭文件sbitBell=P1^0; //中的定義不相符,編譯sbitSw1=P1^1; //出錯voidmain(){ …… if(Sw1==0) //如果有按鍵 { Led=0; //亮Led Bell=0; //蜂鳴器響 } else { Led=1; //滅Led Bell=1; //蜂鳴器關(guān) } ……}R1330P1.2+5VD1LED4.7KP1.0R2+5VQ18550B1BELL+5VP1.1R310KSW1舉例二:

將示例一中查詢按鍵的程序放入定時中斷中,每隔一定的時間都會對按鍵進行查詢。

voidSysIni() { …… TMOD=0x02; //定時器0,工作方式2 TCON=0x00; T

溫馨提示

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

評論

0/150

提交評論