彩燈控制器流水燈、轉(zhuǎn)彎燈和交通燈程序設(shè)計(jì)和調(diào)試_第1頁(yè)
彩燈控制器流水燈、轉(zhuǎn)彎燈和交通燈程序設(shè)計(jì)和調(diào)試_第2頁(yè)
彩燈控制器流水燈、轉(zhuǎn)彎燈和交通燈程序設(shè)計(jì)和調(diào)試_第3頁(yè)
彩燈控制器流水燈、轉(zhuǎn)彎燈和交通燈程序設(shè)計(jì)和調(diào)試_第4頁(yè)
彩燈控制器流水燈、轉(zhuǎn)彎燈和交通燈程序設(shè)計(jì)和調(diào)試_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、彩燈控制器流水燈、轉(zhuǎn)彎燈和交通燈程序設(shè)計(jì)和調(diào)試12流水燈程序設(shè)計(jì)與調(diào)試轉(zhuǎn)彎燈程序設(shè)計(jì)與調(diào)試 交通燈程序設(shè)計(jì)與調(diào)試 主要內(nèi)容Single Chip Microcomputer31.3.1 流水燈程序設(shè)計(jì)與調(diào)試 一、任務(wù)說(shuō)明1、要求 P1口作為輸出口。至接8個(gè)發(fā)光二極管。要求編寫程序?qū)崿F(xiàn)如下功能:8個(gè)發(fā)光二極管依次亮滅并循環(huán),延時(shí)秒(已知fosc=12MHz)。2、重點(diǎn) 1、學(xué)習(xí)P1口作為輸出口的使用方法。 2、學(xué)習(xí)延時(shí)程序的設(shè)計(jì)方法。4二、硬件電路1、硬件分析 發(fā)光二極管采用共陽(yáng)極連接,P1口某個(gè)引腳輸出“0”則對(duì)應(yīng)的燈點(diǎn)亮。52、軟件分析 (1)整體任務(wù)分析:控制字始終是7個(gè)“1”和1個(gè)“0”

2、,“0”的位置每隔秒左移1位,然后由P1口輸出控制字點(diǎn)燈。 (2)程序流程圖控制字初值0FEH送A控制字送p1口點(diǎn)燈調(diào)用延時(shí)子程序?qū)⒖刂谱肿笠埔晃婚_始6涉及的指令MOV類指令RL指令DJNZ延時(shí)子程序 7(3)關(guān)于左移運(yùn)算:可以利用循環(huán)左移指令實(shí)現(xiàn) 指令性質(zhì):邏輯運(yùn)算指令 指令格式: RL A 注意:操作數(shù)只能是累加器。 指令說(shuō)明:執(zhí)行時(shí)累加器A的存儲(chǔ)內(nèi)容(8位2進(jìn)制數(shù)),整體向左移動(dòng)1位(低位移動(dòng)到相鄰的高位),最高位補(bǔ)回到最低位。 指令應(yīng)用:常用于完成快速乘法,每次執(zhí)行累加器內(nèi)容擴(kuò)大2倍。 相關(guān)指令:RR A; RLC A; RRC A8延時(shí)子程序?qū)嵗魡纹瑱C(jī)的主頻為12MHz,使用循環(huán)轉(zhuǎn)

3、移指令編寫延時(shí)20ms的子程序。(雙重循環(huán)結(jié)構(gòu))一個(gè)機(jī)器周期: 12/12M=1us 次數(shù) 周期DELAY: MOV R6, #0C8H 1 1 LOOP2: MOV R7 #x 200 1 NOP 200 1LOOP1: DJNZ R7, LOOP1 200 x 2 DJNZ R6, LOOP2 200 2 RET 1 2200+200+400 x+400+2=20 000求出x=489三、任務(wù)實(shí)施 步驟1:各小組按照流程圖設(shè)計(jì)各部分程序。 步驟2:程序匯編無(wú)誤后,利用ISP軟件和下載線將目標(biāo)文件(.HEX)程序代碼寫入本組的單片機(jī)芯片中。 步驟3:接通直流電源,啟動(dòng)電路板觀察現(xiàn)象,如現(xiàn)象不

