




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、v教學(xué)重點和難點教學(xué)重點和難點 指令的格式和尋址方式 數(shù)據(jù)傳送指令項目項目3 3 汽車轉(zhuǎn)向信號燈控制汽車轉(zhuǎn)向信號燈控制v 教學(xué)方法教學(xué)方法 講授法、演示法v 教學(xué)學(xué)時教學(xué)學(xué)時 6課時1、8051單片機的時鐘電路3.0 3.0 復(fù)習(xí)復(fù)習(xí)1XTAL1XTAL2C1C2晶振8051至內(nèi)部時鐘電路80511XTAL1XTAL2VSSTTL外部時鐘信號VCC2、 8051單片機的復(fù)位電路 3.0 3.0 復(fù)習(xí)復(fù)習(xí)MCS-51V C CVCCRESETVSS22uF1KMCS-51V C CVCCRESETVSS22uF1KRESETR1R22003、8051單片機的存儲器3.0 3.0 復(fù)習(xí)復(fù)習(xí)(1)8
2、051存儲器可以分成兩大類: RAM:CPU在運行時能隨時進行數(shù)據(jù)的寫入和讀出,但在關(guān)閉電源時,其所存儲的信息將丟失。它用來存放暫時性的輸入輸出數(shù)據(jù)、運算的中間結(jié)果或用作堆棧。 ROM:是一種寫入信息后不易改寫的存儲器。斷電后,ROM中的信息保留不變。用來存放固定的程序或數(shù)據(jù),如系統(tǒng)監(jiān)控程序、常數(shù)表格等。 程序程序存儲器存儲器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,在這三個單元存放一條無條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH00
3、23H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位位0FFFH0FFEH EA=1 EA=0 EA=1 EA=0程序程序存儲器資源分布存儲器資源分布中斷入口地址在程序存儲器中,有6個單元具有特殊功能0003H0003H:外部中斷0入口。000BH000BH:定時器0溢出中斷入口。0013H0013H:外部中斷1入口。001BH001BH:定時器1溢出中斷入口。0023H0023H:串行口中斷入口。v52還有還有002BH對應(yīng)對應(yīng)T2中斷。中斷。 使用時,通常在這些入口地址處存放一條絕對跳轉(zhuǎn)使用時,通常在這些入口地址處存放一條絕對跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起
4、始地址,或指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起始地址,或者從者從0000H0000H起始地址跳轉(zhuǎn)到用戶設(shè)計的初始程序上。起始地址跳轉(zhuǎn)到用戶設(shè)計的初始程序上。0000H0000H: 8051復(fù)位后,PC0000H,即程序從0000H 開始執(zhí)行指令。0000HFFFFH(64K)內(nèi)部外部數(shù)據(jù)數(shù)據(jù)存儲器存儲器00HFFH7FH80H( (高高128B)128B)( (低低128B)128B)RAM專用寄存器0000H H07H07H0808H H0FH0FH1010H H17H17H1818H H1FH1FH0區(qū)區(qū)R0R0R7R7R0R0R7R7R0R0R7R7R0R0R7R71區(qū)區(qū)2區(qū)區(qū)3區(qū)區(qū)工
5、作寄存器區(qū)工作寄存器區(qū)可位尋址區(qū)可位尋址區(qū)20H2FH7F 7807 0030H7FH數(shù)據(jù)緩沖區(qū)數(shù)據(jù)緩沖區(qū)/堆棧區(qū)堆棧區(qū)內(nèi)部內(nèi)部RAMRAM存儲器存儲器 工作寄存器區(qū)選擇位RS0、RS1PSW位地址 CY ACF0RS1RS0OVF1P片片內(nèi)內(nèi)RAM地地址址空空間間:低低128字節(jié)字節(jié) 7FH30H2FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H47464544434241
6、4027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H07060504030201001FH18H第3組工作寄存器 (R0R7)17H10H第2組工作寄存器 (R0R7)0FH08H第1組工作寄存器 (R0R7)07H00H第0組工作寄存器 (R0R7)工作寄存器區(qū)位尋址區(qū)用戶RAM區(qū)(堆棧、數(shù)據(jù)緩沖區(qū))堆棧堆棧: 在片內(nèi)在片內(nèi)RAMRAM中,常常要指定一個專門的區(qū)域來存放某
7、些中,常常要指定一個專門的區(qū)域來存放某些特別的數(shù)據(jù)特別的數(shù)據(jù), ,它遵循它遵循先進后出先進后出和和后進先出后進先出的原則的原則, ,這個這個RAMRAM區(qū)區(qū)叫叫堆棧。堆棧。功用功用:1 1)子程序調(diào)用)子程序調(diào)用和和中斷服務(wù)中斷服務(wù)時時CPUCPU自動將當(dāng)前自動將當(dāng)前PCPC 值值壓棧保存,返回時自動將壓棧保存,返回時自動將PCPC值彈棧。值彈棧。2 2)保護現(xiàn)場)保護現(xiàn)場/ /恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場3 3)數(shù)據(jù)傳輸)數(shù)據(jù)傳輸離散分布有離散分布有2121個個可字節(jié)尋址的可字節(jié)尋址的SFRSFR。盡管還有很多空閑盡管還有很多空閑地址,但用戶并不地址,但用戶并不能用能用 1111個可以進個可以進行位尋址
8、。行位尋址。特別提示:特別提示:對對SFRSFR只能使用直接只能使用直接尋址方式尋址方式,書寫時,書寫時可使用寄存器符號,可使用寄存器符號,也可用寄存器單元也可用寄存器單元地址。地址。 注意:注意:PCPC不不占據(jù)占據(jù)RAMRAM單元,單元,它在物理上是獨它在物理上是獨立的,因此是不立的,因此是不可尋址的寄存器可尋址的寄存器 在實際應(yīng)用中,常需在RAM區(qū)設(shè)置堆棧。80C51的堆棧一般設(shè)在30H7FH的范圍內(nèi)。棧頂?shù)奈恢糜蒘P寄存器指示。復(fù)位時SP的初值為07H,在系統(tǒng)初始化時可以重新設(shè)置。89C51特殊功能寄存器特殊功能寄存器(SFR)(SFR)特殊功能寄存器特殊功能寄存器SFRSFR(專用寄
9、存器)(專用寄存器)專用于專用于控制、選擇、管理、存放控制、選擇、管理、存放單片機內(nèi)部各部分單片機內(nèi)部各部分的工作的工作方式、條件、狀態(tài)、結(jié)果方式、條件、狀態(tài)、結(jié)果的寄存器的寄存器。不同的不同的SFRSFR管理不同的硬件模塊,負責(zé)不同的功管理不同的硬件模塊,負責(zé)不同的功能能各司其職各司其職換言之:要讓單片機實現(xiàn)預(yù)定的功能,必須有相應(yīng)換言之:要讓單片機實現(xiàn)預(yù)定的功能,必須有相應(yīng)的硬件和軟件,的硬件和軟件,而軟件中最重要的一項工作就是對而軟件中最重要的一項工作就是對SFRSFR寫命令(要求)。寫命令(要求)。 80518051在邏輯上,即從用戶角度上在邏輯上,即從用戶角度上80518051有三個存
10、儲空間:有三個存儲空間: 片內(nèi)外統(tǒng)一編址的片內(nèi)外統(tǒng)一編址的程序存儲器程序存儲器 片內(nèi)外不統(tǒng)一編址的片內(nèi)外不統(tǒng)一編址的數(shù)據(jù)存儲器數(shù)據(jù)存儲器 特殊功能寄存器(片內(nèi))特殊功能寄存器(片內(nèi))訪問這幾個不同的邏輯空間時,采用的指令:訪問這幾個不同的邏輯空間時,采用的指令: 片內(nèi)外程序存儲器空間片內(nèi)外程序存儲器空間-MOVCMOVC 片內(nèi)數(shù)據(jù)存儲器空間和片內(nèi)數(shù)據(jù)存儲器空間和SFR-SFR-MOVMOV 片外數(shù)據(jù)存儲器地址空間片外數(shù)據(jù)存儲器地址空間-MOVXMOVX3.1.0 3.1.0 概述概述3.1 8051單片機的指令格式和尋址方式單片機的指令格式和尋址方式 1) 指令形式 從前述實訓(xùn)中可以看出,指令
11、有兩種形式:助記符指令和機器碼指令(機器指令)。助記符指令只有翻譯成機器碼后,單片機才能直接執(zhí)行。機器碼指令分為以下三種: 單字節(jié)指令:機器碼只有一個字節(jié)的指令稱為單字節(jié)指令。例如單字節(jié)指令CLR A的機器碼是E4H。 雙字節(jié)指令:機器碼包括兩個字節(jié)的指令稱為雙字節(jié)指令。例如雙字節(jié)指令MOV A,#55H的機器碼是74H 55H。 三字節(jié)指令:機器碼包括三個字節(jié)的指令稱為三字節(jié)指令。例如三字節(jié)指令MOV P1,#55H的機器碼是75H 90H 55H。 單片機指令系統(tǒng)中,大多數(shù)指令是單字節(jié)指令和雙字指令。 2) 指令分析(通過實訓(xùn)演示) (1)MOV P1,#55H:將常數(shù)55H送入P1口,在
12、助記符指令中,常數(shù)稱為立即數(shù)。 立即數(shù)55H: 0 1 0 1 0 1 0 1 對應(yīng)P1口各位: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 相應(yīng)的LED狀態(tài): 亮 滅 亮 滅 亮 滅 亮 滅 參照lamp的電路圖,P1口的某一位輸出0(低電平),由外部電源VCC驅(qū)動發(fā)光二極管處于點亮狀態(tài),否則二極管處于熄滅狀態(tài)。 (2)MOV 20H,#0F0H:將立即數(shù)0F0H送到內(nèi)部RAM的20H單元中。MOV P1,20H:將20H單元的內(nèi)容,即0F0H送到P1口。發(fā)光二極管的狀態(tài)為 0F0H: 1 1 1 1 0 0 0 0 P1口: P1.7 P1.6 P1.5
13、 P1.4 P1.3 P1.2 P1.1 P1.0 LED狀態(tài) 滅 滅 滅 滅 亮 亮 亮 亮 (3) MOV A,#0F0H : 將立即數(shù)0F0H送到累加器A中。 MOV P1,A : 將累加器A的內(nèi)容,即0F0H送到P1口。發(fā)光二極管的狀態(tài)同(2)。 (4) MOV R4,#0FH : 將立即數(shù)0FH送到寄存器R4中。 MOV P1,R4:將寄存器R4的內(nèi)容,即0FH送到P1口。發(fā)光二極管的狀態(tài)如下: 0FH: 0 0 0 0 1 1 1 1 P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1. LED狀態(tài) : 亮 亮 亮 亮 滅 滅 滅 滅 (5) MO
14、V 20H,#0AAH:將立即數(shù)0AAH送到內(nèi)部RAM的20H單元中。 MOV R0,#20H:將立即數(shù)20H送到R0寄存器中。 MOV P1,R0:將R0所指向的20H單元的內(nèi)容,即0AAH送到P1口中,二極管的狀態(tài)如下: 0AAH: 1 0 1 0 1 0 1 0 P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 LED狀態(tài):滅 亮 滅 亮 滅 亮 滅 亮 (6)MOV A,#55H:將立即數(shù)0F0H送到累加器A中。 MOV P1,A :將累加器A的內(nèi)容,即55H送到P1口。發(fā)光二極管的狀態(tài)同(1)。AND A,#0FH:累加器A的內(nèi)容55H與立即數(shù)
15、0FH進行邏輯“與”操作,結(jié)果為05H,再送回累加器A中。MOV P1,A:將累加器A的內(nèi)容,即05H送到P1口。發(fā)光二極管的狀態(tài)如下: 05H: 0 0 0 0 0 1 0 1 P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 LED狀態(tài): 亮 亮 亮 亮 亮 滅 亮 滅 ORL A,#0F0H:累加器A的內(nèi)容05H與立即數(shù)0F0H進行邏輯“或”操作,結(jié)果為0F5H,再送回累加器A中。 MOV P1,A:將累加器A的內(nèi)容,即0F5H送到P1口。發(fā)光二極管的狀態(tài)如下: 0F5H: 1 1 1 1 0 1 0 1 P1口: P1.7 P1.6 P1.5 P
16、1.4 P1.3 P1.2 P1.1 P1.0 LED狀態(tài): 滅 滅 滅 滅 亮 滅 亮 滅 (7)CLR A :累加器清0。 MOV P1,A:將累加器A的內(nèi)容,即00H送到P1口。發(fā)光二極管的狀態(tài)是全亮。 CPL A:將A的內(nèi)容00H按位取反,結(jié)果為0FFH。 MOV P1,A:將累加器A的內(nèi)容,即0FFH送到P1口。發(fā)光二極管的狀態(tài)是全滅。 (8) MOV A,#01H:將立即數(shù)01H送到累加器A中。 MOV P1,A:將累加器A的內(nèi)容,即01H送到P1口。發(fā)光二極管的狀態(tài)如下: 01H: 0 0 0 0 0 0 0 1 P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.
17、2 P1.1 P1.0 LED狀態(tài): 亮 亮 亮 亮 亮 亮 亮 滅 RL A:移位指令,將A的內(nèi)容01H循環(huán)左移一位,結(jié)果為02H。 MOV P1,A:將累加器A的內(nèi)容,即02H送到P1口。發(fā)光 二極管的狀態(tài)如下: 02H: 0 0 0 0 0 0 1 0 P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 LED狀態(tài): 亮 亮 亮 亮 亮 亮 滅 亮 RL A:A的內(nèi)容02H左移一位,結(jié)果為04H。 MOV P1,A:將累加器A的內(nèi)容,即04H送到P1口。發(fā)光二極管的狀態(tài)如下: 02H: 0 0 0 0 0 1 0 0 P1口: P1.7 P1.6 P
18、1.5 P1.4 P1.3 P1.2 P1.1 P1.0 LED狀態(tài):亮 亮 亮 亮 亮 滅 亮 亮 3) 現(xiàn)象分析 在實訓(xùn)演示中看到以下現(xiàn)象:往P1口傳送數(shù)據(jù)的指令中,數(shù)據(jù)的來源不盡相同。數(shù)據(jù)是指令的操作對象,叫做操作數(shù)。指令必須給出操作數(shù)所在的地方,才能進行數(shù)據(jù)傳送。尋找操作數(shù)地址的方法,稱為尋址方式。下面是在實訓(xùn)演示中遇到的采用了不同尋址方式的指令: MOV P1,#55H ;把操作數(shù)直接寫在指令中,稱為立即數(shù)尋址 MOV P1,20H ;把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中,稱為直接尋址 MOV P1,A ;把操作數(shù)存放在寄存器中,稱為寄存器尋址 MOV P1,R0 ;把存放操作
19、數(shù)的內(nèi)存單元的地址放在寄存器R0中,這種尋址方式稱為寄存器間接尋址 除了以上4種尋址方式之外,MCS-51單片機還有變址尋址方式、相對尋址方式和位尋址方式等。 注意:P1與寄存器R0R7、累加器A不同,它是內(nèi)部RAM單元90H的符號地址,只能作為內(nèi)存單元直接尋址。 1 指令概述指令概述 通過實訓(xùn)我們了解到,計算機能夠按照人們的意愿工作,是因為人們給了它相應(yīng)命令。這些命令是由計算機所能識別的指令組成的。指令是CPU用于控制功能部件完成某一指定動作的指示和命令。 一臺微機所具有的所有指令的集合,就構(gòu)成了指令系統(tǒng)。指令系統(tǒng)越豐富,說明CPU的功能越強。例如,Z80 CPU中,沒有乘法和除法指令,乘法
20、和除法運算必須用軟件來實現(xiàn),因此執(zhí)行速度相對較慢;而MCS-51單片機提供了乘法和除法指令,實現(xiàn)乘法和除法運算時就要快得多。3.1.1 8051單片機的指令格式 一臺微機能執(zhí)行什么樣的操作,是在微機設(shè)計時確定的。一條指令對應(yīng)著一種基本操作。由于計算機只能識別二進制數(shù),所以指令也必須用二進制形式來表示,稱為指令的機器碼或機器指令。 MCS-51單片機指令系統(tǒng)共有33種功能,42種助記符,111條指令。 2 指令格式指令格式 在實訓(xùn)中看到,不同指令翻譯成機器碼后字節(jié)數(shù)也不一定相同。按照機器碼個數(shù),指令可以分為以下三種: 操作碼70操作碼70操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩?/p>
21、式70單字節(jié)指令:雙字節(jié)指令:三字節(jié)指令: MCS-51單片機指令系統(tǒng)包括49條單字節(jié)指令、46條雙字節(jié)指令和16條三字節(jié)指令。 采用助記符表示的匯編語言指令格式如下:標(biāo)號:操作碼操作數(shù)或操作數(shù)地址;注釋 標(biāo)號是程序員根據(jù)編程需要給指令設(shè)定的符號地址,可有可無;標(biāo)號由18個字符組成,第一個字符必須是英文字,不能是數(shù)字或其它符號;標(biāo)號后必須用冒號。 操作碼表示指令的操作種類,如MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作等。 操作數(shù)或操作數(shù)地址表示參加運算的數(shù)據(jù)或數(shù)據(jù)的有效地址。操作數(shù)一般有以下幾種形式:沒有操作數(shù)項,操作數(shù)隱含在操作碼中,如RET指令;只有一個操作數(shù),如CPL A指令;有兩個操作
22、數(shù),如MOV A,#00H指令,操作數(shù) 之 間 以 逗 號 相 隔 ; 有 三 個 操 作 數(shù) , 如 C J N E A,#00H,NEXT指令,操作數(shù)之間也以逗號相隔。 注釋是對指令的解釋說明,用以提高程序的可讀性;注釋前必須加分號。 操作數(shù)是指令的重要組成部分,指出了參與操作的數(shù)據(jù)或數(shù)據(jù)的地址。尋找操作數(shù)地址的方式稱為尋址方式。一條指令采用什么樣的尋址方式,是由指令的功能決定的。尋址方式越多,指令功能就越強。 MCS-51指令系統(tǒng)共使用了7種尋址方式,包括寄存器尋址、直接尋址、立即數(shù)尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址等。實訓(xùn)演示中,我們初步接觸了寄存器尋址、立即數(shù)尋址、直接
23、尋址和寄存器間接尋址等4種尋址方式。 3.1.2 8051單片機指令的尋址方式 1. 寄存器尋址寄存器尋址 寄存器尋址是指將操作數(shù)存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的數(shù)據(jù)傳送到寄存器R1中,其操作數(shù)存放在累加器A中,所以尋址方式為寄存器尋址。 如果程序狀態(tài)寄存器PSW的RS1RS0=01(選中第二組工作寄存器,對應(yīng)地址為08H0FH),設(shè)累加器A的內(nèi)容為20H,則執(zhí)行MOV R1,A指令后,內(nèi)部RAM 09H單元的值就變?yōu)?0H,如圖4.1所示。圖圖4.1 寄存器尋址示意圖寄存器尋址示意圖
24、20H09H內(nèi)部RAM20HAR101RS1 RS0演示中,采用寄存器尋址的指令如下: MOV P1,A;將累加器A的內(nèi)容送 到P1口 MOV P1,R4 ;將寄存器R4的內(nèi)容送到P1口 CLR A;將累加器A清0 CPL A;將累加器A中的內(nèi)容取反 RL A;將累加器A的內(nèi)容循環(huán)左移 2. 直接尋址直接尋址 直接尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在MCS-51單片機中,可以直接尋址的存儲器主要有內(nèi)部RAM區(qū)和特殊功能寄存器SFR區(qū)。 例如,指令MOV A,3AH執(zhí)行的操作是將內(nèi)部RAM 中地址為3AH的單元內(nèi)容傳送到累加器A中,其操作數(shù)3AH就是存放數(shù)據(jù)的單元地址,因此該指
25、令是直接尋址。 設(shè)內(nèi)部RAM 3AH單元的內(nèi)容是88H,那么指令MOV A,3AH的執(zhí)行過程如圖4.2所示。 圖圖4.2 直接尋址示意圖直接尋址示意圖 88H3AH內(nèi)部 RAM88HA 實訓(xùn)演示中,采用直接尋址的指令如下: MOV P1,20H ;將20H單元的內(nèi)容傳送到P1口 3. 立即數(shù)尋址立即數(shù)尋址 立即數(shù)尋址是指將操作數(shù)直接寫在指令中。 例如,指令MOV A,#3AH執(zhí)行的操作是將立即數(shù)3AH送到累加器A中,該指令就是立即數(shù)尋址。注意:立即數(shù)前面必須加“#”號,以區(qū)別立即數(shù)和直接地址。該指令的執(zhí)行過程如圖4.3所示。 圖圖4.3 立即數(shù)尋址示意圖立即數(shù)尋址示意圖3AHA3AH演示中,采
26、用立即數(shù)尋址的指令如下: MOV P1,#55H;將立即數(shù)55H送P1口 MOV 20H,#55;將立即數(shù)55H送20H 單元 MOV A,#0F0H;將立即數(shù)0F0H送累加器A MOV R4,#0FH;將立即數(shù)0FH送寄存器R4中 MOV R0,#20H;將立即數(shù)20H送寄存器R0口 AND A,#0FH;累加器A的內(nèi)容與立即數(shù)0FH進行邏輯與操作 OR A,#0F0H;累加器A的內(nèi)容與立即數(shù)0F0H進行邏輯或操作 MOVA,#01H ;將立即數(shù)01H送累加器A中 MOV A,#55H ;將立即數(shù)55H送累加器A中 4. 寄存器間接尋址寄存器間接尋址 寄存器間接尋址是指將存放操作數(shù)的內(nèi)存單元
27、的地址放在寄存器中,指令中只給出該寄存器。執(zhí)行指令時,首先根據(jù)寄存器的內(nèi)容,找到所需要的操作數(shù)地址,再由該地址找到操作數(shù)并完成相應(yīng)操作。 在MCS-51指令系統(tǒng)中,用于寄存器間接尋址的寄存器有R0、R1和DPTR,稱為寄存器間接尋址寄存器。 注意:間接尋址寄存器前面必須加上符號“”。例如,指令MOV A,R0執(zhí)行的操作是將R0的內(nèi)容作為內(nèi)部RAM的地址,再將該地址單元中的內(nèi)容取出來送到累加器A中。 v 設(shè)設(shè)R0=3AH,內(nèi)部,內(nèi)部RAM 3AH中的值是中的值是65H,則指令,則指令v MOV A,R0的執(zhí)行結(jié)果是累加器的執(zhí)行結(jié)果是累加器A的值為的值為65H,該指令的執(zhí),該指令的執(zhí)v 行過程如圖
28、行過程如圖4.4所示。所示。v 如,采用寄存器間接尋址的指令如下:如,采用寄存器間接尋址的指令如下:v MOV P1,R0;將;將R0所指的存儲單元的內(nèi)容送所指的存儲單元的內(nèi)容送P1口口圖圖4.4 寄存器間接尋址示意圖寄存器間接尋址示意圖65H3AH內(nèi)部 RAM3AHAR065Hv 5. 變址尋址v 變址尋址是指將變址尋址是指將基址寄存器基址寄存器與與變址寄存器變址寄存器的的內(nèi)容相加內(nèi)容相加,結(jié)果作結(jié)果作為操作數(shù)的地址為操作數(shù)的地址。DPTR或或PC是基址寄存器,累加器是基址寄存器,累加器A是變址寄存器。是變址寄存器。該類尋址方式主要用于查表操作。該類尋址方式主要用于查表操作。v 例如,指令例
29、如,指令MOVC A,A+DPTR執(zhí)行的操作是將累加器執(zhí)行的操作是將累加器A和和基址寄存器基址寄存器DPTR的內(nèi)容相加,相加結(jié)果作為操作數(shù)存放的地址,再將的內(nèi)容相加,相加結(jié)果作為操作數(shù)存放的地址,再將操作數(shù)取出來送到累加器操作數(shù)取出來送到累加器A中。中。v 設(shè)累加器設(shè)累加器A=02H,DPTR=0300H,外部,外部ROM中,中,0302H單元的內(nèi)容是單元的內(nèi)容是55H,則指令,則指令MOVC A,A+DPTR的執(zhí)行結(jié)果是累加的執(zhí)行結(jié)果是累加器器A的內(nèi)容為的內(nèi)容為55H。該指令的執(zhí)行過程如圖。該指令的執(zhí)行過程如圖4.5所示。所示。 圖圖4.5 變址尋址示意圖變址尋址示意圖55H程序存儲區(qū)02H
30、A0302H03HDPTR00H0302H 6. 相對尋址相對尋址 相對尋址是指程序計數(shù)器PC的當(dāng)前內(nèi)容與指令中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(也稱目的地址)。該類尋址方式主要用于跳轉(zhuǎn)指令。 例如,指令SJMP 54H執(zhí)行的操作是將PC當(dāng)前的內(nèi)容與54H相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。 設(shè)指令SJMP 54H的機器碼80H 54H存放在2000H處,當(dāng)執(zhí)行到該指令時,先從2000H和2001H單元取出指令,PC自動變?yōu)?002H;再把PC的內(nèi)容與操作數(shù)54H相加,形成目標(biāo)地址2056H,再送回PC,使得程序跳轉(zhuǎn)到2056H單元繼續(xù)執(zhí)行。該指令的執(zhí)行過程如圖4.
31、6所示。圖圖4.6 相對尋址示意圖相對尋址示意圖54H程序存儲區(qū)54HA2001H20HPC02H2056HXX80H2056H2000H 7. 位尋址位尋址 位尋址是指按位進行的尋址操作,而上述介紹的指令都是按字節(jié)進行的尋址操作。MCS-51單片機中,操作數(shù)不僅可以按字節(jié)為單位進行操作,也可以按位進行操作。當(dāng)我們把某一位作為操作數(shù)時,這個操作數(shù)的地址稱為位地址。位尋址區(qū)包括專門安排在內(nèi)部RAM中的兩個區(qū)域:一是內(nèi)部RAM的位尋址區(qū),地址范圍是20H2FH,共16個RAM單元,位地址為00H7FH;二是特殊功能寄存器SFR中有11個寄存器可以位尋址,參見理論教材30頁。 例如,指令SETB 3
32、DH執(zhí)行的操作是將內(nèi)部RAM位尋址區(qū)中的3DH位置1。 設(shè)內(nèi)部RAM 27H單元的內(nèi)容是00H,執(zhí)行SETB 3DH后,由于3DH對應(yīng)內(nèi)部RAM 27H的第5位,因此該位變?yōu)?,也就是27H單元的內(nèi)容變?yōu)?0H。該指令的執(zhí)行過程如圖4.7所示。圖圖4.7 位尋址示意圖位尋址示意圖內(nèi)部RAM27H二進制 10 0 1 0 0 0 0 0教學(xué)安排教學(xué)安排v前面對單片機應(yīng)用系統(tǒng)設(shè)計及相關(guān)知識有更全面前面對單片機應(yīng)用系統(tǒng)設(shè)計及相關(guān)知識有更全面的認識,如的認識,如MCS-51單片機尋址方式(單片機尋址方式(2課時)課時)要完全領(lǐng)會實訓(xùn)中的控制程序還需對單片機的指要完全領(lǐng)會實訓(xùn)中的控制程序還需對單片機的指
33、令系統(tǒng)有進一步的認識。令系統(tǒng)有進一步的認識。v接下來接下來 對前述內(nèi)容進行復(fù)習(xí)、總結(jié)并且進行實訓(xùn)對前述內(nèi)容進行復(fù)習(xí)、總結(jié)并且進行實訓(xùn)擴充:用單片機驗證數(shù)據(jù)傳送指令指令,從而對擴充:用單片機驗證數(shù)據(jù)傳送指令指令,從而對單片機的存儲器結(jié)構(gòu)、特點及讀寫操作有全面的單片機的存儲器結(jié)構(gòu)、特點及讀寫操作有全面的掌握(掌握(2課時)課時)3.2.0 指指 令令 系系 統(tǒng)統(tǒng) MCS-51單片機指令系統(tǒng)包括111條指令,按功能可以劃分為以下5類 數(shù)據(jù)傳送指令(29條) 算術(shù)運算指令(24條) 邏輯運算指令(24條) 控制轉(zhuǎn)移指令(17條) 位操作指令(17條)3.2 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 3.2.1 指令系
34、統(tǒng)中的符號說明指令系統(tǒng)中的符號說明 指令的書寫必須遵守一定的規(guī)則,為了敘述方便,我們采用表4.1的約定。表表4.1 指令描述約定指令描述約定符 號含 義Rn表示當(dāng)前選定寄存器組的工作寄存器R0R7Ri表示作為間接尋址的地址指針R0R1#data表示8位立即數(shù),即00HFFH#data16表示16位立即數(shù),即0000HFFFFHaddr16表示16位地址,用于64K范圍內(nèi)尋址addr11表示11位地址,用于2K范圍內(nèi)尋址direct8位直接地址,可以是內(nèi)部RAM區(qū)的某一單元或某一專用功能寄存器的地址Rel帶符號的8位偏移量(-128+127)Bit位尋址區(qū)的直接尋址位(X)X地址單元中的內(nèi)容,或
35、X作為間接尋址寄存器時所指單元的內(nèi)容將 后面的內(nèi)容傳送到前面去 3.2.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送指令是MCS-51單片機匯編語言程序設(shè)計中使用最頻繁的指令,包括內(nèi)部 RAM、寄存器、外部RAM以及程序存儲器之間的數(shù)據(jù)傳送。 數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變。 數(shù) 據(jù)目的地址 源地址 1. 內(nèi)部8位數(shù)據(jù)傳送指令(15條) 內(nèi)部8位數(shù)據(jù)傳送指令共15條,主要用于MCS-51單片機內(nèi)部RAM與寄存器之間的數(shù)據(jù)傳送。指令基本格式: MOV , 1) 以累加器A為目的地址的傳送指令(4條) 助記符格式機器碼(B)相應(yīng)操作指令說明機器周期MOV A,Rn111
36、01rrrARnn = 0 7 , rrr=0001111MOV A,direct11100101 directA (direct) 1MOV A,Ri1110011iA (Ri)i=0,1 1MOV A,#data01110100 dataA #data 1 注意:以上傳送指令的結(jié)果均影響程序狀態(tài)字寄存器PSW的P標(biāo)志。 例2.1 已知相應(yīng)單元的內(nèi)容如下,請指出每條指令執(zhí)行后相應(yīng)單元內(nèi)容的變化。 累加器A40H寄存器R050H內(nèi)部RAM:40H30H內(nèi)部RAM:50H10H (1) MOV A,#20H (2) MOV A,40H (3) MOV A,R0 (4) MOV A,R0解:(1)
37、 MOV A,#20H執(zhí)行后A=20H。 (2) MOV A,40H執(zhí)行后A=30H。 (3) MOV A,R0執(zhí)行后A=50H。 (4) MOV A,R0執(zhí)行后A=10H。 2) 以Rn為目的地址的傳送指令(3條)助記符格式機器碼(B)相應(yīng)操作指令說明機器周期MOV Rn,A11111rrrRn An = 0 7 , rrr=0001111MOV Rn,direct10101rrr directRn (direct)n = 0 7 , rrr=0001111MOV Rn,#data01111rrr dataRn #datan = 0 7 , rrr=0001111 注意:以上傳送指令的結(jié)果不
38、影響程序狀態(tài)字寄存器PSW標(biāo)志。3) 以直接地址為目的地址的傳送指令(以直接地址為目的地址的傳送指令(5條)條)助記符格式機器碼(B)相應(yīng)操作指令說明機器周期MOV direct,A11111010 direct(direct) A 1MOV direct,Rn10001rrr direct(direct )Rnn = 0 7 , rrr=0001111MOV direct2,direct110000101direct1 direct2(direct2) direct1 2MOV direct,Ri1000011i direct(direct )(Ri)i=0,12MOV direct,#da
39、ta01110101direct data(direct)#data 2 注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。 4) 以寄存器間接地址為目的地址的傳送指令(以寄存器間接地址為目的地址的傳送指令(3條)條)助記符格式機器碼(B)相應(yīng)操作指令說明機器周期MOV Ri,A1111011i(Ri)Ai=0,11MOV Ri,direct1110011i direct(Ri)(direct) 2MOV Ri,#data0111010i data(Ri)#data 1 注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。 例: 已知相應(yīng)單元的內(nèi)容如下,請指出下列指令執(zhí)行后各單元
40、內(nèi)容相應(yīng)的變化。寄存器R050H寄存器R166H寄存器R630H內(nèi)部RAM:50H60H內(nèi)部RAM:66H45H內(nèi)部RAM:70H40H(1) MOV A,R6 (2) MOV R6,70H(3) MOV 70H,50H(4) MOV 40H,R0(5) MOV R1,#88H解:(1) MOV A,R6執(zhí)行后A=30H。(2) MOV R6,70H執(zhí)行后R6=40H。(3) MOV 70H,50H執(zhí)行后(70H)=60H。(4) MOV 40H,R0執(zhí)行后(40H)=60H。(5) MOV R1,#88H執(zhí)行后(66H)=88H。 2. 16位 數(shù)據(jù)傳送指令(1條)助記符格式機器碼(B)相應(yīng)
41、操作指令說明機器周期MOV DPTR,#data161 0 0 1 0 0 0 0 data158 data70(DPTR) #data16把16位常數(shù)裝入數(shù)據(jù)指針2v 注意:以上指令結(jié)果不影響程序狀態(tài)字寄存器注意:以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。標(biāo)志。3. 外部數(shù)據(jù)傳送指令(4條)i=0,1助記符格式機器碼(B)相應(yīng)操作指令說明機器周期MOVX A,DPTR11100000A(DPTR)把DPTR所對應(yīng)的外部RAM地址中的內(nèi)容傳送給累加器A2MOVX A,Ri1110001iA (Ri)2MOVX DPTR,A11110000(DPTR) A結(jié)果不影響P標(biāo)志2MOVX Ri,A
42、1110001i(Ri) Ai=0,1,結(jié)果不影響P標(biāo)志2注意: 外部RAM只能通過累加器A進行數(shù)據(jù)傳送。 累加器A與外部RAM之間傳送數(shù)據(jù)時只能間接尋址方式,間接尋址寄存器為DPTR,R0,R1。 以上傳送指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。 例 把外部數(shù)據(jù)存儲器2040H單元中的數(shù)據(jù)傳送到外部數(shù)據(jù)存儲器2560H單元中去。 解:MOV DPTR,#2040H MOVX A,DPTR ;先將2040H單元的內(nèi)容傳送到累加器A中 MOV DPTR,#2560H MOVX DPTR,A ;再將累加器A中的內(nèi)容傳送到2560H單元中4. 交換和查表類指令(9條)v 1) 字節(jié)交換指令(
43、字節(jié)交換指令(3條)條)助記符格式機器碼(B)相應(yīng)操作指令說明機器周期XCH A,Rn11001rrr ARn A與Rn內(nèi)容互換1XCH A,direct11000101 directA(direct) 1XCH A,Ri1100011iA(Ri)i=0,11v 注意:以上指令結(jié)果影響程序狀態(tài)字寄存器注意:以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的的P標(biāo)志。標(biāo)志。v 2) 半字節(jié)交換指令(半字節(jié)交換指令(1條)條)助記符格式機器碼(B)相應(yīng)操作指令說明機器周期XCHD A,Ri1101011iA30(Ri)30低4位交換,高4位不變1 注意:上面指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。v 3
44、) 累加器累加器A中高中高4位和低位和低4位交換(位交換(1條)條)助記符格式機器碼(B)相應(yīng)操作指令說明機器周期SWAP A11000100A 30A74 高 、 低 4位 互 相 交換1 注意:上面指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。 例 設(shè)內(nèi)部數(shù)據(jù)存儲區(qū)2AH、2BH單元中連續(xù)存放有4個BCD碼a0 a1 a2 a3 (1個BCD碼占4位) a3 a2a0 a1 a1 a0 a2 a3 2AH 2BH 2AH 2BH 解:MOV R0,#2AH ;將立即數(shù)2AH傳送到寄存器R0中 MOV A,R0 ;將2AH單元的內(nèi)容傳送到累加器A中 SWAP A ;將累加器A中的高4位與 低4位
45、交換 MOV R0,A ;將累加器A的內(nèi)容傳送到2AH單元中 MOV R1,#2BH MOV A,R1 ;將2BH單元的內(nèi)容傳送到累加器A中 SWAP A ;將累加器A中的高4位與低4位交換 XCH A,R0 ;將累加器A中的內(nèi)容與2AH單元的內(nèi)容交換 MOV R1,A ;累加器A的內(nèi)容傳送到2BH單元v 4) 查表指令(查表指令(2條)條) 助記符格式機器碼(B)相應(yīng)操作指令說明機器周期M O V C A,A+PC10000011A (A+PC)A+PC所指外部 程 序 存 儲單元的值送A2M O V C A,A+DPTR10010011A (A+DPTR)A+DPTR所指外 部 程 序 存儲 單 元 的 值送A2注意:以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。 查表指令用于查找存放在程序存儲器中的表格。v 5) 堆棧操作指令(堆棧操作指令(2條)條) 助記符格式機器碼(B)相應(yīng)操作指令說明機器周期P U S H direct11000000directSPSP+1(SP)(direct)將SP加1,然后將源地址單元中的數(shù)傳送到SP所指示的單元中去2POP direct11010000direct(direct) (SP)SPSP-1將SP所指示的單元中的數(shù)傳送到direct地址單元中,然后SPSP-12 注意: 堆棧是用戶自己設(shè)定的內(nèi)部RAM中的一塊專用存儲區(qū),使用時
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 24司馬光 第二課時 教學(xué)設(shè)計-2024-2025學(xué)年語文三年級上冊統(tǒng)編版
- 旅行自行車項目可行性研究報告
- 紡織行業(yè)市場發(fā)展現(xiàn)狀及趨勢與投資分析研究報告
- 2025至2030年全自動鮮肉切片機項目投資價值分析報告
- 《3 信息技術(shù)的重要工具 計算機》教學(xué)設(shè)計-2023-2024學(xué)年華中師大版信息技術(shù)三年級上冊
- 項目可行性研究報告安全評價
- 2025年高精密濾油機項目投資可行性研究分析報告
- 全國粵教版信息技術(shù)七年級上冊第三單元第十二課《下載網(wǎng)上信息》教學(xué)設(shè)計
- 人教版八年級下冊歷史與社會教學(xué)設(shè)計:6.1.1 《連通世界的新航路》
- 2025至2031年中國IC卡式保險箱行業(yè)投資前景及策略咨詢研究報告
- 否定副詞“不”和“沒有”比較研究
- 19S406建筑排水管道安裝-塑料管道
- 幼兒園木工坊安全教育
- 內(nèi)科主任年終述職報告
- 船舶起重安全管理規(guī)定規(guī)定培訓(xùn)
- 2024年不停電電源UPS相關(guān)項目營銷計劃書
- 智慧農(nóng)業(yè)中的農(nóng)業(yè)機械與設(shè)備管理技術(shù)
- 公司SWOT分析表模板
- 解決問題的工作方案
- 理發(fā)店業(yè)務(wù)轉(zhuǎn)讓協(xié)議書范本
- 2024年濰坊護理職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
評論
0/150
提交評論