《單片機(jī)原理及應(yīng)用》期末復(fù)習(xí)資料_第1頁
《單片機(jī)原理及應(yīng)用》期末復(fù)習(xí)資料_第2頁
《單片機(jī)原理及應(yīng)用》期末復(fù)習(xí)資料_第3頁
《單片機(jī)原理及應(yīng)用》期末復(fù)習(xí)資料_第4頁
《單片機(jī)原理及應(yīng)用》期末復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版第1章 微型機(jī)的基本知識(shí)1. 微型機(jī):由CPU、存儲(chǔ)器、輸入/輸出接口電路和系統(tǒng)總線構(gòu)成。2. 系統(tǒng)總線:地址總線AB,控制總線CB和雙向數(shù)據(jù)總線DB。數(shù)據(jù)總線(DataBus―DB)雙向、三態(tài):數(shù)據(jù)總線的根數(shù)決定了一次可以傳遞二進(jìn)制數(shù)的位數(shù)。地址總線(AddressBus―AB)單向、三態(tài):地址總線的位數(shù)決定了可以直接訪問的存儲(chǔ)單元(或I/O口)的最大可能數(shù)量(即容量)。控制總線(ControlBus―CB):控制總線用來傳輸控制信號(hào),數(shù)據(jù)總線和每個(gè)元件的數(shù)據(jù)線相連,為了使CPU能夠和其中一個(gè)元件正確通信,必須使用三態(tài)邏輯元件(特別針對輸入元件)。3. 運(yùn)算器:運(yùn)算器由算術(shù)邏輯單元ALU、累加器A、標(biāo)志寄存器F和寄存器組,相互之間通過內(nèi)部總線連接而成。4. 控制器:控制器CU由程序計(jì)數(shù)器PC、指令寄存器IR、指令譯碼器ID、操作控制部件或稱為組合邏輯陣列PLA和時(shí)序 發(fā)生器等電路組成,是發(fā)布操作命令的“決策機(jī)構(gòu)”。5. 特殊功能寄存器(PSW):

CY(PSW.7)進(jìn)位/借位標(biāo)志位;

AC(PSW.6)半進(jìn)位/借位標(biāo)志位;

F0(PSW.5)可由用戶定義的標(biāo)志位;

RS1(PSW.4)、RS0(PSW.3)工作寄存器組選擇位;

OV(PSW.2)溢出標(biāo)志位;P(PSW.0)奇偶標(biāo)志位。6. 堆棧與堆棧指示器SP(StackPointer):堆棧是按照“先進(jìn)后出”或“后進(jìn)先出”原則組織的一個(gè)存儲(chǔ)區(qū)域。7. 字長:字長就是計(jì)算機(jī)的運(yùn)算器一次可處理(運(yùn)算、存取)二進(jìn)制數(shù)的位數(shù)。字長越長,一個(gè)字能表示數(shù)值的有效位就越多,計(jì)算精度也就越高,速度就越塊。8位二進(jìn)制數(shù)稱為1個(gè)字節(jié),以B(Byte)表示;

2個(gè)字節(jié)定義為1個(gè)字,以W(Word)表示;

32位二進(jìn)制數(shù)就定義為雙字,以DW(Doubleword)表示。8. 存儲(chǔ)容量:存儲(chǔ)器存儲(chǔ)二進(jìn)制信息多少的一個(gè)技術(shù)指標(biāo)1KB=1024B(即1024×8位)

1024KB=1MB(兆字節(jié))

1024MB=1GB(千兆字節(jié))第2章 單片機(jī)硬件結(jié)構(gòu)1. 單片機(jī)主要功能特點(diǎn):8位的CPU,片內(nèi)有振蕩器和時(shí)鐘電路,工作頻率為1~12MHz

片內(nèi)有128B數(shù)據(jù)存儲(chǔ)器RAM

片內(nèi)有4KB程序存儲(chǔ)器ROM

可尋址片外64K字節(jié)數(shù)據(jù)存儲(chǔ)器RAM

可尋址片外64K字節(jié)程序存儲(chǔ)器ROM

片內(nèi)21/26個(gè)特殊功能寄存器(SFR)

4個(gè)8位的并行I/O口(PIO)

1個(gè)全雙工串行口(SIO/UART)

2個(gè)16位定時(shí)器/計(jì)數(shù)器(TIMER/COUNTER)

2個(gè)優(yōu)先級可處理5個(gè)中斷源,兩級中斷優(yōu)先級

1個(gè)布爾處理器和1個(gè)布爾累加器(Cy)

MCS-51指令集含111條指令2. 時(shí)鐘電路:XTAL1,XTAL2:片內(nèi)振蕩電路輸入/輸出端;通常外接一個(gè)晶振兩個(gè)電容。3. 控制信號(hào):RST/??????(9腳)復(fù)位信號(hào),復(fù)位使單片機(jī)進(jìn)入某種確定的初始狀態(tài)。MCS-51通常采用上電自動(dòng)復(fù)位(正脈沖保 持約10ms以上)和開關(guān)復(fù)位(輸出高電平)兩種形式。4.ALE/????????(30腳)地址鎖存信號(hào),ALE高電平期間,P0口上一般出現(xiàn)地址信息,在ALE下降沿時(shí),將P0口上的地址信息鎖存到片外地址鎖存器,在ALE低電平期間P0口上一般出現(xiàn)指令和數(shù)據(jù)信息。5.????????(29腳)片外程序存儲(chǔ)器讀選通單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版6. /Vpp(31腳)當(dāng)訪問內(nèi)部程序存儲(chǔ)器時(shí),保持高電平;當(dāng)接低電平時(shí),只訪問片外程序存儲(chǔ)器7. P1.0—P1.7:準(zhǔn)雙向I/O口(內(nèi)置了上拉電阻);準(zhǔn)雙向:在作輸入口用時(shí)要先對其寫“1”。8. P0.0—P0.7:雙向I/O(內(nèi)置場效應(yīng)管上拉);尋址外部程序存儲(chǔ)器時(shí)分時(shí)作為雙向8位數(shù)據(jù)口和輸出低8位地址復(fù)用口; 不接外部程序存儲(chǔ)器時(shí)可作為8位準(zhǔn)雙向I/O口使用。9. P2.0—P2.7:雙向I/O(內(nèi)置了上拉電阻);尋址外部程序存儲(chǔ)器時(shí)輸出高8位地址;不接外部程序存儲(chǔ)器時(shí)可作為8位準(zhǔn) 雙向I/O口使用。10.P3.0—P3.7:雙功能口(內(nèi)置了上拉電阻);它具有特定的第二功能。在不使用它的第二功能時(shí)它就是普通的通用準(zhǔn)雙向I/O 口。11.MCS-51的存儲(chǔ)器組織分為4個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器和片外擴(kuò)展的程序存儲(chǔ)器,片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外擴(kuò)展的數(shù)據(jù) 存儲(chǔ)器。 片內(nèi)RAM128字節(jié)(00H—7FH);