4、對(duì)則重復(fù)步驟1、2。 步驟4:現(xiàn)象無(wú)誤,請(qǐng)求教師檢查、評(píng)價(jià)。 步驟5:編制項(xiàng)目報(bào)告并提交。10四、任務(wù)擴(kuò)展 思考:若想實(shí)現(xiàn)8個(gè)燈累加點(diǎn)亮并循環(huán),則程序該如何設(shè)計(jì)?11一、任務(wù)說(shuō)明 P1口作為輸入、輸出口。、接開關(guān)K1、K2;、接發(fā)光二極管L1、L2;、接L5、L6。K1作為左轉(zhuǎn)彎開關(guān),K2作為右轉(zhuǎn)彎開關(guān)。L1、L2作為左轉(zhuǎn)彎燈,L5、L6作為右轉(zhuǎn)彎燈。要求編寫程序?qū)崿F(xiàn)如下功能:向上打K1時(shí)(K1=1),左轉(zhuǎn)彎燈以一定頻率閃爍,向上打K2時(shí)(K2=1),右轉(zhuǎn)彎燈以一定頻率閃爍,兩開關(guān)同時(shí)向上或向下,四燈都滅。 燈閃爍一次即可,閃爍時(shí)先亮再滅。轉(zhuǎn)彎燈控制程序設(shè)計(jì)與調(diào)試 12重點(diǎn):1、學(xué)習(xí)P1口既作

5、為輸入,又作為輸出的使用方法。2、學(xué)習(xí)數(shù)據(jù)輸入、輸出程序的設(shè)計(jì)方法。13二、任務(wù)分析1、硬件分析P1口為準(zhǔn)雙向I/O接口,輸出單條指令完成,輸入時(shí)應(yīng)當(dāng)先向?qū)?yīng)的端口鎖存器寫入1,然后讀入數(shù)據(jù)。 142、軟件說(shuō)明 (1)整體分析:先讀入開關(guān)的狀態(tài),根據(jù)開關(guān)的四種狀態(tài)分情況控制燈的亮滅???zé)敉瓿珊蠓祷亻_始繼續(xù)讀開關(guān),保證開關(guān)持續(xù)有效。 (2)多分支判斷的實(shí)現(xiàn):開關(guān)有四種狀態(tài),對(duì)應(yīng)燈有四種控制規(guī)律??刹扇≈瘘c(diǎn)檢測(cè)的方式實(shí)現(xiàn)分支控制。即讀入開關(guān)狀態(tài)后先判斷是否為00,若為00則燈全滅;若不為00則判斷開關(guān)是否為01,若為01則左轉(zhuǎn)彎燈閃爍;若不為01則判斷開關(guān)是否為10,若為10則右轉(zhuǎn)彎燈閃爍;若不為

6、10則必然為11,燈全滅。K1K0狀態(tài)控?zé)粢?guī)律控制字00全滅0FFH01左轉(zhuǎn)彎燈閃爍0F3H,0FFH10右轉(zhuǎn)彎燈閃爍0CFH,0FFH11全滅0FFH15(3)實(shí)現(xiàn)分支判斷的關(guān)鍵指令:條件轉(zhuǎn)移指令CJNE指令名稱:比較不相等轉(zhuǎn)移。指令格式:CJNE A,#data,rel;若(A) data, 則跳到標(biāo)號(hào)處執(zhí)行指令,否則順序執(zhí)行。對(duì)借位標(biāo)志有影響:若 (A)0Y =100 X=0 求出Y值,將Y值存入31H單元。 X X0解:根據(jù)數(shù)據(jù)的符號(hào)位判別該數(shù)的正負(fù),若最高位為0,再判別該數(shù)是否為0。程序流程如圖2-2所示。 參考程序如下:ORG 1000H 23 MOV A,30H ;取數(shù) ,NEG

