




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MCS-51 單片機(jī)原理及應(yīng)用(yngyng)教程 清華大學(xué)出版社劉迎春(yngchn) 主編共二百五十二頁(yè)本書(shū)主要(zhyo)內(nèi)容單片機(jī)基礎(chǔ)知識(shí)單片機(jī)的組成與結(jié)構(gòu)分析MCS-51 單片機(jī)的指令系統(tǒng)(zh ln x tn)單片機(jī)的程序設(shè)計(jì)MCS-51單片機(jī)的中斷系統(tǒng)定時(shí)/計(jì)數(shù)器單片機(jī)的串行通信及接口MCS-51單片機(jī)的系統(tǒng)擴(kuò)展接口技術(shù)MCS-51兼容機(jī)及串行總線擴(kuò)展共二百五十二頁(yè)第1章 單片機(jī)的基礎(chǔ)知識(shí) 微型計(jì)算機(jī)的系統(tǒng)組成 單片機(jī)概述 不同計(jì)數(shù)(j sh)制之間的轉(zhuǎn)換數(shù)的表示方法思考練習(xí)題共二百五十二頁(yè)1.1 微型(wixng)計(jì)算機(jī)的系統(tǒng)集成共二百五十二頁(yè)1.1 微型(wixng)計(jì)算機(jī)的
2、系統(tǒng)組成 1.1.1 主機(jī)(zhj) 主機(jī)一般由運(yùn)算器、控制器和主存儲(chǔ)器組成。 1. 運(yùn)算器運(yùn)算器是進(jìn)行算術(shù)和邏輯運(yùn)算的部件,它由完成加法運(yùn)算的加法器、存放操作數(shù)和運(yùn)算結(jié)果的寄存器和累加器等組成。 2. 控制器它是整個(gè)計(jì)算機(jī)硬件系統(tǒng)的指揮中心,根據(jù)不同的指令產(chǎn)生不同的動(dòng)作,指揮整個(gè)機(jī)器有條不紊地自動(dòng)地進(jìn)行工作。 3. 主存儲(chǔ)器主存儲(chǔ)器又稱為內(nèi)存儲(chǔ)器,它由大量的存儲(chǔ)單元組成,用以存儲(chǔ)大量的數(shù)據(jù)及程序。 共二百五十二頁(yè) 1.1.2 外部設(shè)備(wi b sh bi)1. 輸入(shr)設(shè)備目前常用的有鍵盤(pán)、軟驅(qū)、磁帶機(jī)、光驅(qū)等 2. 輸出設(shè)備常用的有顯示器、打印機(jī)、繪圖儀等 3.外存儲(chǔ)器 常用的外存
3、有磁帶、磁盤(pán)、光盤(pán),其中磁盤(pán)又可分為硬盤(pán)及軟盤(pán)。 共二百五十二頁(yè)1.2 單片機(jī)概述(i sh)1.2.1 單片機(jī)的發(fā)展(fzhn)概況第一階段(19711976) 第二階段(19761979) 第三階段(19791982) 第四階段(19821990) 第五階段(1990至今) 共二百五十二頁(yè)1.2.2 單片機(jī)的應(yīng)用(yngyng)1. 在工業(yè)測(cè)控中的應(yīng)用2. 在智能(zh nn)產(chǎn)品中的應(yīng)用3. 在計(jì)算機(jī)網(wǎng)絡(luò)與通信技術(shù)中的應(yīng)用1.2.3 單片機(jī)的發(fā)展趨勢(shì)共二百五十二頁(yè)1.3 不同(b tn)計(jì)數(shù)制之間的轉(zhuǎn)換1.3.1 十進(jìn)制數(shù)一個(gè)十進(jìn)制數(shù),它的數(shù)值是由數(shù)碼0,1,2,8,9來(lái)表示(biosh
4、)的。數(shù)碼所處的位置不同,代表數(shù)的大小也不同。 例如:53478=5104+3103+4102+7101+8100,對(duì)應(yīng)于:共二百五十二頁(yè)1.3.2 二進(jìn)制數(shù)二進(jìn)制是按“逢二進(jìn)一”的原則進(jìn)行計(jì)數(shù)的。二進(jìn)制數(shù)的基為“2”,即其使用的數(shù)碼(shm)為0、1,共兩個(gè)。二進(jìn)制數(shù)的權(quán)是以2為底的冪。 例如(lr):10110100=127+026+125+124+023+122+021+020,對(duì)應(yīng)于: 其各位的權(quán)為1,2,4,8,即以2為底的0次冪、1次冪、2次冪等。(10110100)2127+026+125+124+023+122+021+020=180共二百五十二頁(yè)1.3.3 十六進(jìn)制(sh l
5、i jn zh)數(shù)十六進(jìn)制數(shù)的基為16,即基數(shù)碼共有l(wèi)6個(gè):0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)。其中A,B,C,D,E,F(xiàn)分別(fnbi)代表值為十進(jìn)制數(shù)中的10,11,12,13,14,15。十六進(jìn)制的權(quán)為以16為底的冪。 例如:4F8E=4163+F162+8161+E160=20366,對(duì)應(yīng)于:共二百五十二頁(yè)常用(chn yn)計(jì)數(shù)制表示數(shù)的方法比較 十進(jìn)制二進(jìn)制十六進(jìn)制0 00 1 11 2 102 3 113 4 1004 5 1015 6 1106 7 1117 8 10008 9 10019 10 1010A 11 1011B 12 1100C 13
6、1101D 14 1110E 15 1111F 16 1000010 共二百五十二頁(yè)1.3.4 不同(b tn)進(jìn)制數(shù)之間的轉(zhuǎn)換1. 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法(fngf)就是用2去除該十進(jìn)制數(shù),得商和余數(shù),此余數(shù)為二進(jìn)制代碼的最小有效位(LSB)或最低位的值;再用2除該商數(shù),又可得商數(shù)和余數(shù),則此余數(shù)為L(zhǎng)SB左鄰的二進(jìn)制代碼(次低位)。依此類推,從低位到高位逐次進(jìn)行,直到商是0為止,就可得到該十進(jìn)制數(shù)的二進(jìn)制代碼。 除二取余法 共二百五十二頁(yè)1.3.4 不同(b tn)進(jìn)制數(shù)之間的轉(zhuǎn)換例如:將(67)10轉(zhuǎn)換成二進(jìn)制數(shù),過(guò)程(guchng)如下:即:(67)10=(1000011)2。共二
7、百五十二頁(yè)1.3.4 不同(b tn)進(jìn)制數(shù)之間的轉(zhuǎn)換1. 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法(fngf)將已知十進(jìn)制的小數(shù)乘以2之后,可能有進(jìn)位,使整數(shù)位為1(當(dāng)該小數(shù)大于0.5時(shí)),也可能沒(méi)有進(jìn)位,其整數(shù)位仍為零。該整數(shù)位的值為二進(jìn)制小數(shù)的最高位。再將乘積的小數(shù)部分乘以2,所得整數(shù)位的值為二進(jìn)制小數(shù)的次高位。依此類推,直到滿足精度要求或乘2后的小數(shù)部分為0為止。 乘二取整法 共二百五十二頁(yè)例如(lr):將(0.625)10轉(zhuǎn)換成二進(jìn)制數(shù),其過(guò)程如下:即:(0.625)10=(0.101)2 共二百五十二頁(yè)1.3.4 不同(b tn)進(jìn)制數(shù)之間的轉(zhuǎn)換2. 二進(jìn)制數(shù)轉(zhuǎn)換(zhunhun)為十進(jìn)制數(shù)的
8、方法將二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)時(shí),只要將二進(jìn)制數(shù)各位的權(quán)乘以各位的數(shù)碼(0或1)再相加即可。例如:將(1101.1001)2制轉(zhuǎn)換成十進(jìn)制數(shù):(1101.1001)2123+122+021+120+12-1+02-2+02-3+12-48+4+0+1+0.5+0+0+0.0625=(13.5625)10共二百五十二頁(yè)1.3.4 不同(b tn)進(jìn)制數(shù)之間的轉(zhuǎn)換3. 二進(jìn)制與十六進(jìn)制(sh li jn zh)數(shù)之間的轉(zhuǎn)換方法二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)例如:把(101101101.1100101)2轉(zhuǎn)換成十六進(jìn)制數(shù)。即:(101101101.1100101)2=(16D.CA)16。共二百五十二頁(yè)1.
9、3.4 不同(b tn)進(jìn)制數(shù)之間的轉(zhuǎn)換2)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)將十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)時(shí),只要將每1位十六進(jìn)制數(shù)用4位相應(yīng)的二進(jìn)制數(shù)表示即可完成轉(zhuǎn)換(zhunhun)。例如:將(ECA16)16轉(zhuǎn)換成二進(jìn)制數(shù)。即:(ECA16)16=(11101100101000010110)2。共二百五十二頁(yè)1.3.5 二進(jìn)制數(shù)的算術(shù)(sunsh)運(yùn)算規(guī)則 1. 二進(jìn)制加法(jif)基本規(guī)則0+0=00+1=1+0=11+1=0向鄰近高位有進(jìn)位1+1+1=1向鄰近高位有進(jìn)位2. 二進(jìn)制減法基本規(guī)則0-0=01-1=01-0=10-1=1向鄰近高位有借位共二百五十二頁(yè)3. 二進(jìn)制乘法基本(jbn)規(guī)則
10、00=001=10=011=14. 二進(jìn)制除法(chf)基本規(guī)則1/1=10/1=0共二百五十二頁(yè)1. 邏輯與運(yùn)算(yn sun)基本規(guī)則00=010=01=011=12. 邏輯或運(yùn)算基本(jbn)規(guī)則00=010=01=111=11.3.6 邏輯運(yùn)算共二百五十二頁(yè)3. 邏輯非運(yùn)算(yn sun)基本規(guī)則/0=1/1=04. 邏輯異或運(yùn)算(yn sun)基本規(guī)則00=11=010=01=1共二百五十二頁(yè)1.4.1 真值與機(jī)器(j q)數(shù)單片機(jī)用來(lái)表示(biosh)數(shù)的形式稱為機(jī)器數(shù),也稱為機(jī)器碼。而把對(duì)應(yīng)于該機(jī)器數(shù)的算術(shù)值稱為真值。 設(shè): N1=+1010101 N2=-1010101這兩個(gè)數(shù)
11、在機(jī)器中表示為:N1:01010101N2:110101011.4 數(shù)的表示方法共二百五十二頁(yè)在計(jì)算機(jī)中還有一種數(shù)的表示方法,即機(jī)器(j q)中的全部有效位均用來(lái)表示數(shù)的大小,此時(shí)無(wú)符號(hào)位,這種表示方法稱為無(wú)符號(hào)數(shù)的表示方法。 共二百五十二頁(yè)1.4.2 原碼(yun m)、反碼、補(bǔ)碼1. 原碼(yun m)表示法原碼表示法是最簡(jiǎn)單的一種機(jī)器數(shù)表示法,只要把真值的符號(hào)部分用0或1表示即可。例如:真值為+34與-34的原碼形式為:+34原=00100010-34原=101000100的原碼有兩種形式:+0原=00000000-0原=100000001.4 數(shù)的表示方法8位二進(jìn)制數(shù)原碼的表示范圍為:
12、1111111101111111,對(duì)應(yīng)于-127+127。 共二百五十二頁(yè)2. 反碼(fn m)表示法反碼是二進(jìn)制數(shù)的另一種表示形式,正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼是將其原碼除符號(hào)位外按位求反。即原來(lái)為1變?yōu)?,原來(lái)為0變?yōu)?。例如:+34反=+34原=00100010-34原=10100010,-34反=110111010的反碼也有兩種形式:+0反=00000000-0反=111111118位二進(jìn)制數(shù)反碼的表示范圍(fnwi)為:1000000001111111,對(duì)應(yīng)于-127+127。 1.4 數(shù)的表示方法共二百五十二頁(yè)3. 補(bǔ)碼(b m)表示法1.4 數(shù)的表示(biosh)方法正數(shù)的補(bǔ)
13、碼表示方法與原碼相同,負(fù)數(shù)的補(bǔ)碼表示方法為它的反碼加1。例如:-21原=10010101-21反=11101010-21補(bǔ)=111010110的補(bǔ)碼只有一種表示方法,即+0補(bǔ)=-0補(bǔ)=00000000。8位二進(jìn)制數(shù)的補(bǔ)碼所能表示的范圍為1000000101111111,對(duì)應(yīng)于-128+127。共二百五十二頁(yè)1.4.3 BCD碼十進(jìn)制8421BCD碼二進(jìn)制0 000000001 000100012 001000103 001100114 010001005 010101016 011001107 011101118 100010009 1001100110 0001 0000101011 000
14、1 0001101112 0001 0010110013 0001 0011110114 0001 0100111015 0001 01011111共二百五十二頁(yè)1.4.4 ASCII碼ASCII碼是一種8位代碼,最高位一般用于奇偶校驗(yàn),用其余(qy)的7位代碼來(lái)對(duì)128個(gè)字符編碼,其中32個(gè)是控制字符,96個(gè)是圖形字符。共二百五十二頁(yè)1.5 思考(sko)練習(xí)題(1)微型計(jì)算機(jī)由哪幾部分組成?(2)什么(shn me)是單片機(jī)?它與一般微型計(jì)算機(jī)在結(jié)構(gòu)上有什么(shn me)區(qū)別?(3)單片機(jī)主要應(yīng)用在哪些方面?(4)將下面的一組十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù):56742319896814276.8
15、70.3759.32583.625134.0625(5)將下面的二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)和十六進(jìn)制數(shù):101100111010010111101001100111101000010111000101111011101000110011011.11101.01101(6)原碼已經(jīng)在下面列出,試寫(xiě)出各數(shù)的反碼與補(bǔ)碼:1000110110101100111010111000100111111111011000010111000111111001共二百五十二頁(yè)第2章 單片機(jī)的組成與結(jié)構(gòu)(jigu)分析 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu) CPU的結(jié)構(gòu)和功能存儲(chǔ)器的組織結(jié)構(gòu)MCS-51單片機(jī)的并行輸入輸出端口M
16、CS-51 單片機(jī)的外部(wib)引腳及功能單片機(jī)指令時(shí)序思考練習(xí)題共二百五十二頁(yè)2.1 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu) 共二百五十二頁(yè)2.1 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu) 其基本特性如下: 8位CPU,含片內(nèi)振蕩器;4KB的程序存儲(chǔ)器ROM;128B的數(shù)據(jù)存儲(chǔ)器RAM;64KB的外部程序存儲(chǔ)器尋址能力(nngl);64KB的外部數(shù)據(jù)存儲(chǔ)器尋址能力;32根輸入輸出(I/O)線;2個(gè)16位定時(shí)/計(jì)數(shù)器;1個(gè)全雙工異步串行口;21個(gè)特殊功能寄存器;5個(gè)中斷源,2個(gè)優(yōu)先級(jí);具有位尋址功能。共二百五十二頁(yè)2.2 CPU的結(jié)構(gòu)(jigu)和功能 2.2.1 運(yùn)算器8051單片機(jī)的運(yùn)算器由算術(shù)/邏輯運(yùn)算單元
17、(dnyun)ALU、累加器A、寄存器B、暫存器1、暫存器2以及程序狀態(tài)字寄存器PSW組成。 圖2.2 PSW寄存器各位的標(biāo)志符號(hào)共二百五十二頁(yè)表2.1 寄存器PSW各位的功能、標(biāo)志符號(hào)與相應(yīng)(xingyng)的位地址功 能標(biāo)志符號(hào)位地址進(jìn)位標(biāo)志(又是C寄存器)CYPSW.7輔助進(jìn)位標(biāo)志ACPSW.6用戶標(biāo)志FOPSW.5工作寄存器組選擇RS1PSW.4工作寄存器組選擇RS0PSW.3溢出標(biāo)志OVPSW.2保留PSW.1奇偶標(biāo)志PPSW.0共二百五十二頁(yè)2.2.2 控制器2.3 存儲(chǔ)器的組織(zzh)結(jié)構(gòu)存儲(chǔ)(cn ch)器的功能是存儲(chǔ)(cn ch)信息(即程序與數(shù)據(jù))。存儲(chǔ)器是組成計(jì)算機(jī)的主
18、要部件,目前所使用的存儲(chǔ)器以半導(dǎo)體存儲(chǔ)器為主。從功能上來(lái)劃分,半導(dǎo)體存儲(chǔ)器可分為兩大類:即只讀存儲(chǔ)器(ROM),和隨機(jī)存儲(chǔ)器(RAM)。8051單片機(jī)的控制器由指令寄存器、指令譯碼器、堆棧指針SP、程序計(jì)數(shù)器PC、數(shù)據(jù)指針DPTR、RAM地址寄存器以及16位地址緩沖器等組成。共二百五十二頁(yè)2.3.1 MCS-51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)(jigu)圖2.3 8051存儲(chǔ)器配置圖共二百五十二頁(yè)2.3.2 程序(chngx)存儲(chǔ)器程序是控制計(jì)算機(jī)運(yùn)行的一系列命令。計(jì)算機(jī)能夠識(shí)別(shbi)并執(zhí)行的命令是由代碼“0”和“1”組成的一組機(jī)器指令。 2.3.3 數(shù)據(jù)存儲(chǔ)器單片機(jī)的數(shù)據(jù)存儲(chǔ)器由可讀可寫(xiě)的存儲(chǔ)器R
19、AM組成,最多可擴(kuò)展到64KB,用于存儲(chǔ)數(shù)據(jù)。 2.3.4 MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器由地址00HFFH共有256個(gè)字節(jié)的地址空間組成,這256個(gè)字節(jié)的地址空間被分為兩部分,其中內(nèi)部數(shù)據(jù)RAM地址為00H7FH(即0127)。 共二百五十二頁(yè)圖2.4 內(nèi)部(nib)數(shù)據(jù)存儲(chǔ)器地址空間共二百五十二頁(yè)1. 內(nèi)部(nib)數(shù)據(jù)RAM單元內(nèi)部數(shù)據(jù)RAM分為工作(gngzu)寄存器區(qū)、位尋址區(qū)、通用RAM區(qū)三個(gè)部分。 圖2.5 RAM位地址(低128位在00H7FH)共二百五十二頁(yè)(a)系統(tǒng)(xtng)復(fù)位后,未改變SP初值時(shí)的堆棧操作(設(shè)(A)=0ABH)共二
20、百五十二頁(yè)(b)系統(tǒng)復(fù)位后,改變SP初值為60H時(shí)的堆棧操作(cozu)圖2.6 堆棧操作示例共二百五十二頁(yè)2. 特殊(tsh)功能寄存器特殊功能寄存器SFR的地址(dzh)空間是80HFFH。 表2.3 特殊功能寄存器的名稱、符號(hào)與地址特殊功能寄存器名稱符號(hào)位地址與位名稱字節(jié)地址D7D6D5D4D3D2D1D0B寄存器BF7F6F5F4F3F2F1F0F0H累加器AE7E6E5E4E3E2E1E0E0H程序狀態(tài)字PSWD7D6D5D4D3D2D1D0D0HCACF0RS1RS0OVP中斷優(yōu)先級(jí)控制IPBFBEBDBCBBBAB9B8B8HPSPT1PX1PT0PX0D7D6D5D4D3D2D
21、1D0P3口P3B7B6B5B4B3B2B1B0B0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0共二百五十二頁(yè)2. 特殊(tsh)功能寄存器中斷允許控制IEAFAEADACABAAA9A8A8HEAESET1EX1ET0EX0P2口P2A7A6A5A4A3A2A1A0A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0串行數(shù)據(jù)緩沖器SBUF99H串行控制SCON9F9E9D9C9B9A999898HSM0SM1SM2RENTB8RB8TIRIP1口P1979695949392919090HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0定
22、時(shí)/計(jì)數(shù)器1高字節(jié)TH18DH定時(shí)/計(jì)數(shù)器0高字節(jié)TH08CH共二百五十二頁(yè)2. 特殊(tsh)功能寄存器定時(shí)/計(jì)數(shù)器1低字節(jié)TL18BH定時(shí)/計(jì)數(shù)器0低字節(jié)TL08AH定時(shí)/計(jì)數(shù)方式控制TMODGATEC/TM1M0GATEC/TM1M089H共二百五十二頁(yè)2. 特殊(tsh)功能寄存器特殊功能寄存器名稱符號(hào)位地址與位名稱字節(jié)地址D7D6D5D4D3D2D1D0定時(shí)器控制寄存器TCON8F8E8D8C8B8A898888HTF1TR1TF0TR0IE1IT1IE0IT0電源控制PCONSMOD87H數(shù)據(jù)指針高字節(jié)DPH83H數(shù)據(jù)指針低字節(jié)DPL82H堆棧指針SP81HP0口P08786858
23、48382818080HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0共二百五十二頁(yè)2.4 MCS-51單片機(jī)的并行(bngxng)輸入輸出端口2.4.1 P0口結(jié)構(gòu)(jigu)1. P0用作通用I/O口2. P0用作地址/數(shù)據(jù)總線分時(shí)復(fù)用方式共二百五十二頁(yè)2.4.2 P2口結(jié)構(gòu)(jigu)1. P2口用作地址總線2. P2口用作通用(tngyng)I/O口共二百五十二頁(yè)2.4.3 P3口結(jié)構(gòu)(jigu)2.4.4 P1口結(jié)構(gòu)(jigu)共二百五十二頁(yè)2.5 MCS-51單片機(jī)的外部(wib)引腳及功能2.5.1 電源(dinyun)引腳(b)雙列直插式封裝(a)方形封裝共二
24、百五十二頁(yè)2.5.2 外接晶振或外部時(shí)鐘信號(hào)(xnho)輸入端 (a)內(nèi)部(nib)振蕩器方式 (b)外部振蕩器方式圖2.12 8051單片機(jī)的振蕩器方式表2.4 按不同工藝制造的單片機(jī)芯片外接振蕩器時(shí)的接法芯片類型接 法XTAL1XTAL2CHMOS接外部振蕩器脈沖輸入端(帶上拉電阻)懸浮HMOS接地接外部振蕩器脈沖輸入端(帶上拉電阻)共二百五十二頁(yè)2.5.3 輸入輸出引腳P0.0P0.7:通道0是一個(gè)8位漏極開(kāi)路的雙向輸入輸出通道。在外接存儲(chǔ)器或者擴(kuò)展I/O接口時(shí),P0口作為復(fù)用的低8位地址總線和雙向數(shù)據(jù)總線。在不擴(kuò)展存儲(chǔ)器或者I/O接口時(shí),作為準(zhǔn)雙向輸入輸出接口。P1.0P1.7:只有一
25、種功能(gngnng),即準(zhǔn)雙向I/O口。P2.0P2.7:可作為準(zhǔn)雙向I/O口使用;但在接有片外存儲(chǔ)器或擴(kuò)展I/O接口范圍超過(guò)256B時(shí),則該口一般只能作為高8位地址總線使用。P3.0P3.7:該口除了作為準(zhǔn)雙向口外,還具有第二功能。 共二百五十二頁(yè)2.5.4 控制線 1. ALE/2. 3. /VPP 4. RST(a)上電復(fù)位(f wi) (b)電平開(kāi)關(guān)復(fù)位圖2.13 復(fù)位電路共二百五十二頁(yè)2.6 單片機(jī)指令(zhlng)時(shí)序共二百五十二頁(yè)2.7 思考(sko)練習(xí)題(1)MCS-51單片機(jī)包含哪些主要邏輯功能部件?(2)程序狀態(tài)字寄存器PSW包含哪幾個(gè)標(biāo)志位?各位的含義是什么?各有何作
26、用?(3)什么叫單片機(jī)?(4)MCS-51單片機(jī)的存儲(chǔ)結(jié)構(gòu)有何特點(diǎn)?(5)單片機(jī)的端有何作用?在8031組成的單片機(jī)應(yīng)用系統(tǒng)中,其端怎樣處理?為什么?(6)單片機(jī)內(nèi)部RAM分為哪幾個(gè)部分?各有何作用?(7)MCS-51單片機(jī)的堆棧SP在操作中遵循什么原則?在開(kāi)機(jī)復(fù)位時(shí),其初值是多少?是否可以通過(guò)程序重新設(shè)置(shzh)?(8)怎樣確定和改變單片機(jī)當(dāng)前的工作寄存器組?(9)簡(jiǎn)要說(shuō)明單片機(jī)的位地址分配。(10)試畫(huà)出常用的單片機(jī)復(fù)位電路,并說(shuō)明復(fù)位后各個(gè)寄存器的狀態(tài)。共二百五十二頁(yè)第3章 MCS-51單片機(jī)的指令系統(tǒng)(zh ln x tn) 匯編語(yǔ)言的指令格式(g shi)及符號(hào)簡(jiǎn)介 尋址方式 數(shù)
27、據(jù)傳送類指令算術(shù)運(yùn)算類指令邏輯運(yùn)算類指令位操作類指令控制轉(zhuǎn)移類指令思考練習(xí)題 共二百五十二頁(yè)3.1 匯編語(yǔ)言的指令格式(g shi)及符號(hào)簡(jiǎn)介3.1.1 指令(zhlng)格式標(biāo)號(hào): 操作碼助記符 第一操作數(shù) ,第二操作數(shù) ,第三操作數(shù) ;注釋例如:LOOP:MOV A, #50H;(A)50H DECR0;(R0)(R0)-1 DJNZ R0, LOOP;(R0)-10,則程序轉(zhuǎn)移到LOOP地址;否則順序執(zhí)行 END;結(jié)束3.1.2 本章中符號(hào)的定義共二百五十二頁(yè)3.2 尋 址 方 式 MCS-51單片機(jī)有7種尋址方式(fngsh),見(jiàn)表3.1。 表3.1 7種尋址方式(fngsh)的比較序
28、號(hào)尋址方式利用的寄存器和存儲(chǔ)空間1立即尋址程序存儲(chǔ)器ROM2直接尋址內(nèi)部RAM、特殊功能寄存器SFR3寄存器尋址寄存器R0R7、A、B、DPTR和C(布爾累加器)4寄存器間接尋址內(nèi)部RAM(R0、R1、SP)、外部RAM(R0、R1、DPTR)5變址尋址程序存儲(chǔ)器ROM(A+DPTR、A+PC)6相對(duì)尋址程序存儲(chǔ)器ROM(PC+偏移量)7位尋址內(nèi)部RAM的20H2FH單元和部分SFR共二百五十二頁(yè)3.2.1 立即(lj)尋址例如:MOV A, #23H ; (A)23H,即累加器A的內(nèi)容(nirng)被替換為立即數(shù)23H。圖3.1 MOV A,#23H的執(zhí)行示意圖該指令的功能是將8位的立即數(shù)2
29、3H傳送到累加器A中。如圖3.1所示。其中,目的操作數(shù)采用寄存器尋址,源操作數(shù)采用立即尋址。共二百五十二頁(yè)3.2.2 直接(zhji)尋址直接尋址是指在指令中包含了操作數(shù)的地址,該地址直接給出了參加運(yùn)算或傳送的單元或位。直接尋址方式可訪問(wèn)三種地址空間:特殊功能寄存器SFR(該空間只能采用直接尋址)。內(nèi)部數(shù)據(jù)RAM的低128個(gè)字節(jié)單元(該空間還可以(ky)采用寄存器間接尋址)。221個(gè)位地址空間。例如:MOV A, 40H ;把40H單元的內(nèi)容送到累加器中,即(A)(40H)。 圖3.2 MOV A,40H的執(zhí)行示意圖 共二百五十二頁(yè)3.2.3 寄存器尋址 寄存器尋址是指定(zhdng)某一可尋
30、址的寄存器的內(nèi)容為操作數(shù)。 例如:MOV A, R0 ;(A)(R0)該指令的功能是將R0中的數(shù)據(jù)(shj)傳送到累加器A中。源操作數(shù)與目的操作數(shù)都采用了寄存器尋址。 在MCS-51單片機(jī)中,能夠用來(lái)間接尋址的寄存器有:用戶所選定的工作寄存器組的R0、R1,堆棧指針SP和16位的數(shù)據(jù)指針DPTR。 內(nèi)部數(shù)據(jù)RAM的寄存器間接尋址采用寄存器R0、R1;外部數(shù)據(jù)RAM的寄存器間接尋址有兩種形式:一是采用R0、R1作間址寄存器,這時(shí)R0或R1提供低8位地址,而高8位地址則由P2端口提供;二是采用16位的DPTR作間址寄存器。 3.2.4 寄存器間接尋址共二百五十二頁(yè)例如:設(shè)R0的內(nèi)容為60H,且(6
31、0H)=10H,即60H地址(dzh)單元中的內(nèi)容為10H,則語(yǔ)句MOV A, R0的執(zhí)行過(guò)程如圖3.3所示。執(zhí)行后,(A)=10H,即累加器A的內(nèi)容成為10H。圖3.3 MOV A,R0的執(zhí)行(zhxng)示意圖又如:MOVX A, R0;(A)(R0),用R0間接尋址的單元中的內(nèi)容替換A的;內(nèi)容。MOVX A, DPTR;(A)(DPTR),用DPTR間接尋址的單元中的內(nèi)容替換;A的內(nèi)容。共二百五十二頁(yè)3.2.5 變址尋址這種尋址方式是以數(shù)據(jù)指針DPTR或程序計(jì)數(shù)器PC作為基址寄存器,以累加器A作為偏移量寄存器,將一個(gè)基址寄存器的內(nèi)容(nirng)與偏移量寄存器的內(nèi)容(nirng)之和作為
32、操作數(shù)地址。 例如:MOVC A, A+DPTR設(shè)(A)=10H,(DPTR)=1000H,程序存儲(chǔ)器的(1010H)=45H,則上面程序語(yǔ)句的功能是將A的內(nèi)容與DPTR的內(nèi)容相加形成操作數(shù)地址(1010H),把該地址中的數(shù)據(jù)傳送(chun sn)到累加器A。即(A)(A)+(DPTR)。結(jié)果:(A)=45H。 圖3.4 MOVC A,A+DPTR的執(zhí)行示意圖共二百五十二頁(yè) 相對(duì)尋址是把指令中給定(i dn)的地址偏移量rel與程序計(jì)數(shù)器PC的當(dāng)前值(讀出該雙字節(jié)或三字節(jié)的跳轉(zhuǎn)指令后,PC指向的下條指令的地址)相加,得到真正的程序轉(zhuǎn)移地址。 例如:JC 80H若C=0,則PC值不變,若C=1,
33、則以當(dāng)前PC值為基地址,加上80H得到新的PC值。設(shè)該轉(zhuǎn)移指令存放在1005H單元,取出操作碼后PC指向1006H單元,取出偏移量后PC指向1007H單元,所以(suy)計(jì)算偏移量時(shí)PC當(dāng)前地址為1007H,已經(jīng)為轉(zhuǎn)移指令首地址加2,這里的偏移量以補(bǔ)碼給出,所以80H代表著-80H,補(bǔ)碼運(yùn)算后,就形成跳轉(zhuǎn)地址0F87H。其過(guò)程如圖3.5所示。 3.2.6 相對(duì)尋址共二百五十二頁(yè)3.2.6 相對(duì)(xingdu)尋址圖3.5 JC 80H的執(zhí)行(zhxng)示意圖共二百五十二頁(yè)3.2.7 位尋址MCS-51單片機(jī)可對(duì)片內(nèi)RAM的兩個(gè)區(qū)域進(jìn)行位尋址:一個(gè)是20H2FH單元的128位,另一個(gè)是特殊功能
34、寄存器的93位。在尋址時(shí),同一個(gè)位地址可以有多種標(biāo)識(shí)方式,讀者可參看后面3.6節(jié)“位操作指令(zhlng)”的相關(guān)內(nèi)容。共二百五十二頁(yè)3.3.1 通用(tngyng)傳送指令格式:MOV 目的操作數(shù),源操作數(shù)功能:把第二操作數(shù)指定(zhdng)的字節(jié)內(nèi)容傳送到第一操作數(shù)指定(zhdng)的單元中。不影響源操作數(shù)內(nèi)容,不影響別的寄存器和標(biāo)志。 1. 以累加器A為目的操作數(shù)的傳送類指令3.3 數(shù)據(jù)傳送類指令指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVA,direct;(A)(direct)直接尋址MOVA,Ri;(A)(Ri)寄存器間接尋址MOVA,Rn;(A)(Rn
35、)寄存器尋址MOVA,#data;(A)data立即尋址共二百五十二頁(yè)例1 若(50H)=10H,則執(zhí)行(zhxng)指令MOV A, 50H之后,(A)=10H。例2 若(R0)=20H,(20H)=39H,則執(zhí)行指令MOV A, R0后,(A)=39H。例3 若(R5)=55H,則執(zhí)行指令MOV A, R5后,(A)=55H。共二百五十二頁(yè)2. 以Rn為目的操作數(shù)的傳送(chun sn)類指令例1 若(A)=20H,則執(zhí)行(zhxng)指令MOV R3, A后,(R3)=20H。例2 若(30H)=01H,則執(zhí)行指令MOV R7, 30H后,(R7)=01H。指令助記符及功能說(shuō)明如下:目的
36、操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVRn,A;(Rn)(A)寄存器尋址MOVRn,direct;(Rn)(direct)直接尋址MOVRn,#data;(Rn)data立即尋址共二百五十二頁(yè)例1 若(30H)=20H,(R0)=30H,則執(zhí)行指令MOV 90H, R0的結(jié)果(ji gu)為(90H)=20H。例2 若例1中的條件不變,而執(zhí)行指令MOV P1, R0,則(P1)=20H。 3. 以直接地址(dzh)directX為目的操作數(shù)的傳送類指令指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVdirectX,A;(directX)(A)寄存器尋址MOVdi
37、rectX,Rn;(directX)(Rn)寄存器尋址MOVdirectX,directY;(directX)(directY)直接尋址MOVdirectX,Ri;(directX)(Ri)寄存器間接尋址MOVdirectX,#data;(directX)data立即尋址共二百五十二頁(yè)例1 若(R0)=50H,(50H)=20H,(A)=10H,則執(zhí)行指令(zhlng)“MOV R0, A”后,50H單元的內(nèi)容由原來(lái)的20H變?yōu)?0H。4. 以寄存器間接(jin ji)地址Ri為目的操作數(shù)的傳送類指令指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVRi,A;(Ri)(
38、A)寄存器尋址MOVRi,direct;(Ri)(direct)直接尋址MOVRi,#data;(Ri)data立即尋址共二百五十二頁(yè)5. 16位目標(biāo)(mbio)地址傳送指令這條指令(zhlng)的功能是:把16位立即數(shù)送入DPTR中。而16位的數(shù)據(jù)指針DPTR由DPH與DPL組成,該指令執(zhí)行后,16位立即數(shù)的高8位送入DPH中,低8位送入DPL中。該指令的執(zhí)行,不影響程序狀態(tài)寄存器PSW。指令助記符及功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVDPTR,#data16;(DPTR)data16立即尋址共二百五十二頁(yè)3.3.2 外部數(shù)據(jù)(shj)存儲(chǔ)器(或I/O口)與累加器A
39、傳送指令例1 設(shè)(P2)=20H,現(xiàn)將A中數(shù)據(jù)存儲(chǔ)(cn ch)到20FFH單元中去??捎靡韵鲁绦?qū)崿F(xiàn):MOV R1, #0FFH ;(R1)0FFHMOVX R1, A ;(20FFH)(A)也可采用下述程序?qū)崿F(xiàn):MOV DPTR, #20FFH ;(DPTR)20FFHMOVX DPTR, A ;(DPTR)(A),即(20FFH)(A)指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVXA,DPTR;(A)(DPTR)寄存器間接尋址MOVXA,Ri;(A)(Ri)寄存器間接尋址MOVXDPTR,A;(DPTR)(A)寄存器尋址MOVXRi,A;(Ri)(A)寄存器
40、尋址共二百五十二頁(yè)3.3.2 外部(wib)數(shù)據(jù)存儲(chǔ)器(或I/O口)與累加器A傳送指令例2 將外部(wib)數(shù)據(jù)存儲(chǔ)器7FF0H單元中的數(shù)據(jù)取出,存放到外部數(shù)據(jù)存儲(chǔ)器2000H單元中去。MOV DPTR, #7FF0HMOVX A, DPTRMOV DPTR, #2000HMOVX DPTR, A共二百五十二頁(yè)例1 在外部(wib)程序存儲(chǔ)器2000H單元開(kāi)始存放了數(shù)字09的共陰極數(shù)碼管的16進(jìn)制數(shù)的字形代碼3FH、06H、6FH。要求根據(jù)A中的值(09)來(lái)查找該數(shù)字所對(duì)應(yīng)的代碼以便顯示。若用PC作基址寄存器,則需要在MOVC A, A+PC指令前用一加法指令對(duì)地址進(jìn)行調(diào)整:ADD A, #d
41、ataMOVC A, A+PC3.3.3 程序(chngx)存儲(chǔ)器向累加器A傳送數(shù)據(jù)指令指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式MOVCA,A+PC;(A)(A)+(PC)+1)變址尋址MOVCA,A+DPTR;(A)(A)+(DPTR)變址尋址共二百五十二頁(yè) 1. 字節(jié)交換(jiohun)指令例1 設(shè)(R1)=30H,(30H)=45H,(A)=7FH,則執(zhí)行(zhxng)指令:XCH A, R1結(jié)果:(A)=45H,而(30H)=7FH,從而實(shí)現(xiàn)了累加器A與內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM中30H單元的數(shù)據(jù)交換。3.3.4 數(shù)據(jù)交換指令指令助記符與功能說(shuō)明如下:目的操作數(shù)源
42、操作數(shù)功能說(shuō)明源操作數(shù)尋址方式XCHA,direct(direct)直接尋址XCHA,Ri(Ri)間接尋址XCHA,Rn(Rn)寄存器尋址共二百五十二頁(yè)2. 半字節(jié)(z ji)交換指令例1 設(shè)(30H)=6FH,(R0)=30H,(A)=0F6H,則執(zhí)行(zhxng)指令:XCHD A, Ri結(jié)果:(A)=0FFH,(30H)=66H數(shù)據(jù)交換指令除了影響始終跟蹤A中數(shù)據(jù)奇偶性的P標(biāo)志外,對(duì)PSW中其他標(biāo)志位均無(wú)影響。指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式XCHDA,Ri(Ri)間接尋址共二百五十二頁(yè)3. 累加器A中高四位與低四位交換(jiohun)指令SWAP A
43、該指令(zhlng)所執(zhí)行的操作是累加器A中的高4位與低4位的內(nèi)容互換,其結(jié)果仍存放在累加器A中。例1 設(shè)(A)=0A5H(10100101B),則執(zhí)行指令:SWAP A結(jié)果:(A)=5AH(01011010B)指令SWAP交換了A中高、低半字節(jié)(30和74),結(jié)果不影響標(biāo)志寄存器PSW。3.3.5 堆棧操作指令堆棧操作指令只有2條,即:壓入(PUSH)和彈出(POP)。壓入指令:PUSH direct ;SPSP+1,(SP)(direct)彈出指令:POP direct ;(SP)(direct),SPSP-1共二百五十二頁(yè)例1PUSH A ;保護(hù)(boh)A中數(shù)據(jù) PUSH PSW ;保
44、護(hù)標(biāo)志寄存器中數(shù)據(jù) ;執(zhí)行服務(wù)程序 POP PSW ;恢復(fù)標(biāo)志寄存器中數(shù)據(jù) POP A ;恢復(fù)A中數(shù)據(jù)例2PUSH A PUSH PSW POP A POP PSW例3 PUSH DPH PUSH DPL POP DPL POP DPH共二百五十二頁(yè)3.4.1 加減運(yùn)算(yn sun)指令 1. 加法(jif)指令 這類指令所完成的操作是把源操作數(shù)(立即數(shù)、直接地址單元內(nèi)容、間接地址單元內(nèi)容、工作寄存器內(nèi)容)與累加器A的內(nèi)容相加,將結(jié)果保存在累加器A中。 3.4 算術(shù)運(yùn)算類指令指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式ADDA,#data;(A)(A)+data立即尋
45、址ADDA,direct;(A)(A)+(direct)直接尋址ADDA,Ri;(A)(A)+(Ri)寄存器間接尋址ADDA,Rn;(A)(A)+(Rn)寄存器尋址共二百五十二頁(yè)例1 執(zhí)行指令(zhlng):MOV A, #0A9HADD A, #0B8H對(duì)程序狀態(tài)寄存器的影響如圖3.6所示。運(yùn)算(yn sun)結(jié)果:(A)=61H,CY=1,AC=1,OV=1,P=1,(PSW)=0C5H共二百五十二頁(yè)例2 8位數(shù)加法(jif)程序片斷1: MOVA, #23H ADDA, #5AH運(yùn)算(yn sun)結(jié)果:(A)=7DH,CY=0,OV=0,AC=0,P=0,(PSW)=00H。 共二百五
46、十二頁(yè)例3 8位數(shù)加法程序(chngx)片斷2:MOVA, #0ABHADDA, #9AH運(yùn)算(yn sun)結(jié)果:(A)=45H,CY=1,OV=1,AC=1,P=1,(PSW)=0C5H。 共二百五十二頁(yè)帶進(jìn)位(jnwi)加法指令與前述加法指令的區(qū)別僅為考慮進(jìn)位(jnwi)位,其他與加法指令相同。2. 帶進(jìn)位加法(jif)指令指令助記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式ADDCA,#data;(A)(A)+data+(C)立即尋址ADDCA,direct;(A)(A)+(direct)+(C)直接尋址ADDCA,Ri;(A)(A)+(Ri)+(C)寄存器間接尋址AD
47、DCA,Rn;(A)(A)+(Rn)+(C)寄存器尋址共二百五十二頁(yè)例3 利用ADDC指令可以進(jìn)行多字節(jié)(z ji)的加法運(yùn)算。設(shè)有兩個(gè)16位數(shù)相加,被加數(shù)的高8位放在41H,低8位放在40H,加數(shù)的高8位放在43H,低8位放在42H,和的低8位存放在50H,高8位存放在51H,進(jìn)位位存放在52H。可編程序如下:例1 設(shè)(A)=0AAH,(R0)=55H,C=1,則執(zhí)行指令:ADDC A, R0運(yùn)算(yn sun)結(jié)果:(A)=00000000B,AC=1,CY=1,OV=1。例2 設(shè)(A)=35H,(40H)=21H,C=0,則執(zhí)行指令:ADDC A, 40H運(yùn)算結(jié)果:(A)=56H,AC=
48、0,CY=0,OV=0。這與執(zhí)行指令“ADD A, 40H”的結(jié)果是一樣的。共二百五十二頁(yè)SHJ: MOV A, 40H;(A)被加數(shù)低8位ADD A, 42H;與加數(shù)低8位相加MOV 50H, A;和的低8位存入50HMOV A, 41H;(A)被加數(shù)高8位ADDC A, 43H;被加數(shù)高8位與加數(shù)高8位以及低位來(lái)的進(jìn)位(jnwi)相加MOV 51H, A;和的高8位存入51H單元MOV A, #00H;(A)00HADDC A, #00H;(A)(A) +00H+高8位來(lái)的進(jìn)位MOV 52H, A;進(jìn)位位C內(nèi)容存入52H單元共二百五十二頁(yè)3. 帶借位(ji wi)減指令指令(zhlng)助
49、記符與功能說(shuō)明如下:目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式SUBBA,#data;(A)(A)-data-(C)立即尋址SUBBA,direct;(A)(A)-(direct)-(C)直接尋址SUBBA,Ri;(A)(A)-(Ri)-(C)寄存器間接尋址SUBBA,Rn;(A)(A)-(Rn)-(C)寄存器尋址共二百五十二頁(yè)例1 設(shè)(40H)=0BAH,(41H)=98H,試編寫(xiě)40H內(nèi)容減去41H內(nèi)容后,結(jié)果再存入40H單元(dnyun)的程序。MOVA, 40H;(A)(40H)CLRC;進(jìn)位位C清0SUBBA, 41H;(A)(A)-(41H) -(C)MOV40H, A;(40H)
50、(A)執(zhí)行以上程序后,(40H)=22H,CY=0,OV=0。如果(rgu)參與運(yùn)算的兩數(shù)為無(wú)符號(hào)數(shù),則其溢出與否與OV狀態(tài)無(wú)關(guān),而是靠CY是否有借位來(lái)判斷,OV僅僅表示帶符號(hào)數(shù)運(yùn)算時(shí)是否溢出。共二百五十二頁(yè)例2 設(shè)有兩個(gè)(lin )16位數(shù)相減,被減數(shù)的高8位放在41H,低8位放在40H,減數(shù)高8位放在43H,低8位放在42H,差的低8位存放在50H,高8位存放在51H,借位位存放在52H。 可編程序如下:SHJIAN:MOV A, 40H ;(A)被減數(shù)低8位CLR C ;C位清0SUBB A, 42H ;減去減數(shù)低8位MOV 50H, A ;差的低8位存入(cn r)50HMOV A,
51、41H ;(A)被減數(shù)高8位SUBB A, 43H ;被減數(shù)高8位減去減數(shù)高8位與借位MOV 51H, A ;差的高8位存入51H單元MOV A, #00H ;(A)00HADDC A, #00H ;(A)高8位的借位位MOV 52H, A ;借位位C內(nèi)容存入52H單元共二百五十二頁(yè)1. 乘法(chngf)指令例1 設(shè)(A)=67H(103),(B)=0ADH(173),執(zhí)行指令(zhlng):MUL AB運(yùn)算結(jié)果:乘積為459BH(17819),(A)=9BH,(B)=45H。另外:OV=1,CY=03.4.2 乘除運(yùn)算指令 MUL AB ;(A)乘積低8位,(B)乘積高8位例2 設(shè)被乘數(shù)為
52、16位無(wú)符號(hào)數(shù),低8位存放在地址為K的單元,高8位存放在地址為K+1的單元。乘數(shù)為8位無(wú)符號(hào)數(shù),存放在M單元。編程求出二者乘積,并將乘積的07位存放在R1,815位存放在R2,1623位存放在R3中。分析:16位無(wú)符號(hào)數(shù)與8位無(wú)符號(hào)數(shù)相乘的步驟示意如下:共二百五十二頁(yè)程序編制如下(rxi):MOV R0, #K ;設(shè)置被乘數(shù)地址指針MOV A, R0 ;被乘數(shù)送A中MOV B, M ;乘數(shù)送B中MUL AB ;(K)(M)MOV R1, A ;乘積的07位存入R1MOV R2, B ;暫存積的815位INC R0 ;指向被乘數(shù)高8位地址MOV A, R0 ;取被乘數(shù)高8位MOV B, M ;乘
53、數(shù)送B中MUL AB ;(K+1)(M)ADD A, R2 ;求得乘積的815位MOV R2, A ;乘積的815位存入R2MOV A, BADDC A, #00H ;求得乘積的1623位MOV R3, A ;乘積的1623位存入R3共二百五十二頁(yè)2. 除法(chf)指令例1 設(shè)(A)=9AH,(B)=23H,執(zhí)行(zhxng)指令:DIV AB則(A)=04H,(B)=0EH,OV=00H,CY=00H3.4.2 乘除運(yùn)算指令 DIV AB ;(A)商,(B)余數(shù)3.4.3 增1減1指令1. 增1指令I(lǐng)NC A ;(A)(A)+1INC direct ;(direct)(direct)+1I
54、NC Ri ;(Ri)(Ri)+1INC Rn ;(Rn)(Rn)+1INC DPTR ;(DPTR)(DPTR)+1共二百五十二頁(yè)例1 設(shè)(A)=40H,(41H)=29H,則執(zhí)行下列指令(zhlng):INC A;(A)40H+1HINC 41H;(41H)29H+1H結(jié)果:(A)=41H,(41H)=2AH例2 設(shè)(R0)=56H,片內(nèi)RAM單元(56H)=0FFH,(57H)=50H,則執(zhí)行下列指令(zhlng):INC R0;(56H)00HINC R0;(R0)57HINC R0;(57H)51H結(jié)果:(56H)=00H,(R0)=57H,(57H)=51H例3 執(zhí)行下述指令序列:
55、MOV DPTR,#2FFEH;(DPTR)2FFEHINC DPTR;(DPTR)2FFFHINC DPTR;(DPTR)3000HINC DPTR;(DPTR)3001H則(DPTR)=3001H共二百五十二頁(yè)2. 減1指令(zhlng)DEC A;(A)(A)-1DEC direct;(direct)(direct)-1DEC Ri;(Ri)(Ri)-1DEC Rn;(Rn)(Rn)-1例1 設(shè)(R0)=4FH,片內(nèi)RAM單元(4FH)=40H,(4EH)=00H,執(zhí)行指令(zhlng):DEC R0 ;(4FH)3FHDEC R0 ;(R0)4EHDEC R0 ;(4EH)0FFH結(jié)果
56、:(R0)=4EH,(4EH)=0FFH,(4FH)=3FH3.4.4 二/十進(jìn)制調(diào)整指令 DA A該指令的功能是對(duì)累加器A中的“二/十”進(jìn)制(BCD碼)加法結(jié)果進(jìn)行調(diào)整。共二百五十二頁(yè)例1 執(zhí)行下面的指令:MOVA, #86HADDA, #47H結(jié)果:(A)=0CDH,CY=0,AC=0所得結(jié)果并不是BCD碼,若接著(ji zhe)執(zhí)行以下指令:DA A則結(jié)果:(A)=33H,CY=1,AC=1共二百五十二頁(yè)1. 累加器A清0指令格式(g shi):CLR A功能:將00H送入累加器A中。3.5 邏輯運(yùn)算指令(zhlng)3.5.1 單操作數(shù)指令2. 累加器A取反指令格式:CPL A功能:將
57、累加器A中內(nèi)容取反(將A中內(nèi)容按位取反,即邏輯非運(yùn)算)后再送回累加器A中。共二百五十二頁(yè)例1 設(shè)(A)=98H,執(zhí)行指令(zhlng)CLR A ;(A)0CPL A ;(A)0FFH結(jié)果:(A)=0FFH3. 累加器A內(nèi)容循環(huán)(xnhun)左移一位指令格式:RL A功能:將累加器A中的內(nèi)容循環(huán)左移一位。即共二百五十二頁(yè)例1 設(shè)(A)=10001000,則執(zhí)行指令(zhlng)“RL A”后,結(jié)果:(A)=000100014. 累加器A內(nèi)容帶進(jìn)位(jnwi)位CY循環(huán)左移一位指令格式:RLC A功能:將累加器A中的內(nèi)容與進(jìn)位標(biāo)志位CY一起循環(huán)左移一位。即:共二百五十二頁(yè)例1 設(shè)(A)=0101
58、0101,(CY)=1。則執(zhí)行指令(zhlng)“RLC A”后,結(jié)果:(A)=10101011,(CY)=0。5. 累加器A內(nèi)容循環(huán)(xnhun)右移一位指令格式:RR A功能:將累加器A中的內(nèi)容循環(huán)右移一位。即:共二百五十二頁(yè)例1 設(shè)(A)=00010001,則執(zhí)行(zhxng)指令“RR A”后,結(jié)果:(A)=100010006. 累加器A內(nèi)容帶進(jìn)位位CY循環(huán)(xnhun)右移一位指令格式:RRC A功能:將累加器A中的內(nèi)容與進(jìn)位標(biāo)志位CY一起循環(huán)右移一位。即:共二百五十二頁(yè)例1 設(shè)(A)=10101011,(CY)=0。則執(zhí)行指令(zhlng)“RRC A”后,結(jié)果:(A)=01010
59、101,(CY)=1。3.5.2 雙操作數(shù)指令(zhlng)1. 邏輯與指令邏輯與的規(guī)則定義為:(其中表示邏輯與)00=001=10=011=1共二百五十二頁(yè)例1 設(shè)(A)=0C3H,(R3)=0ADH,執(zhí)行(zhxng)指令“ANL A, R3”。結(jié)果:(A)=81H(10000001B)。指令執(zhí)行過(guò)程如下:2. 邏輯(lu j)或指令邏輯或的規(guī)則定義為:(其中表示邏輯或)00=000=10=111=1共二百五十二頁(yè)例1 設(shè)(A)=0C3H,(R3)=0ADH,執(zhí)行指令(zhlng)“ORL A, R3”。結(jié)果:(A)=0EFH(11101111B)。指令執(zhí)行過(guò)程如下:3. 邏輯(lu j)
60、異或指令邏輯異或的規(guī)則定義為(其中表示邏輯異或):00=11=010=01=1共二百五十二頁(yè)例1 設(shè)(A)=0C3H,(R3)=0ADH,執(zhí)行指令“XRL A, R3”。結(jié)果(ji gu):(A)=6EH(01101110B)。指令執(zhí)行過(guò)程如下:例2 試把分別保存(bocn)在30H、31H單元中用ASCII碼表示的兩位數(shù),轉(zhuǎn)換成兩位BCD碼,并以壓縮BCD碼形式存入30H單元中。程序如下:ANL 30H, #0FH;30H單元的ASCII碼轉(zhuǎn)換成BCD碼MOV A, 31H;取31H單元的ASCII碼ANL A, #0FH;31H單元的ASCII碼變成BCD碼RL ARL ARL ARL A
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)藥流通行業(yè)供應(yīng)鏈可視化與成本控制創(chuàng)新實(shí)踐案例分享與啟示案例分析解讀
- 北京延慶地理題目及答案
- 保育員初級(jí)考試試題及答案
- 公文寫(xiě)作培訓(xùn)課件gov
- 2025年文化產(chǎn)業(yè)金融支持政策與融資渠道的整合與創(chuàng)新發(fā)展報(bào)告
- 安全與消防試題及答案
- 水資源保護(hù)與可持續(xù)利用技術(shù)研究報(bào)告
- 地?zé)崮茉垂┡夹g(shù)在2025年北方農(nóng)村地區(qū)的推廣應(yīng)用挑戰(zhàn)報(bào)告001
- 安全生產(chǎn)趣味試題及答案
- 江西省贛州寧都縣聯(lián)考2025年英語(yǔ)八下期中考試試題含答案
- 百度公司環(huán)境管理制度
- 特殊工時(shí)制管理制度
- 2024-2025學(xué)年廣東人教版高一英語(yǔ)第二學(xué)期期末練習(xí)卷(含答案)
- 統(tǒng)編版三年級(jí)語(yǔ)文下冊(cè)同步高效課堂系列第一單元復(fù)習(xí)課件
- DB15-T 4061-2025 沙化土地防護(hù)灌木林(沙柳、梭梭、檸條)碳匯儲(chǔ)量監(jiān)督抽查技術(shù)規(guī)范
- 智能門(mén)鎖項(xiàng)目可行性分析報(bào)告
- 鄰里糾紛及其合法合理處理課件
- 河南省鄭州市第八中學(xué)2025年七下英語(yǔ)期末經(jīng)典試題含答案
- 中醫(yī)八段錦課件
- 口腔科清洗間管理制度
- 拌合站會(huì)議管理制度
評(píng)論
0/150
提交評(píng)論