片內(nèi)RAM前32個(gè)單元是工作寄存器區(qū)(00H—1FH)

片內(nèi)RAM有128個(gè)可按位尋址的位,占16個(gè)單元。位地址編號(hào)為:00H—7FH,分布在20H—2FH單元 片內(nèi)21個(gè)特殊功能寄存器(SFR)中:地址號(hào)能被8整除的SFR中的各位也可按位尋址

可尋址片外RAM64K字節(jié)(0000H—FFFFH)

可尋址片外ROM64K字節(jié)(0000H—FFFFH)

片內(nèi)FlashROM4K字節(jié)(000H—FFFH)

12.MCS-51的內(nèi)部RAM可以分成三個(gè)物理空間,分別是工作寄存器區(qū)、位尋址區(qū)和數(shù)據(jù)緩沖區(qū)。13.專用寄存器:MCS-51共有23個(gè)特殊功能寄存器(3個(gè)屬于8032/8052),其中5個(gè)是雙字節(jié)寄存器,程序計(jì)數(shù)器PC在物 理上是獨(dú)立的,其余22個(gè)寄存器都屬于片內(nèi)數(shù)據(jù)存儲(chǔ)器SFR塊,共占26個(gè)字節(jié)。程序計(jì)數(shù)器PC(16bit):用于存放下一條要執(zhí)行指令的地址

累加器A:最常用的專用寄存器

寄存器B:是一個(gè)8位寄存器

程序狀態(tài)字PSW:是一個(gè)8位寄存器,用來存放程序的狀態(tài)信息,表征指令的執(zhí)行狀態(tài),供程序查詢和判別之用。 堆棧指針SP:是一個(gè)8位寄存器,用來存放棧頂?shù)刂?/p>

數(shù)據(jù)指針DPTR:是一個(gè)16位專用寄存器,高字節(jié)寄存器用DPH表示,低字節(jié)寄存器用DPL表示 I/O端口P0~P3:I/O端口P0~P3的鎖存器

定時(shí)器/計(jì)數(shù)器

14.MCS-51外部數(shù)據(jù)存儲(chǔ)器尋址空間為64KB。15.1個(gè)機(jī)器周期=6個(gè)狀態(tài)=12個(gè)振蕩周期第3章 MCS-51指令系統(tǒng)1. 指令中所用符號(hào)說明A——累加器

B——專用寄存器

C——進(jìn)位或借位標(biāo)志,或布爾處理機(jī)中的累加器

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

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

direct——8位直接地址

@Ri——R0或R1,可以間接尋址

@DPTR——可按DPTR中地址對外部存儲(chǔ)器尋址

bit——8位位地址

addr11——11位目標(biāo)地址

addr16——16位目標(biāo)地址

rel——8位地址偏移量