7、 ;負(fù)數(shù),轉(zhuǎn)NEG JZ ZER0 ;為零,轉(zhuǎn)ZER0 ADD A,#02H;為正數(shù),求X+2 AJMP SAVE ;轉(zhuǎn)到SAVE,保存數(shù)據(jù)ZER0:MOV A,# 64H ;數(shù)據(jù)為零,Y=100 AJMP SAVE ;轉(zhuǎn)到SAVE,保存數(shù)據(jù) NEG: DEC A ; CPLA ;求XSAVE:MOV 31H,A ;保存數(shù)據(jù) SJMP ;暫停 END24A為負(fù)數(shù)?取數(shù),A(30H)開始結(jié)束A=0?YNNA|X|A64HAX+2存數(shù),(31H)A(30H)圖2-2 例程序流程圖25多向分支程序設(shè)計(jì)舉例【例4.4】 根據(jù)R0的值轉(zhuǎn)向7個(gè)分支程序。R010,轉(zhuǎn)向SUB0;R020,轉(zhuǎn)向SUB1; R

8、060,轉(zhuǎn)向SUB6;解:利用JMP A+DPTR 指令直接給PC賦值,使程序?qū)崿F(xiàn)轉(zhuǎn)移。程序流程如圖2-3所示。26ORG 2000HMOV DPTR,#TAB;轉(zhuǎn)移指令表首地址 MOV A,R0;取數(shù) MOV B,#10 DIV AB ;A除以10,商在A中 CLR C RLC A ;A2A JMP A+DPTR;PC A+DPTR AJMP SUB0;轉(zhuǎn)移指令表 AJMP SUB1 AJMP SUB6TAB:27K=?轉(zhuǎn)SUB0轉(zhuǎn)SUB1轉(zhuǎn)SUB6K=0 K=1 K=6開始圖2-3 多向分支程序流程圖返回本節(jié)281.3.3 交通燈程序設(shè)計(jì)與調(diào)試 一、任務(wù)說(shuō)明 P1口控制6個(gè)燈,紅、黃、綠各

9、兩個(gè),編程實(shí)現(xiàn)交通燈控制規(guī)律。29四紅燈亮延時(shí)1秒東西路口綠燈亮,南北路口紅燈亮延時(shí)6秒東西路黃燈閃爍8次,南北路口紅燈亮每次延時(shí)1秒四紅燈亮延時(shí)1秒東西路口紅燈亮,南北路口綠燈亮延時(shí)6秒東西路紅燈亮,南北路口黃燈閃爍8次每次延時(shí)1秒30教學(xué)提示: 指令是CPU用于控制功能部件完成某一指定動(dòng)作的指示和命令。一臺(tái)計(jì)算機(jī)全部指令的集合稱為指令系統(tǒng)。指令系統(tǒng)體現(xiàn)了計(jì)算機(jī)的性能,也是計(jì)算機(jī)重要的組成部分,應(yīng)用計(jì)算機(jī)進(jìn)行程序設(shè)計(jì)的基礎(chǔ)。單片機(jī)應(yīng)用系統(tǒng)的運(yùn)行,是依靠合理的硬件接口、用戶程序和監(jiān)控程序的完美結(jié)合實(shí)現(xiàn)的,所以掌握單片機(jī)需要學(xué)習(xí)多樣的匯編程序設(shè)計(jì)方法實(shí)現(xiàn)運(yùn)算和控制功能。 3180C51單片機(jī)具有

10、111條指令,指令系統(tǒng)特點(diǎn)如下:(1)指令執(zhí)行時(shí)間快。1個(gè)機(jī)器周期指令有64條,2個(gè)機(jī)器周期指令有45條,而4個(gè)機(jī)器周期指令僅2條(乘除指令)。(2)指令短,指令編碼字節(jié)少,單字節(jié)的指令有49條(約有一半的指令為單字節(jié)指令),雙字節(jié)的有45條,三字節(jié)的僅有17條。(3)具有豐富的位操作指令。 (4)可直接用傳送指令實(shí)現(xiàn)端口的輸入輸出操作。32以80C51為內(nèi)核的單片機(jī)指令系統(tǒng)為例,用44種操作碼助記符來(lái)描述33種操作功能,構(gòu)成了111條基本指令。 單字節(jié)指令49條;按字節(jié)分雙字節(jié)指令45條;三字節(jié)指令17條;單周期指令64條;按指令執(zhí)行時(shí)間分雙周期指令45條;111條基本指令4個(gè)機(jī)器周期指令2

11、條; 數(shù)據(jù)傳送類指令(29);算術(shù)運(yùn)算類指令(24);按功能分邏輯運(yùn)算及移位類指令(24);控制轉(zhuǎn)移類指令(17);布爾變量操作類指令(17)。33.1指令格式及常用符號(hào)80C51單片機(jī)指令格式 )指令由操作碼助記符和操作數(shù)兩部組成。)指令格式如下: 標(biāo)號(hào):操作碼助記符 目的操作數(shù) ,源操作數(shù);注釋 符號(hào)“ ”其包含的內(nèi)容因指令的不同可有可無(wú)。 特例:子程序返回指令RET、中斷返回指令RETI、空操作指令NOP,皆無(wú)目的操作數(shù)和源操作數(shù) 標(biāo)號(hào):根據(jù)編程需要給指令設(shè)定的符號(hào)地址,可有可無(wú);通常在子程序入口或轉(zhuǎn)移指令的目標(biāo)地址處才賦予標(biāo)號(hào)。標(biāo)號(hào)由18個(gè)字符組成,第一個(gè)字符必須是英文字母,不能是數(shù)字

12、或其他符號(hào),標(biāo)號(hào)后必須用冒號(hào)。34操作碼助記符:指令的核心部分,用于指示機(jī)器執(zhí)行何種操作,如加、減、乘、除、傳送等。操作數(shù):是指令操作的對(duì)象,可以是一個(gè)具體的數(shù)據(jù),也可以是參加運(yùn)算的數(shù)據(jù)所在的地址。操作數(shù)一般有以下幾種形式:沒有操作數(shù),操作數(shù)隱含在操作碼中,如RET指令;只有一個(gè)操作數(shù),如INC A指令;有兩個(gè)操作數(shù),如MOV A,30H指令,操作數(shù)之間以逗號(hào)相隔;有3個(gè)操作數(shù),如 CJNE A,#00H,10H指令。注釋:對(duì)指令的解釋說(shuō)明,用以提高程序的可讀性,注釋前必須加分號(hào),注釋換行時(shí)行前也要加分號(hào)。35指令的字節(jié) 1.單字節(jié)指令(49條) 在MCS-5l指令系統(tǒng)中,單字節(jié)指令可分為兩類

13、:無(wú)操作數(shù)的單字節(jié)指令含有操作數(shù)寄存器編號(hào)的單字節(jié)指令。1)無(wú)操作數(shù)單字節(jié)指令 這類指令只有操作碼字段,操作數(shù)隱含在操作碼中。例如:INC DPTR 36 指令碼為 2)含有操作碼、寄存器編碼的單字節(jié)指令 單字節(jié)的指令碼由操作碼和指示操作數(shù)所在寄存器編碼組成。 例如:MOV A,Rn 指令碼為(其中r r r為寄存器Rn的編碼)位D7D6D5D4D3D2D1D0十六進(jìn)制碼操作碼10100011A3H位D7D6D5D4D3D2D1D0十六進(jìn)制碼操作碼+操作數(shù)11101rrrE8HEFH例如:INC DPTR372.雙字節(jié)指令(46條) 雙字節(jié)指令的操作碼字節(jié)在前,其后的操作數(shù)字節(jié)可以是立即數(shù),也