$——當(dāng)前指令的地址2. 七種尋址方式:立即尋址:指令直接給出一個(gè)操作數(shù),它緊跟在操作碼后,通常稱它為立即數(shù)(8位或16位) 特點(diǎn):指令碼中含有操作數(shù)本身單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版直接尋址:指令直接給出操作數(shù)所在存儲(chǔ)單元的地址,它緊跟在操作碼后。訪問專用寄存器的唯一方式特點(diǎn):指令碼中含有操作數(shù)地址,機(jī)器根據(jù)該地址尋找操作數(shù)寄存器尋址:指令選定的寄存器內(nèi)容就是實(shí)際操作數(shù)特點(diǎn):指令碼中含有操作數(shù)地址所在的寄存器號(hào),根據(jù)該寄存器號(hào)可以找到操作數(shù)寄存器間接尋址:指令所選中的寄存器內(nèi)容是實(shí)際操作數(shù)地址(而不是操作數(shù))特點(diǎn):地址的地址變址尋址(基址寄存器+變址寄存器間接尋址):此種尋址方式以DPTR或PC作基址寄存器,A作變址寄存器(存放8位無符號(hào)數(shù)),兩者相加形成16位程序存儲(chǔ)器地址作操作數(shù)地址特點(diǎn):操作數(shù)=基地址+地址偏移量指令碼內(nèi)隱含存放基地址的寄存器(DPTR/PC)號(hào)DPTR/PC中的基地址常常是表格的起始地址,累加器中存放偏移量rel相對尋址:此種尋址方式以程序計(jì)數(shù)器PC的內(nèi)容為基地址,加上指令中給出的偏移量rel,所得結(jié)果為轉(zhuǎn)移目標(biāo)地址,用于轉(zhuǎn)移指令。偏移量rel是一8位有符號(hào)補(bǔ)碼數(shù),范圍-128~+127。所以轉(zhuǎn)移范圍應(yīng)在當(dāng)前PC指針的-128~+127之間某一程序存儲(chǔ)器地址中特點(diǎn):操作碼中含有相對地址偏移量rel目標(biāo)地址=源地址+轉(zhuǎn)移指令字節(jié)數(shù)rel源地址=相對轉(zhuǎn)移指令的始址位尋址:以訪問觸發(fā)器的方式對內(nèi)部RAM、特殊功能寄存器SFR中的位地址空間進(jìn)行訪問稱之為位尋址特點(diǎn):操作數(shù)是8位二進(jìn)制數(shù)中的某位指令碼中含有位地址位地址用bit表示3. 數(shù)據(jù)傳送指令:內(nèi)部存儲(chǔ)器間傳送:MOV特點(diǎn):源操作數(shù)在內(nèi)部,目的操作數(shù)也在內(nèi)部。分四類介紹如下以累加器A為目的字節(jié)的傳送指令(4條)(1)立即數(shù)送累加器MOVA,#data;A←#data(2)寄存器內(nèi)容送累加器MOVA,Rn;A←(Rn)(n=0~7)(3)內(nèi)部RAM或SFR內(nèi)容送累加器MOVA,direct;A←(direct)(4)內(nèi)部RAM內(nèi)容送累加器MOVA,@Ri;A←((Ri))(i=0,1)以Rn為目的字節(jié)的傳送指令(3條)(1)立即數(shù)送寄存器MOVRn,#data;(Rn)←#data(n=0~7)(2)累加器內(nèi)容送寄存器MOVRn,A;Rn←(A)(n=0~7)(3)內(nèi)部RAM或SFR內(nèi)容送寄存器MOVRn,direct;Rn←(direct)(n=0~7)以直接地址為目的字節(jié)的傳送指令(5條)(1)立即數(shù)送內(nèi)部RAM或SFRMOV direct,#data;direct←#data(2)累加器內(nèi)容送內(nèi)部RAM或SFRMOVdirect,A;direct←(A) 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版(3)寄存器內(nèi)容送內(nèi)部RAM或SFRMOVdirect,Rn;direct←(Rn)(n=0~7)(4)內(nèi)部RAM或SFR之間直接傳送 MOV direct1,direct2;direct1←(direct2)

(5)內(nèi)部RAM內(nèi)容送內(nèi)部RAM或SFRMOVdirect,@Ri;direct←((Ri))(i=0,1)以間接地址為目的字節(jié)的傳送指令(4條)

(1)立即數(shù)送內(nèi)部RAMMOV@Ri,#data;(Ri)←#data(i=0,1)(2)累加器內(nèi)容送內(nèi)部RAMMOV@Ri,A;(Ri)←(A)(i=0,1)(3)內(nèi)部RAM或SFR內(nèi)容送內(nèi)部RAMMOV@Ri,direct;(Ri)←(direct)(i=0,1)(4)16位立即數(shù)傳送指令 MOV DPTR,#data16;DPTR←#data16

;DPH←#dataH

;DPL←#dataL

外部數(shù)據(jù)存儲(chǔ)器與累加器間傳送:MOVX

格式:MOVXA,@DPTR;A←((DPTR))(i=0,1)MOVX@DPTR,A;(DPTR)←(A)MOVXA,@Ri;A←((Ri))MOVX@Ri,A;A←((Ri))(i=0,1)特點(diǎn):單字節(jié)指令第1、2條指令可以在外部RAM 64K范圍尋址;

第3、4條指令可以對外部RAM的第0頁尋址;

尋址范圍是0000H~00FFH。程序存儲(chǔ)器向累加器傳送:MOVC

格式:MOVCA,@A+DPTR;A←((A)+(DPTR))MOVCA,@A+PC;PC←(PC)+1 ;A←((A)+(PC))

特點(diǎn):這兩條指令為單字節(jié)查表指令 DPTR、PC中存放被查表的始址

功能:根據(jù)A中項(xiàng)數(shù),查得表中對應(yīng)值送入累加器A中。數(shù)據(jù)交換:XCH,XCHD,SWAP

格式:XCHA,Rn;(A)?(Rn)(n=0~7)XCHA,direct;(A)?(direct)XCHA,@Ri;(A)?((Ri))(i=0,1)XCHDA,@Ri;(A3~0)?((Ri)3~0)(i=0,1)SWAPA;(A3~0)?(A7~4) 特點(diǎn):前三條指令執(zhí)行后會(huì)影響PSW中的P標(biāo)志(奇偶標(biāo)志)。XCHD使用該指令前應(yīng)預(yù)先給Ri中置地址。堆棧操作:PUSH,POP

格式:PUSHdirect;SP←(SP)+1;(SP)←(direct) 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版 POP direct ;direct←((SP))

;SP←(SP)-1

特點(diǎn):Rn和A不能直接用在本指令中,A必須用ACC(或E0H),Rn也要用它的物理地址。4. 算術(shù)運(yùn)算指令不帶進(jìn)位加:ADD

格式:ADDA,#data;A←(A)+#data(n=0~7)ADDA,Rn;A←(A)+(Rn)ADDA,@Ri;A←(A)+((Ri))(i=0,1)ADDA,direct;A←(A)+(direct)特點(diǎn):兩個(gè)操作數(shù)均為8位,其中之一是累加器A;加法操作在ALU中完成,結(jié)果送回累加器,運(yùn)算時(shí)產(chǎn)生的標(biāo)志位在PSW中;不論兩操作數(shù)是否為帶符號(hào)數(shù),機(jī)器均按帶符號(hào)數(shù)運(yùn)算。帶進(jìn)位加:ADDC