14、可以是操作數(shù)所在的片內(nèi)RAM地址。例如:MOV A,#23H 指令碼為位D7D6D5D4D3D2D1D0十六進(jìn)制碼操作碼0111010074H 23H操作數(shù)(立即數(shù))00100011381實(shí)訓(xùn)目的(1)掌握指令格式及表示方法:助記符表示和機(jī)器碼表示。(2)了解人工匯編與機(jī)器匯編的方法。(3)了解尋址方式的概念。(4)掌握常用指令的功能及應(yīng)用。實(shí)訓(xùn)3 指令的應(yīng)用2實(shí)訓(xùn)引入MOV P1,#55H MOV P1, 55H 請(qǐng)比較以上兩條指令執(zhí)行后P1口的狀況?為什么?393實(shí)訓(xùn)表格表3.1 實(shí)驗(yàn)表格題號(hào)助記符指令機(jī)器碼指令檢查數(shù)據(jù)發(fā)光二極管狀態(tài)MOV P1,#55H MOV 20H,#0F0H(20

15、H)=MOV P1,20H MOV A,#0F0HA=MOV P1,AMOV R4,#0FHR4=MOV P1,R4MOV 20H,#0AAH(20H)=MOV R0,#20HR0=MOV P1,R0MOV A,#55H A=MOV P1,A AND A,#0FHA=MOV P1,A 40MOV A,#55H A=MOV P1,AAND A,#0FHA=MOV P1,A OR A,#0F0HA=MOV P1,A CLR A A=MOV P1,ACPL AA=MOV P1,AMOV A,#01H A=MOV P1,A RL AA=MOV P1,ARL AA=MOV P1,A 414. 實(shí)訓(xùn)分析與

16、總結(jié) 在實(shí)訓(xùn)中看到以下現(xiàn)象:往P1口傳送數(shù)據(jù)的指令中,數(shù)據(jù)的來(lái)源不盡相同。數(shù)據(jù)是指令的操作對(duì)象,叫做操作數(shù)。指令必須給出操作數(shù)所在的地方,才能進(jìn)行數(shù)據(jù)傳送。尋找操作數(shù)地址的方法,稱為尋址方式。尋找操作數(shù)到底有多少種方式呢?42指令概述操作碼7 0數(shù)據(jù)或?qū)ぶ贩绞? 0雙字節(jié)指令:標(biāo)號(hào):操作碼操作數(shù)或操作數(shù)地址;注釋單字節(jié)指令:操作碼7 0三字節(jié)指令:操作碼7 0數(shù)據(jù)或?qū)ぶ贩绞? 0數(shù)據(jù)或?qū)ぶ贩绞? 0指令按字節(jié)長(zhǎng)度可以分為三種:指令格式指令的格式:例如: MOV A,R0例如:MOV A,30H例如:MOV DPTR,#2010H43一、尋址方式(找信方式)我的信在他那!找信去!注:找信是尋找信

17、的“地址”!你能說(shuō)出第二封信的“地址”嗎?44目的地#XXH操作數(shù)MOV P1, #55HMOV A, #01H#55H目的地信寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址45目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址內(nèi)部RAM或SFR區(qū)操作數(shù)XXHMOV P1, 20H20H目的地20H注:尋址是尋操作數(shù)的“地址”!直接給出地址20H直接尋址46目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址寄存器目的地操作數(shù)XXHMOV P1, A寄存器R0-R7ABDPTR你能說(shuō)出為什么叫寄存器尋址嗎?47寄存器尋址直接尋址立即數(shù)尋址

18、寄存器間接尋址變址尋址相對(duì)尋址位尋址MOV P1, R0目的地寄存器操作數(shù)3AH內(nèi)部RAM3AH65H3AHR0R1DPTR寄存器間接尋址寄存器目的地2號(hào)信在2號(hào)箱子里1號(hào)你能說(shuō)出1號(hào)箱子和2號(hào)箱子分別對(duì)應(yīng)內(nèi)存中哪一部分嗎?48尋址比較MOV P1,R0 地址是寄存器R0MOV P1,R0 地址在寄存器R0里MOV P1,20H 地址是內(nèi)存20HMOV P1,#20H 直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOV P1,R0對(duì)!49尋址比較MOV P1,R0 地址是寄存器R0MOV P1,R0 地址在寄存器R0里面MOV P1,20H 地址是內(nèi)存20HMOV P1,#20H 直接將20H這個(gè)數(shù)

19、送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOV P1,R0對(duì)!50尋址比較MOV P1,R0 地址是寄存器R0MOV P1,R0 地址在寄存器R0里面MOV P1,20HMOV P1,#20H 直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOV P1,20H對(duì)! 地址是內(nèi)存20H51尋址比較MOV P1,R0 地址是寄存器R0MOV P1,R0 地址在寄存器R0里MOV P1,20H 地址是內(nèi)存20HMOV P1,#20H 直接將20H這個(gè)數(shù)送P1口錯(cuò)!錯(cuò)!錯(cuò)!MOV P1,#20H對(duì)!52寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址MOVC A, A+DPTR目的地寄存器操作數(shù)內(nèi)部RAM3AH65

20、H3AH基址寄存器12H變址寄存器34H內(nèi)部RAM46H65HADPTRPC46H53目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址XXH位尋址操作數(shù)SJMP 54HPC+54HPC2002H2002H =2056HPC2056H54寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址20H27H21H28H21H20H10 0 0 0 0 0 0 0想一想:如果想使27H單元的第3位置1,該怎么辦呢?55單元地址2FH2EH2DH2CH2BH2AH29H28H 26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07

21、 MSB 位地址 LSB7E766E665E564E46 362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44 342C241C140C047B736B635B534B43 332B231B130B037A726A625A524A42 322A221A120A027971696159514941 312921191109017870686058504840 30282018100800位尋址地址表 例:SETB 3DH 3D 3C 3B3F 3E3A 393827H56寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址

22、位尋址SETB 3DH20H27H21H28H21H20H0 0 0 0 0 0 01057二、指令系統(tǒng)1、指令描述約定符 號(hào)含 義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帶符號(hào)的8位偏移量(-128+127)Bit位尋址區(qū)的直接尋址位(X)X地址單元中的內(nèi)容,或X作為間接尋址寄存器

23、時(shí)所指單元的內(nèi)容將 后面的內(nèi)容傳送到前面去582、MCS-51的指令2.1 數(shù)據(jù)傳送指令(29條)2.2 算術(shù)運(yùn)算指令(24條)2.3 邏輯運(yùn)算指令(24條)2.4 控制轉(zhuǎn)移指令(17條)2.5 位操作指令(17條)2.6 常用偽指令(17條)59目的地址 源地址數(shù) 據(jù)MOV ,MOV A,#20H,ARndirect1RiARndirect2Ri#dataARndirect2Ri#dataMOVRnA#datadirect2direct1ARndirect2Ri#dataRiAdirect2#data20HA2.1 數(shù)據(jù)傳送指令(29條) 8位數(shù)據(jù)傳送指令(15條) 602.1 數(shù)據(jù)傳送指令

24、(29條) 16位數(shù)據(jù)傳送指令(1條) MOV DPTR,#data16 外部數(shù)據(jù)傳送指令(4條) MOVX ,,ADPTRRiMOVXADPTRRiDPTRARiDPTRARiA611)字節(jié)交換指令(3條) 交換和查表類指令(9條) ,AXCHdirect RnRidirectARnRi2)低半字節(jié)交換指令(1條) XCHD A , Ri3)累加器A中高4位和低4位交換(1條) SWAP A 4)查表指令(2條) MOVC A , A+PCMOVC A , A+DPTR5)堆棧操作指令(2條) PUSH directPOP direct62directdirect算術(shù)運(yùn)算類指令(24條) 加