格式:ADDCA,#data;A←(A)+#data+Cy(n=0~7)ADDCA,Rn;A←(A)+(Rn)+CyADDCA,@Ri;A←(A)+((Ri))+Cy(i=0,1)ADDCA,direct;A←(A)+(direct)+Cy特點(diǎn):注釋中的Cy中內(nèi)容為指令執(zhí)行前Cy內(nèi)容,指令執(zhí)行后形成新的Cy保留在PSW中,其余和不帶Cy的加法指令相同;本類指令用于多字節(jié)加法程序中。增量指令:INC

格式:INCA;A←(A)+1INCRn;Rn←(Rn)+1(n=0~7)INCdirect;direct←(direct)+1INC@Ri;(Rn)←((Rn))+1(n=0,1)INCDPTR;DPTR←(DPTR)+1 特點(diǎn):INC指令僅對PSW中P標(biāo)志有影響。

十進(jìn)制調(diào)整指令:DA

格式: DA A

操作: 若累加器低4位大于9或BCD碼加時(shí)有半進(jìn)位AC=1,則A←(A)+06H 若累加器高4位大于9或BCD碼加時(shí)有全進(jìn)位CY=1,則A←(A)+60H。特點(diǎn):DA緊跟加法指令后,對加法結(jié)果調(diào)整;用于BCD加、BCD減運(yùn)算。減法指令:SUBB

格式:SUBBA,#data;A←(A)-#data-CySUBBA,Rn;A←(A)-(Rn)-Cy(n=0~7)SUBBA,direct;A←(A)-(direct)-CySUBBA,@Ri;A←(A)-((Ri))-Cy(n=0,1)特點(diǎn):SUBB是SubtractionBorrow的縮寫;本指令用于單字節(jié)、多字節(jié)減法程序;機(jī)器按帶符號(hào)數(shù)運(yùn)算,并產(chǎn)生PSW中標(biāo)志;形成OV標(biāo)志的規(guī)則為:

正數(shù)-正數(shù) 不會(huì)溢出,故OV=0;

負(fù)數(shù)-負(fù)數(shù) 不會(huì)溢出,故OV=0;

正數(shù)-負(fù)數(shù) 若差為負(fù),則OV=1;

負(fù)數(shù)-正數(shù) 若差為正,則OV=1。減量指令:DEC

格式:單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版DEC A ;A←(A)-1DEC Rn ;Rn←(Rn)-1 (n=0~7)DEC direct ;direct←(direct)-1DEC @Ri ;(Ri)←((Ri))-1 (n=0,1)特點(diǎn):DEC是Decrease的縮寫;DEC A指對PSW中P標(biāo)志有影響。功能:使源地址所對應(yīng)的RAM單元中內(nèi)容減1。乘法指令:MUL除法指令:DIV格式:MULAB;BA←(A)×(B);Cy←0DIVAB;A←(A)/(B)的商;;B←(A)/(B);Cy←0,OV←0特點(diǎn):MUL是Multiply的縮寫,DIV是Divide的縮寫;單字節(jié)指令,執(zhí)行時(shí)間為48T(4機(jī)器周期);操作數(shù)均為8位無符號(hào)數(shù)。5. 邏輯運(yùn)算指令邏輯與指令:ANL格式:ANL A,#data ;A←(A)∧#dataANL A,Rn ;A←(A)∧(Rn) (n=0~7)ANL A,direct ;A←(A)∧(direct)ANL A,@Ri ;A←(A)∧((Ri)) (n=0,1)ANL direct,A ;direct←(direct)∧(A)ANL direct,#data;direct←(direct)∧#data特點(diǎn):ANL是ANDLogical的縮寫;前四條指令執(zhí)行后會(huì)對PSW中P標(biāo)志產(chǎn)生影響。用途:可從某字節(jié)中取出某幾位。邏輯或指令:ORL格式:ORL A,#data ;A←(A)∨#dataORL A,Rn ;A←(A)∨(Rn) (n=0~7)ORL A,direct ;A←(A)∨(direct)ORL A,@Ri ;A←(A)∨((Ri)) (n=0,1)ORL direct,A ;direct←(direct)∨(A)ORL direct,#data;direct←(direct)∨#data特點(diǎn):ORL是ORLogical的縮寫;前四條指令執(zhí)行后會(huì)對PSW中P標(biāo)志產(chǎn)生影響。用途:給某字節(jié)中某幾位置1。邏輯異或指令:XRL格式:XRLA,#data;A←(A)?#dataXRLA,Rn;A←(A)?(Rn)(n=0~7)XRLA,direct;A←(A)?(direct)XRLA,@Ri;A←(A)?((Ri))(n=0,1)XRLdirect,A;direct←(direct)?(A)XRLdirect,#data;direct←(direct)?#data特點(diǎn):XRL是XORLogical的縮寫;前四條指令執(zhí)行后會(huì)對PSW中P標(biāo)志產(chǎn)生影響。用途:令某字節(jié)中某幾位置取反,其余位不變。累加器清除與求反指令:CLR、CPL格式:單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版CLR A ;A←0CPL A ;A←特點(diǎn):CLR是Clearing的縮寫;CPL是Complementofone’s的縮寫;CLR A指令執(zhí)行后,Cy=0。用途:CLR用于是累加器清零;CPL可用于求某數(shù)的補(bǔ)碼。移位指令:RL、RLC、RR、RRC格式:RL ARLC ARR ARRC A特點(diǎn):RL是RotateLeft的縮寫,RR是RotateRight的縮寫;第2、4條指令對PSW中的Cy和P標(biāo)志產(chǎn)生影響。用途:對某數(shù)擴(kuò)大或縮小1倍。6. 控制轉(zhuǎn)移指令無條件轉(zhuǎn)移指令:LJMP(長轉(zhuǎn)移)、AJMP(絕對轉(zhuǎn)移)、SJMP(短轉(zhuǎn)移)、JMP(間接長轉(zhuǎn)移);程序計(jì)數(shù)器PC格式:LJMPaddr16;PC←addr16AJMPaddr11;PC←(PC)+2;PC10~0←指令中的A10~0SJMPrel;PC←(PC)+2;PC←(PC)+relJMP@A+DPTR;PC←(A)+(DPTR)特點(diǎn):這類指令執(zhí)行時(shí)不會(huì)影響PSW中各標(biāo)志位;指令的操作對象是PC中地址;第2、3條指令是相對轉(zhuǎn)移指令,匯編時(shí)能產(chǎn)生浮動(dòng)代碼,在子程序中很有用。條件轉(zhuǎn)移指令:JZ、JNZ、CJNE、DJNZ累加器A判零轉(zhuǎn)移指令格式:JZrel;若(A)≠0,則PC←(PC)+2;若(A)=0,則PC←(PC)+2+relJNZrel;若(A)=0,則PC←(PC)+2;若(A)≠0,則PC←(PC)+2+rel特點(diǎn):雙字節(jié)指令,第一字節(jié)是操作碼,第二字節(jié)rel是一個(gè)帶符號(hào)數(shù);rel在編程時(shí)采用符號(hào)地址,匯編時(shí)翻譯成內(nèi)存地址。比較條件轉(zhuǎn)移指令格式:不等則轉(zhuǎn)移CJNEA,#data,rel(n=0~7)CJNERn,#data,relCJNE@Ri,#data,rel(i=0,1)CJNEA,direct,rel特點(diǎn):三字節(jié)指令,第3字節(jié)是rel,轉(zhuǎn)移范圍為-125~+130;若A、B為帶符號(hào)數(shù),則Cy的形成原則是:若A>=B,則Cy=0;若A<B,則Cy=1。減1條件轉(zhuǎn)移指令格式:內(nèi)容減1不等于零則轉(zhuǎn)移DJNZRn,rel;Rn←(Rn)-1(n=0~7);若(Rn)=0,則PC←(PC)+2;若(Rn)≠0,則PC←(PC)+2+relDJNZdirect,rel;direct←(direct)-1;若(direct)=0,則PC←(PC)+3;若(direct)≠0,則PC←(PC)+3+rel 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版特點(diǎn):在DJNZ中,D是Decrease,J是Jump,N是Not,Z是Zero;本類指令不影響PSW標(biāo)志。用途:判斷循環(huán)是否結(jié)束。子程序調(diào)用及返回指令:LCALL(長調(diào)用)、ACALL(絕對調(diào)用)、RET(子程序返回)、RETI(中斷返回) 格式:LCALLaddr16;PC←(PC)+3;SP←(SP)+1,(SP)←PC7~0