25、法指令(8條) A ,RnRi#dataADDRnRi#datadirectdirectA ,RnRi#dataADDCRnRi#data減法指令(4條) directdirectA ,RnRi#dataSUBBRnRi#dataADDC A , B (A+B+CYA )SUBB A , B (A B CYA )63BCD碼: 0011 0100BCD碼調(diào)整指令(1條) DA A 注意:DA A指令只能跟在ADD或ADDC加法指令后,不適用于減法指令。十進(jìn)制二進(jìn)制BCD碼0123456789 10 11 12 13 14 150000000100100011010001010110011110

26、00100110101011110011011110111100000001001000110100010101100111100010010001 00000001 00010001 00100001 00110001 01000001 01011 81 6+3 4十進(jìn)制0001 10000001 0110+BCD碼0010 11100011 01000010 1110-0000 0110差664助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期INC AAA+1影響PSW的P標(biāo)志1INC Rn00001rrrRnRn+1n=07, rrr=0001111INC direct00000101 d

27、irect(direct)(direct)+11INC Ri0000011i(Ri)(Ri)+1i=0,11INC DPTRDPTRDPTR+12DEC AAA-1影響PSW的P標(biāo)志1DEC Rn00011rrrRnRn-1n=07, rrr=0001111DEC direct00010101 direct(direct)(direct)+11DEC Ri0001011i(Ri)(Ri)-1i=0,11加1減1指令65乘法指令(1條) MUL A B除法指令(1條) DIV A B邏輯及移位類指令邏輯與指令(6條) 助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期ANL A,direct0101

28、0101 directAAdirect按位相與1ANL A,Rn01011rrrAARnn=07rrr=0001111ANL A,Ri0101011iAA(Ri)i=0,11ANL A,#data01010100 dataAA#data1ANL direct,Adirect(direct)(direct)A不影響PSW的P標(biāo)志1ANL direct,#data01010011 directdata(direct)(direct)#data不影響PSW的P標(biāo)志2無(wú)符號(hào)數(shù)相乘,高位存B,低位存A無(wú)符號(hào)數(shù)相除,商存A,余數(shù)存B66邏輯或指令(6條) 01000011 direct data助記符格式

29、機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期ORL A,direct01000101 directAAdirect按位相或1ORL A,Rn01001rrrAARnn=07, rrr=0001111ORL A,Ri0100011iAA(Ri)i=0,11ORL A,#datadataAA#data1ORL direct,A01000010 direct(direct)(direct)A不影響PSW的P標(biāo)志1ORL direct,#data(direct)(direct)#data不影響PSW的P標(biāo)志267邏輯異或指令(6條) 助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期XRL A,direct011

30、00101 directAA(direct)按位相異或1XRL A,Rn01101rrrAARnn=07, rrr=0001111XRL A,Ri0110011iAA (Ri)i=0,11XRL A,#data01100100 dataAA#data1XRL direct,A01100010 direct(direct)(direct)A不影響PSW的P標(biāo)志1XRL direct,#data01100011 direct data(direct)(direct)#data不影響PSW的P標(biāo)志268累加器A清0和取反指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期CLR AA00HA中內(nèi)容清0