;SP←(SP)+1,(SP)←PC15~8

;PC←指令中addr16ACALLaddr11;PC←(PC)+2;SP←(SP)+1,(SP)←PC7~0

;SP←(SP)+1,(SP)←PC15~8

;PC10~0←指令中A10~0RET ;PC15~8←((SP)),SP←(SP)-1

;PC7~0←((SP)),SP←(SP)-1 RETI ;PC15~8←((SP)),SP←(SP)-1 ;PC7~0←((SP)),SP←(SP)-1空操作指令:NOP

格式: NOP ;PC←(PC)+1

代碼:00000000 00H

說明:該指令為單字節(jié)指令,其操作使程序計(jì)數(shù)器PC加“1”,在時(shí)間上消耗12個(gè)時(shí)鐘周期,可用于延時(shí),等待或用于修改程序保留空間等情況。7. 布爾處理類指令布爾傳送指令:MOV

格式:MOVC,bit;Cy←(bit)MOVbit,C;bit←(Cy)功能:被傳送的不是字節(jié),而是字節(jié)中的某位。說明:bit是位地址(二進(jìn)制8位);

bit和bit之間無直接傳送指令。布爾狀態(tài)控制指令:CLR(清除)、SETB(置位)、CPL(取反)

格式:CLRC;Cy←0CLRbit;bit←0SETBC;Cy←1SETBbit;bit←1CPLC;Cy←????CPLbit;bit←?????? 功能:CLR是Clear縮寫,SETB是SetBit的縮寫。

布爾邏輯運(yùn)算指令:ANL、ORL

格式:ANLC,bit;Cy←(Cy)∧(bit)ANLC,??????;Cy←(Cy)∧??????ORLC,bit;Cy←(Cy)∨(bit)ORLC,??????;Cy←(Cy)∨??????布爾條件轉(zhuǎn)移指令:JC、JNC、JB、JNB、JBC

格式:JCrel;若(Cy)=1,則PC←(PC)+2+rel單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版;若(Cy)=0,則PC←(PC)+2JNCrel;若(Cy)=0,則PC←(PC)+2+rel;若(Cy)=1,則PC←(PC)+2JBbit,rel;若(bit)=1,則PC←(PC)+3+rel;若(bit)=0,則PC←(PC)+3JBbit,rel;若(bit)=0,則PC←(PC)+3+rel;若(bit)=1,則PC←(PC)+3JBCbit,rel;若(bit)=0,則PC←(PC)+3;若(bit)=1,則PC←(PC)+3+rel,且bit←0第4章 匯編語言程序設(shè)計(jì)1. 假設(shè)兩個(gè)雙字節(jié)無符號(hào)數(shù),分別存放在R1R0和R3R2中,高字節(jié)在前,低字節(jié)在后。編程使兩數(shù)相加,和數(shù)存放回R2R1R0中。ORG 1000HCLR CMOVA,R0 ;取被加數(shù)低字節(jié)至AADD A,R2 ;與加數(shù)低字節(jié)相加MOVR0,A ;存和數(shù)低字節(jié)MOVA,R1 ;取被加數(shù)高字節(jié)至AADDCA,R3 ;與加數(shù)高字節(jié)相加MOVR1,A ;存和數(shù)高字節(jié)MOVA,#0ADDCA,#0 ;加進(jìn)位位MOVR2,A ;存和數(shù)進(jìn)位位*SJMP$ ;原地踏步END2. 將一個(gè)字節(jié)內(nèi)的兩個(gè)BCD碼拆開并轉(zhuǎn)換成ASCII碼,存入兩個(gè)RAM單元。設(shè)兩個(gè)BCD碼已存放在內(nèi)部RAM的20H單元,將轉(zhuǎn)換后的高半字節(jié)存放到21H中,低半字節(jié)存放到22H中。法一編程:ORG1000HMOVR0,#22H ;R0←22HMOV@R0,#0 ;22H←0MOVA,20H ;兩個(gè)BCD數(shù)送AXCHDA,@R0 ;BCDL送22H單元ORL 22H,#30H ;完成轉(zhuǎn)換SWAPA ;BCDH至A的低四位ORL A,#30H ;完成轉(zhuǎn)換MOV21H,A ;存數(shù)SJMP$END法二編程:ORG1000HMOVA,20H ;取BCD碼至AMOVB,#10HDIV AB ;除10H取余,使BCDH→A、BCDL→BORL B,#30H ;完成轉(zhuǎn)換MOV22H,B ;存ASCII碼ORL A,#30H ;完成轉(zhuǎn)換MOV21H,A ;存ASCII碼SJMP$單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版END法三編程:ORG1000HMOVA,20H ;取BCD碼ANL A,#0FH ;屏蔽高四位ORL A,#30H ;完成轉(zhuǎn)換MOV22H,A ;存ASCII碼MOVA,20H ;取BCD碼ANL A,#0F0H ;屏蔽低四位SWAPA ;交換至低四位ORL A,#30H ;完成轉(zhuǎn)換MOV21H,A ;存ASCII碼SJMP$END3. 雙字節(jié)數(shù)求補(bǔ),設(shè)兩個(gè)字節(jié)原碼數(shù)存在R1R0中,求補(bǔ)后結(jié)果存在R3R2中。解:求補(bǔ)采用“模-原碼”的方法,因?yàn)檠a(bǔ)碼是原碼相對于模而言的,對于雙字節(jié)數(shù)來說其模為10000H。編程:ORG1000HCLR C ;0→CYCLR A ;0→ASUBBA,R0 ;低字節(jié)求補(bǔ)MOVR2,A ;送R2CLR A ;0→ASUBBA,R1 ;高字節(jié)求補(bǔ)MOVR3,A ;送R3SJMP$END4. 將內(nèi)部RAM的20H單元中的8位無符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換為三位BCD碼,并將結(jié)果存放在FIRST(百位)和SECOND(十位、個(gè)位)解:可將被轉(zhuǎn)換數(shù)除以100,得百位數(shù);余數(shù)再除以10得十位數(shù);最后余數(shù)即為個(gè)位數(shù)。FIRSTDATA22H;取數(shù)SECONDDATA21HHBCD:ORG1000HMOVA,20H;除數(shù)100→BMOVB,#64HDIVAB;除100MOVFIRST,A;百位BCDMOVA,BMOVB,#0AH ;除數(shù)10→BDIV AB ;除10SWAPA ;十位數(shù)送高位ORL A,B ;A為(十位、個(gè)位)BCDMOVSECOND,A ;存十位、個(gè)位數(shù)SJMP$END5. 設(shè)內(nèi)部RAM30H,31H單元中存放兩個(gè)無符號(hào)數(shù),試比較它們的大小。將較小的數(shù)存放在30H單元,較大的數(shù)存放在31H單元中。ORG1000H;0→CYSTART:CLRCMOVA,30H 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版SUBB A,31H ;做減法比較兩數(shù) JC NEXT ;若(30H)小,則轉(zhuǎn)移

MOV A,30H

XCH A,31H

MOV

30H,A ;交換兩數(shù) NEXT: NOP

SJMP$

END

6. 空調(diào)機(jī)在制冷時(shí),若排出空氣比吸入空氣溫度低8℃,則認(rèn)為工作正常,否則認(rèn)為工作故障,并設(shè)置故障標(biāo)志。 設(shè)內(nèi)存單元40H存放吸入空氣溫度值,41H存放排出空氣溫度值。若(40H)-(41H)≥8℃,則空調(diào)機(jī)制冷正常,在42H單元 中存放“0”,否則在42H單元中存放“FFH”,以示故障(在此42H單元被設(shè)定為故障標(biāo)志)。編程:ORG1000H;吸入溫度值送ASTART:MOVA,40HCLRC;0→CYSUBBA,41H;(40H)-(41H)→AJCERROR;CY=1,則故障SUBBA,#8;溫差小于8℃?JCERROR;是則故障;工作正常MOV42H,#0SJMPEXIT;轉(zhuǎn)出口;否則置故障標(biāo)志ERROR:MOV42H,#0FFH;原地踏步EXIT:SJMP$ END

實(shí)驗(yàn)程序:

P1口循環(huán)亮燈。P1口全亮,延時(shí),全滅,循環(huán)。 ORG 8000H

LJMP Main

ORG 80F0H

Main:

MOV

R7,#0 Loop:MOVR6,#0;P1.0取反DJNZR6,$DJNZR6,$DJNZR6,$DJNZR6,$DJNZR7,LoopCPLP1.0CPLP1.1;P1.1取反CPLP1.2;P1.2取反CPLP1.3;P1.3取反CPLP1.4;P1.4取反CPLP1.5;P1.5取反CPLP1.6;P1.6取反CPLP1.7;P1.7取反SJMPMainEND

P1口走馬燈形式亮燈。 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版 ORG 8000H

LJMP Main

ORG 8100H

Main:

MOV A,#0FFH