31、,影響P標(biāo)志1CPL AA中內(nèi)容按位取反,影響P標(biāo)志1AA69CYCY RL A RR A RLC A RRC A注意:執(zhí)行帶進(jìn)位的循環(huán)移位指令之前,必須給CY置位或清零。循環(huán)移位指令返回702.4 控制轉(zhuǎn)移類指令 無(wú)條件轉(zhuǎn)移指令(4條)1) 長(zhǎng)轉(zhuǎn)移指令:LJMP AAAAH ; AAAAHPCPC=0000HPC=AAAAH0000H0001HAAA9HAAAAH0002H假設(shè)執(zhí)行該指令前,PC的值為0000H。注意:該指令可以轉(zhuǎn)移到64 KB程序存儲(chǔ)器中的任意位置。71 PC高5位(保持不變) PC低11位A10A9A800 001A7A6A5A4A3A2A1A0操作碼(第一字節(jié))操作數(shù)(

32、第二字節(jié))11位轉(zhuǎn)移地址的形成示意圖程序計(jì)數(shù)器PC2)絕對(duì)轉(zhuǎn)移指令A(yù)JMP addr11 ; PC+2PC, addr11 72PC2002H2003H0000H0001H2004H2005H2006HPCPCPC2006H2003HPC0002HPC3)相對(duì)轉(zhuǎn)移指令 例: SJMP 03H 03H03H就是當(dāng)前PC值與目的PC值相對(duì)差PC73條件轉(zhuǎn)移指令(8條)1)累加器A判0指令(2條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期JZ rel01100000rel若A=0, 則PCPC+rel, 否則程序順序執(zhí)行 2JNZ rel01110000rel若A0, 則PCPC+rel, 否則程序順序

33、執(zhí)行22)減1非零轉(zhuǎn)移指令(2條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期DJNZ Rn,rel11011rrr relRnRn-1,若Rn0,則PCPC+rel, 否則順序執(zhí)行2DJNZ direct,rel direct rel(direct)(direct)-1,若(direct)0,則PCPC+rel,否則順序執(zhí)行2743)比較轉(zhuǎn)移指令(4條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期CJNE A,#data,rel10110100 data rel若A#data, 則PCPC+rel,否則順序執(zhí)行;若 A#data,則CY=1,否則CY=02CJNE Rn,#data,rel10111rr

34、rdata rel若 Rn#data,則PCPC+rel,否則順序執(zhí)行;若Rn#data,則CY=1,否則CY=02CJNE Ri,#data,rel1011011idata rel若(Ri)#data,則PCPC+rel,否則順序執(zhí)行;若(Ri)#data,則CY=1,否則CY=02CJNE A,direct,rel10110101direct rel若A(direct),則PCPC+rel,否則順序執(zhí)行;若A(direct),則CY=1,否則CY=0275條件轉(zhuǎn)移類指令范例方案一還有什么方法實(shí)現(xiàn)循環(huán)的終止?將00H0FH這16個(gè)數(shù)順序地置入片內(nèi)RAM20H2FH單元中。 MOV R0,#2

35、0H MOV R7,#0FH CLR ALOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP SJMP $76條件轉(zhuǎn)移類指令范例方案二 MOV R0,#20H MOV R7,#0FH CLR ALOOP:MOV R0,A INC A INC R0 CJNE A,#0FH,LOOP SJMP $77條件轉(zhuǎn)移類指令范例方案三 MOV R0,#20H MOV A,#0FH MOV 30H,#00HLOOP:MOV R0,30H INC 30H INC R0 DEC A JNZ LOOP SJMP $78條件轉(zhuǎn)移類指令范例方案四 MOV R0,#20H MOV A,#0FH

36、MOV 30H,#00HLOOP:MOV R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP $79調(diào)用和返回指令(8條)1)絕對(duì)調(diào)用指令(1條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期ACALL addr11a10a9a810001addr70PC PC+2SP SP+1,(SP)PC07SP SP+1,(SP)PC815PC010 addr1122)長(zhǎng)調(diào)用指令(1條)助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期LCALL addr16addr158addr70PCPC+3SP SP+1,SPPC07SP SP+1,SPPC815PC addr162803

37、)返回指令助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期RETPC815 (SP), SP SP-1PC07 (SP), SP SP-1子程序返回指令2RETIPC815 SP, SP SP-1PC07 SP, SP SP-1中斷返回指令2助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明NOP空操作消耗1個(gè)機(jī)器周期4)空操作812.5 位操作類指令單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07 MSB 位地址 LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A62

溫馨提示

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

評(píng)論

0/150

提交評(píng)論