CLR C

MainLoop:

CALL Delay

RLC A

MOV P1,A

SJMP MainLoop

Delay:

R7,#0

MOVLoop:

MOV R6,#0

DJNZ R6,$

DJNZ R6,$

DJNZ R6,$

DJNZ R7,Loop

RET

END

P1口由P1.7開關(guān)控制燈亮滅。 8000HORG

LJMP Main

ORG 8100H

Main:

JB

P1.7,SETLEDCLRLED:

CLR P1.0

CLR P1.1

CLR P1.2

P1.3CLR

CLR P1.4

CLR P1.5

CLR P1.6

MainSJMP

SETLED:

SETB P1.0

SETB P1.1

SETB

P1.2 SETB P1.3

SETB P1.4

SETB P1.5

SETB

P1.6 SJMP Main

END

雙字節(jié)數(shù)加法

內(nèi)部存儲(chǔ)器在30H------3FH中有8個(gè)雙字節(jié)二進(jìn)制數(shù),30H(高),31H(低)為第一個(gè),32H(高),33H(低)為第二個(gè)……3EH(高), 3FH(低)為第八個(gè)。單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版求其平均值放40H(高),41H(低),并將其轉(zhuǎn)換成十進(jìn)制,以壓縮BCD碼形式放50H(高),51H,52H。ORG 8000HMAIN: MOV R0,#3FHMOV R7,#08HMOV 40H,#00HMOV 41H,#00HMOV 42H,#00HLOOP: MOV A,@R0ADD A,42HMOV 42H,ADEC R0MOV A,@R0ADDC A,41HMOV 41H,AMOV A,40HADDC A,#00HMOV 40H,ADEC R0DJNZ R7,LOOPMOV R7,#08HLOOP1: CLR CMOV A,40HRRC AMOV 40,AMOV A,41HRRC AMOV 41H,AMOV A,42HRRC AMOV 42H,ADJNZ R7,LOOP1MOV 40H,41HMOV 41H,42HCLR AMOV 50H,AMOV 51H,AMOV 52H,AMOV R7,#10HIBTL2: CLR CMOV A,41HRLC AMOV 41H,AMOV A,40HRLC AMOV 40H,AMOV A,52HADDC A,52HDA AMOV 52H,A單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版MOV A,51HADDC A,51HDA AMOV 51H,AMOV A,50HADDC A,50HDA AMOV 50H,ADJNZ R7,IBTL2SJMP $END尋找最大最小數(shù)在30H------3FH共16個(gè)二進(jìn)制數(shù)中,尋找一個(gè)最大數(shù)放R7,尋找一個(gè)最小數(shù)放R6.(編在同一個(gè)程序中)。ORG0000HR5,#10HMAIN:MOVLOOP:MOVR0,#30HMOVR7,#00HMOVA,@R0LOOP3:CJNEA,07H,LOOP1INCR0LOOP1:DJNZR5,LOOPSJMPMA2JCLOOP3MA2:MOVR7,ASJMPLOOP3MOVR5,#10HLOP:MOVR0,#30HMOVR6,#0FFHMOVA,@R0LOP3:CJNEA,06H,LOP1INCR0LOP1:DJNZR5,LOPSJMP$JNCLOP3MOVR6,ASJMPLOP3END蜂鳴器驅(qū)動(dòng)編制一段程序,用P1.3口控制,使蜂鳴器發(fā)出“生日快樂”的音樂。MAIN:ORG8000HJMPMAINORG800BHJMPINTT0ORG8100HMOVSP,#60HMOVTMOD,#01HSETBET0SETBEASETBTR0單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版START0:SETB P1.3MOV 30H,#00HNEXT: MOV A,30HMOV DPTR,#TABLEMOVC A,@A+DPTRMOV R2,AJZ ENDDANL A,#0FHMOV R5,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP D1SING: DEC AMOV 22H,ARL AMOV DPTR,#TABLE1MOVC A,@A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,@A+DPTRMOV TL0,AMOV 20H,ASETB TR0D1: CALL DELAYINC 30HJMP NEXTENDD: CLR TR0JMP START0INTT0:PUSH PSWPUSH ACCMOV TL0,20HMOV TH0,21HCPL P1.3POP ACCPOP PSWRETIDELAY: MOV R7,#02DELAY0:MOV R4,#187DELAY1:MOV R3,#248DJNZ R3,$DJNZ R4,DELAY1DJNZ R7,DELAY0單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版DJNZ R5,DELAYRETTABLE: DB82H,01H,81H,94H,84H,0B4H,0A4H,04HDB82H,01H,81H,94H,84H,0C4H,0B4H,04HDB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04HDB82H,01H,81H,94H,84H,0B4H,0A4H,04HDB82H,01H,81H,94H,84H,0C4H,0B4H,04HDB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00HTABLE1:DW64260,64400,64524,64580,64684,64777,64820,64898DW64968,65030,65058,65110,65157,65178,65217ENDHC164串并轉(zhuǎn)換編寫一段程序,通過單片機(jī)的P1口控制74HC164的串行輸入端口,實(shí)現(xiàn)串并轉(zhuǎn)換。通過修改串行數(shù)據(jù),使輸出LED數(shù)碼管顯示1,2,3,,8,9,0.CLKEQUP1.0DINAEQUP1.1DINBEQUP1.2CLR164 EQUP1.3ORG0000HLJMP MAINORG0100HMAIN:MOV SP,#60H ;設(shè)置堆棧向量NOP ;設(shè)置以下端口初始化CLR CLK ;CLK=0SETB DINB ;DINB=1CLR CLR164 ;CLR=0輸出端口清零SETB CLR164 ;CLR=1MOV A,#0AAH ;用戶輸出數(shù)據(jù)初始化MOV R4,#08HSLCHG: RLCAMOV DINA,C ;串行輸出一位數(shù)據(jù)SETB CLK ;移位時(shí)鐘NOPCLR CLKNOPDJNZ R4,SLCHGSJMP $ ;程序結(jié)束,完成一次串并轉(zhuǎn)換END步進(jìn)電機(jī)編寫一段程序,通過單片機(jī)的 P1口控制步進(jìn)電機(jī)的控制端,使其按一定的控制方式進(jìn)行轉(zhuǎn)動(dòng)。分別可以用雙四拍(AB,BC,CD,DA,AB…..)方式,單四拍方式(A,B,C,D,A…..)方式等。BA EQUP1.0BB EQUP1.1BC EQUP1.2BD EQUP1.3ORG8000H 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版 LJMP MAIN

ORG8100H

MAIN:

MOVSP,#60H

ACALL

DELAYSMRUN: ;電機(jī)控制方式為單雙八拍

MOVP1,#08H ;A

ACALL DELAY

MOVP1,#0CH

;AB ACALL DELAY

MOVP1,#04H ;B

ACALL DELAY

MOVP1,#06H

;BC ACALL DELAY

MOVP1,#02H ;C

ACALL DELAY

MOVP1,#03H

;CD ACALL DELAY

MOVP1,#01H ;D

ACALL DELAY

MOVP1,#09H

;DA ACALL DELAY

SJMP SMRUN ;循環(huán)轉(zhuǎn)動(dòng)

DELAY: ;單步延時(shí)程序

MOVR4,#10

DELAY1: MOVR5,#250

DJNZR5,$

DJNZR4,DELAY1

RET

END

乘法實(shí)驗(yàn)編制一段程序,用30H,31H(高)2個(gè)二進(jìn)制數(shù),乘以40HMAIN:ORG0000HMOVR2,31HLCALLMOVR3,30HMOVR6,#00HMOVR7,40HQMULMOV52H,R551H,R6MOVMOV50H,R7SJMP$1個(gè)二進(jìn)制數(shù),結(jié)果放50H,51H,52H(高)中。QMUL:MOVR4,#00H;無符號(hào)雙字節(jié)乘法子程序。MOVR5,#00HR0,#10HMOVNMLP:CLRCMOVA,R4RRCAMOVR4,A 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版 MOV A,R5

RRC A

MOV R5,A

MOV A,R6

RRC A

MOV R6,A

MOV A,R7

RRC A

MOV R7,A

JNC NMLN

MOV A,R5

ADD A,R3

MOV R5,A

MOV A,R4

ADDC A,R2

MOV R4,A

NMLN: DJNZ R0,NMLP

MOV A,R4

RRC

A MOV R4,A

MOV A,R5

RRC A

MOV

R5,A MOV A,R6

RRC A

MOV R6,A

MOV

A,R7 RRC A

MOV R7,A

RET

END第5章 MCS-51定時(shí)/計(jì)數(shù)器、串行口及中斷系統(tǒng)1. 兩個(gè)16位定時(shí)計(jì)數(shù)器

2. 定時(shí)器控制寄存器TCON(88H);C/T方式寄存器TMOD(89H),不能位尋址

3. 定時(shí)器的工作方式:

方式0:13位定時(shí)計(jì)數(shù)器,注意:TL0的低5位和TH0共同組成

方式1:16位定時(shí)計(jì)數(shù)器

方式2:自動(dòng)重裝入的8位定時(shí)計(jì)數(shù)器,溢出后(TF0=0)由TH0→TL0

方式3:T0成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器

TL0作為定時(shí)計(jì)數(shù)器;TH0僅作定時(shí)器用

TL0的控制用原T0的,TH0用原T1的控制位

T1工作在方式0~2,溢出時(shí)送串行口,經(jīng)常作為串行口波特率發(fā)生器

4. 計(jì)數(shù)器初值:

設(shè)計(jì)數(shù)模值為M,計(jì)數(shù)初值設(shè)定為TC,計(jì)數(shù)器計(jì)滿為零所需的計(jì)數(shù)值為C,則:TC=M-C(M=213,216,28)5. 定時(shí)器初值:

T=(M-TC)T機(jī)器

6. FOSC=12MHZ,試計(jì)算定時(shí)時(shí)間2MS所需的定時(shí)器的初值

方式2,方式3:TMAX=0.256MS,所以必須將工作方式設(shè)在方式0或方式1 單片機(jī)原理及應(yīng)用期末復(fù)習(xí)資料 修訂第3版方式0:TC=213-2MS/1US=6192=1830H

TL0=10H,TH0=0C1H

方式1:TC=216-2MS/1US=63536=0F830H

TL0=30H,TH0=0F8H7. 串行通信:數(shù)據(jù)一位接一位順序傳送,可只用一根數(shù)據(jù)線傳送多位信息8. 串行通信有兩種基本方式:同步通信和異步通信9. 串行接口有單工、半雙工和全雙工3種10. MCS-51單片機(jī)片內(nèi)有一個(gè)串行接口,可提供同步或全雙工異步串行通信方式.11. 與串行口有關(guān)的特殊功能寄存器有:

SCON:串行口控制寄存器

SBUF:緩沖寄存器

PCON:功耗控制寄存器(D7:SMOD為波特率系數(shù)選擇位)12. 波特率的選擇串行口方式0的波特率是固定的,為系統(tǒng)時(shí)鐘的12分頻(fosc/12),即每個(gè)機(jī)器周期傳送一位數(shù)據(jù)位。串行口用方式2工作時(shí),波特率為(2SMOD/64)×fosc。串行口方式1和方式3用定時(shí)器T1作為波特率發(fā)生器,其波特率有多種選擇,與T1的溢出率有關(guān)

串行口方式1、3的波特率=(2SMOD/32)×T1溢出率

T1的溢出率即T1溢出時(shí)間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論