版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MCS-51 單片機(jī)原理及應(yīng)用教程 本書(shū)主要內(nèi)容 單片機(jī)基礎(chǔ)知識(shí) 單片機(jī)的組成與結(jié)構(gòu)分析 MCS-51 單片機(jī)的指令系統(tǒng) 單片機(jī)的程序設(shè)計(jì) MCS-51單片機(jī)的中斷系統(tǒng) 定時(shí)/計(jì)數(shù)器 單片機(jī)的串行通信及接口 MCS-51單片機(jī)的系統(tǒng)擴(kuò)展 接口技術(shù) MCS-51兼容機(jī)及串行總線(xiàn)擴(kuò)展 第第1章章 單片機(jī)的基礎(chǔ)知識(shí)單片機(jī)的基礎(chǔ)知識(shí) 微型計(jì)算機(jī)的系統(tǒng)組成微型計(jì)算機(jī)的系統(tǒng)組成 單片機(jī)概述單片機(jī)概述 不同計(jì)數(shù)制之間的轉(zhuǎn)換 數(shù)的表示方法數(shù)的表示方法 思考練習(xí)題思考練習(xí)題 1.1 微型計(jì)算機(jī)的系統(tǒng)集成 運(yùn)算器 控制器 主存儲(chǔ)器 外存儲(chǔ)器 輸入設(shè)備 輸出設(shè)備 操作系統(tǒng) 匯編程序 裝配程序 調(diào)試程序 匯編語(yǔ)言 B
2、ASIC 語(yǔ)言 FORTRAN語(yǔ)言 C 語(yǔ)言 財(cái)務(wù)軟件 教學(xué)軟件 管理軟件 應(yīng)用軟件 程序設(shè)計(jì)語(yǔ)言 系統(tǒng)軟件 外部設(shè)備 主機(jī) 硬件系統(tǒng) 軟件系統(tǒng) 微型計(jì)算機(jī)系統(tǒng) 1.1 微型計(jì)算機(jī)的系統(tǒng)組成微型計(jì)算機(jī)的系統(tǒng)組成 1.1.1 主機(jī)主機(jī) 主機(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ǔ)器又稱(chēng)為內(nèi)存儲(chǔ)器,它由大量的存儲(chǔ)單元組成,用以 存儲(chǔ)大量的數(shù)
3、據(jù)及程序。 1.1.2 外部設(shè)備 1. 輸入設(shè)備 目前常用的有鍵盤(pán)、軟驅(qū)、磁帶機(jī)、光驅(qū)等 2. 輸出設(shè)備 常用的有顯示器、打印機(jī)、繪圖儀等 3.外存儲(chǔ)器 常用的外存有磁帶、磁盤(pán)、光盤(pán),其中磁盤(pán)又可分為硬盤(pán)及軟 盤(pán)。 1.2 單片機(jī)概述單片機(jī)概述 1.2.1 單片機(jī)的發(fā)展概況 第一階段 (19711976) 第二階段 (1976 1979) 第三階段 (19791982) 第四階段 (1982 1990) 第五 階段 (1990 至今) 1.2.2 1.2.2 單片機(jī)的應(yīng)用單片機(jī)的應(yīng)用 1. 在工業(yè)測(cè)控中的應(yīng)用 2. 在智能產(chǎn)品中的應(yīng)用 3. 在計(jì)算機(jī)網(wǎng)絡(luò)與通信技術(shù)中的應(yīng)用 1.2.3 1.2.
4、3 單片機(jī)的發(fā)展趨勢(shì)單片機(jī)的發(fā)展趨勢(shì) 1.3 不同計(jì)數(shù)制之間的轉(zhuǎn)換不同計(jì)數(shù)制之間的轉(zhuǎn)換 1.3.1 1.3.1 十進(jìn)制數(shù)十進(jìn)制數(shù) 一個(gè)十進(jìn)制數(shù),它的數(shù)值是由數(shù)碼0,1,2,8,9來(lái)表示的。數(shù) 碼所處的位置不同,代表數(shù)的大小也不同。 例如:53478=5104+3103+4102+7101+8100,對(duì)應(yīng)于: 53478 萬(wàn) 千 百 十 個(gè) 十進(jìn)制 104103102101100 1.3.2 1.3.2 二進(jìn)制數(shù)二進(jìn)制數(shù) 二進(jìn)制是按“逢二進(jìn)一”的原則進(jìn)行計(jì)數(shù)的。二進(jìn)制數(shù)的基為“2”, 即其使用的數(shù)碼為0、1,共兩個(gè)。二進(jìn)制數(shù)的權(quán)是以2為底的冪。 例如:10110100=127+026+125+1
5、24+023+122+021+020, 對(duì)應(yīng)于: 其各位的權(quán)為1,2,4,8,即以2為底的0次冪、1次冪、2次 冪等。 (10110100)2 127+026+125+124+023+122+021+020=180 10111000二進(jìn)制 27 26252423222120 1.3.3 1.3.3 十六進(jìn)制數(shù)十六進(jìn)制數(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)分別代表值為 十進(jìn)制數(shù)中的10,11,12,13,14,15。十六進(jìn)制的權(quán)為以16為底 的冪。 例如:4F8E=4163+F162+8161+E
6、160=20366,對(duì)應(yīng)于: 4EF8十六進(jìn)制 16 3 16 2 16 1 16 0 常用計(jì)數(shù)制表示數(shù)的方法比較常用計(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 1101D 14 1110E 15 1111F 16 1000010 1.3.4 1.3.4 不同進(jìn)制數(shù)之間的轉(zhuǎn)換不同進(jìn)制數(shù)之間的轉(zhuǎn)換 1. 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法 就是用2去除該十進(jìn)制數(shù),得商和余數(shù),此余數(shù)為二進(jìn)制代碼的最小 有效位(L
7、SB)或最低位的值;再用2除該商數(shù),又可得商數(shù)和余數(shù),則 此余數(shù)為L(zhǎng)SB左鄰的二進(jìn)制代碼(次低位)。依此類(lèi)推,從低位到高位 逐次進(jìn)行,直到商是0為止,就可得到該十進(jìn)制數(shù)的二進(jìn)制代碼。 除二取余法除二取余法 1.3.4 1.3.4 不同進(jìn)制數(shù)之間的轉(zhuǎn)換不同進(jìn)制數(shù)之間的轉(zhuǎn)換 例如:將(67)10轉(zhuǎn)換成二進(jìn)制數(shù),過(guò)程如下: 672 2331 0 2 2 2 161 8 4 22 0 0 12 10 0 余數(shù) 余數(shù) 余數(shù) 余數(shù) 余數(shù) 余數(shù) 余數(shù) 低位 高位 即:(67)10=(1000011)2。 1.3.4 1.3.4 不同進(jìn)制數(shù)之間的轉(zhuǎn)換不同進(jìn)制數(shù)之間的轉(zhuǎn)換 1. 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法 將
8、已知十進(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ù)的次高位。依此類(lèi)推,直到滿(mǎn)足精度要求或乘2后的小 數(shù)部分為0為止。 乘二取整法乘二取整法 例如:將(0.625)10轉(zhuǎn)換成二進(jìn)制數(shù),其過(guò)程如下: 0.625 2 1.250 0.250 2 0.500 0.500 2 1.000 整數(shù)部分為 1 就是二進(jìn)制小數(shù)的第一位為 1 整數(shù)部分為 0 就是二進(jìn)制小數(shù)的第二位為 0 整數(shù)部分為 1 就是二進(jìn)制小數(shù)的第三位為 1 即:(0.625)10=(0.
9、101)2 1.3.4 1.3.4 不同進(jìn)制數(shù)之間的轉(zhuǎn)換不同進(jìn)制數(shù)之間的轉(zhuǎn)換 2. 二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的方法 將二進(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 1.3.4 1.3.4 不同進(jìn)制數(shù)之間的轉(zhuǎn)換不同進(jìn)制數(shù)之間的轉(zhuǎn)換 3. 二進(jìn)制與十六進(jìn)制數(shù)之間的轉(zhuǎn)換方法 二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù) 例如:把(101101101.1100101)
10、2轉(zhuǎn)換成十六進(jìn)制數(shù)。 1 0 1 1 0110 1.1111000 1 0 1 1 0110 1.11110000 0 00 二進(jìn)制 十六進(jìn)制 二進(jìn)制 16DCA . 即:(101101101.1100101)2=(16D.CA)16。 1.3.4 1.3.4 不同進(jìn)制數(shù)之間的轉(zhuǎn)換不同進(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)換。 例如:將(ECA16)16轉(zhuǎn)換成二進(jìn)制數(shù)。 101 100101011100 0 二進(jìn)制 十六進(jìn)制ECA16 1 1 00 即:(ECA16)16=(11101100101
11、000010110)2。 1.3.5 1.3.5 二進(jìn)制數(shù)的算術(shù)運(yùn)算規(guī)則二進(jìn)制數(shù)的算術(shù)運(yùn)算規(guī)則 1. 二進(jìn)制加法基本規(guī)則 0+0=0 0+1=1+0=1 1+1=0向鄰近高位有進(jìn)位 1+1+1=1向鄰近高位有進(jìn)位 2. 二進(jìn)制減法基本規(guī)則 0-0=0 1-1=0 1-0=1 0-1=1向鄰近高位有借位 3. 二進(jìn)制乘法基本規(guī)則 00=0 01=10=0 11=1 4. 二進(jìn)制除法基本規(guī)則 1/1=1 0/1=0 1. 邏輯與運(yùn)算基本規(guī)則 00=0 10=01=0 11=1 2. 邏輯或運(yùn)算基本規(guī)則 00=0 10=01=1 11=1 1.3.6 1.3.6 邏輯運(yùn)算邏輯運(yùn)算 3. 邏輯非運(yùn)算基
12、本規(guī)則 /0=1 /1=0 4. 邏輯異或運(yùn)算基本規(guī)則 0 0=1 1=0 1 0=0 1=1 1.4.1 1.4.1 真值與機(jī)器數(shù)真值與機(jī)器數(shù) 單片機(jī)用來(lái)表示數(shù)的形式稱(chēng)為機(jī)器數(shù),也稱(chēng)為機(jī)器碼。而 把對(duì)應(yīng)于該機(jī)器數(shù)的算術(shù)值稱(chēng)為真值。 設(shè): N1=+1010101 N2=-1010101 這兩個(gè)數(shù)在機(jī)器中表示為: N1:01010101 N2:11010101 1.4 數(shù)的表示方法數(shù)的表示方法 01010101 符號(hào)位數(shù)值部分 11010101 符號(hào)位數(shù)值部分 在計(jì)算機(jī)中還有一種數(shù)的表示方法,即機(jī)器中的全部有 效位均用來(lái)表示數(shù)的大小,此時(shí)無(wú)符號(hào)位,這種表示方 法稱(chēng)為無(wú)符號(hào)數(shù)的表示方法。 0101
13、010111010101 8位全用來(lái)表示一個(gè)數(shù) 表示無(wú)符號(hào)數(shù)55 8位全用來(lái)表示一個(gè)數(shù) 表示無(wú)符號(hào)數(shù)D5 1.4.2 1.4.2 原碼、反碼、補(bǔ)碼原碼、反碼、補(bǔ)碼 1. 原碼表示法 原碼表示法是最簡(jiǎn)單的一種機(jī)器數(shù)表示法,只要把 真值的符號(hào)部分用0或1表示即可。 例如:真值為+34與-34的原碼形式為: +34原=00100010 -34原=10100010 0的原碼有兩種形式: +0原=00000000 -0原=10000000 1.4 數(shù)的表示方法數(shù)的表示方法 8位二進(jìn)制數(shù)原碼的表示范圍為: 1111111101111111,對(duì)應(yīng)于-127+127。 2. 反碼表示法 反碼是二進(jìn)制數(shù)的另一種
14、表示形式,正數(shù)的反碼與原碼相 同;負(fù)數(shù)的反碼是將其原碼除符號(hào)位外按位求反。即原來(lái) 為1變?yōu)?,原來(lái)為0變?yōu)?。 例如: +34反=+34原=00100010 -34原=10100010,-34反=11011101 0的反碼也有兩種形式: +0反=00000000 -0反=11111111 8位二進(jìn)制數(shù)反碼的表示范圍為:1000000001111111,對(duì) 應(yīng)于-127+127。 1.4 數(shù)的表示方法數(shù)的表示方法 3. 補(bǔ)碼表示法 1.4 數(shù)的表示方法數(shù)的表示方法 96 21 75 01100000 00010101 01001011 96 235 75 01100000 11101011 01
15、001011 1 丟失 正數(shù)的補(bǔ)碼表示方法與原碼相同,負(fù)數(shù)的補(bǔ)碼表示方法為它的反碼 加1。 例如:-21原=10010101 -21反=11101010 -21補(bǔ)=11101011 0的補(bǔ)碼只有一種表示方法,即+0補(bǔ)=-0補(bǔ)=00000000。 8位二進(jìn)制數(shù)的補(bǔ)碼所能表示的范圍為1000000101111111,對(duì)應(yīng)于- 128+127。 1.4.3 BCD1.4.3 BCD碼碼 十進(jìn)制8421BCD碼二進(jìn)制 0 00000000 1 00010001 2 00100010 3 00110011 4 01000100 5 01010101 6 01100110 7 01110111 8 100
16、01000 9 10011001 10 0001 00001010 11 0001 00011011 12 0001 00101100 13 0001 00111101 14 0001 01001110 15 0001 01011111 1.4.4 ASCII1.4.4 ASCII碼碼 ASCII碼是一種8位代碼,最高位一般用 于奇偶校驗(yàn),用其余的7位代碼來(lái)對(duì)128 個(gè)字符編碼,其中32個(gè)是控制字符,96 個(gè)是圖形字符。 1.5 思考練習(xí)題思考練習(xí)題 (1)微型計(jì)算機(jī)由哪幾部分組成? (2)什么是單片機(jī)?它與一般微型計(jì)算機(jī)在結(jié)構(gòu)上有什 么區(qū)別? (3)單片機(jī)主要應(yīng)用在哪些方面? (4)將下面的
17、一組十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù): 56 74 23 19 89 68 142 76.87 0.375 9.325 83.625 134.0625 (5)將下面的二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)和十六進(jìn)制數(shù): 10110011 10100101 11101001 10011110 10000101 11000101 11101110 10001100 11011.11101.01101 (6)原碼已經(jīng)在下面列出,試寫(xiě)出各數(shù)的反碼與補(bǔ)碼: 10001101101011001110101110001001 11111111011000010111000111111001 第第2章章 單片機(jī)的組成與結(jié)構(gòu)分析單片機(jī)的
18、組成與結(jié)構(gòu)分析 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)單片機(jī)的內(nèi)部結(jié)構(gòu) CPU的結(jié)構(gòu)和功能的結(jié)構(gòu)和功能 存儲(chǔ)器的組織結(jié)構(gòu)存儲(chǔ)器的組織結(jié)構(gòu) MCS-51單片機(jī)的并行輸入輸出端口單片機(jī)的并行輸入輸出端口 MCS-51 單片機(jī)的外部引腳及功能單片機(jī)的外部引腳及功能 單片機(jī)指令時(shí)序單片機(jī)指令時(shí)序 思考練習(xí)題思考練習(xí)題 2.1 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)單片機(jī)的內(nèi)部結(jié)構(gòu) 2.1 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)單片機(jī)的內(nèi)部結(jié)構(gòu) 其基本特性如下8051: 8位CPU,含片內(nèi)振蕩器; 4KB的程序存儲(chǔ)器ROM (Read-only Memory)、 ; 128B的數(shù)據(jù)存儲(chǔ)器RAM (Random Access Memo
19、ry)、 64KB的外部程序存儲(chǔ)器尋址能力; 64KB的外部數(shù)據(jù)存儲(chǔ)器尋址能力; 32根輸入輸出(I/O)線(xiàn); 2個(gè)16位定時(shí)/計(jì)數(shù)器; 1個(gè)全雙工異步串行口; 21個(gè)特殊功能寄存器; 5個(gè)中斷源,2個(gè)優(yōu)先級(jí); 具有位尋址功能。 單片機(jī)的組成 中央處理器CPU 存儲(chǔ)器 輸入輸出端口 運(yùn)算器 控制器 ROM RAM 總線(xiàn) 數(shù)據(jù)總線(xiàn) DB 雙向 控制總線(xiàn) CB 固定 地址總線(xiàn) AB 單向 2.2 CPU的結(jié)構(gòu)和功能的結(jié)構(gòu)和功能 2.2.1 2.2.1 運(yùn)算器運(yùn)算器 8051單片機(jī)的運(yùn)算器由算術(shù)/邏輯運(yùn)算單元ALU、累加器A、寄存 器B、暫存器1、暫存器2以及程序狀態(tài)字寄存器PSW組成。 CYACR
20、S0RS1FOOVP 圖2.2 PSW寄存器各位的標(biāo)志符號(hào) 表2.1 寄存器PSW各位的功能、標(biāo)志符號(hào)與相應(yīng)的位地址 功 能標(biāo)志符號(hào)位地址 進(jìn)位標(biāo)志(又是C寄存器) CYPSW.7 輔助進(jìn)位標(biāo)志ACPSW.6 用戶(hù)標(biāo)志FOPSW.5 工作寄存器組選擇RS1PSW.4 工作寄存器組選擇RS0PSW.3 溢出標(biāo)志OVPSW.2 保留PSW.1 奇偶標(biāo)志PPSW.0 2.2.2 2.2.2 控制器控制器 2.3 存儲(chǔ)器的組織結(jié)構(gòu)存儲(chǔ)器的組織結(jié)構(gòu) 存儲(chǔ)器的功能是存儲(chǔ)信息(即程序與數(shù)據(jù))。存儲(chǔ)器是組成計(jì)算機(jī)的 主要部件,目前所使用的存儲(chǔ)器以半導(dǎo)體存儲(chǔ)器為主。從功能上來(lái) 劃分,半導(dǎo)體存儲(chǔ)器可分為兩大類(lèi):即
21、只讀存儲(chǔ)器(ROM),和隨機(jī) 存儲(chǔ)器(RAM)。 8051單片機(jī)的控制器由指令寄存器、指令譯碼器、堆棧指針 SP、程序計(jì)數(shù)器PC、數(shù)據(jù)指針DPTR、RAM地址寄存器以及 16位地址緩沖器等組成。 2.3.1 MCS-512.3.1 MCS-51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)單片機(jī)的存儲(chǔ)器結(jié)構(gòu) 0000H FFH FFFFH 64KB RAM ( I/O) 數(shù) 據(jù) 存 儲(chǔ) 器 00H 7FH 80H 內(nèi) 部 RAM 專(zhuān) 用 寄 存 器 片 外 片 內(nèi) 0000H 片 內(nèi) EA=1 0000H 0FFFH 片 外 EA=0 0FFFH FFFFH 64KB ROM 4KB ROM 程 序 存 儲(chǔ) 器 圖2.3
22、 8051存儲(chǔ)器配置圖 2.3.2 2.3.2 程序存儲(chǔ)器程序存儲(chǔ)器 程序是控制計(jì)算機(jī)運(yùn)行的一系列命令。計(jì)算機(jī)能夠識(shí)別 并執(zhí)行的命令是由代碼“0”和“1”組成的一組機(jī)器指令。 2.3.3 2.3.3 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器 單片機(jī)的數(shù)據(jù)存儲(chǔ)器由可讀可寫(xiě)的存儲(chǔ)器RAM組成,最多 可擴(kuò)展到64KB,用于存儲(chǔ)數(shù)據(jù)。 2.3.4 MCS-512.3.4 MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器單片機(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)。 00H 1FH
23、20H 2FH 30H 7FH 0組 1組 2組 3組 位 地 址 為 00 H 7FH 只 能 按 字 節(jié) 尋 址 的 RAM區(qū) 既 可 按 位 也 可 按 字 節(jié) 尋 址 的 16字 節(jié) (128位 ) 4組 工 作 寄 存 器 每 組 為 R0R7 (也 可 作 按 字 節(jié) 尋 址 的 RAM用 ) 32字 節(jié) FFH B8H B0H A8H A0H 98H 90H 88H 80H F0H E0H D0H C8H 專(zhuān) 用 寄 存 器 中 的 可 尋 址 位 (93位 ) 80H 特 殊 功 能 寄 存 器 128255 內(nèi) 部 數(shù) 據(jù) RAM 0127 通 用 RAM區(qū) 圖2.4 內(nèi)部數(shù)
24、據(jù)存儲(chǔ)器地址空間 1. 內(nèi)部數(shù)據(jù)RAM單元 內(nèi) 部 數(shù) 據(jù) RAM分為 工 作 寄 存 器 區(qū) 、 位 尋 址 區(qū) 、 通用RAM 區(qū) 三 個(gè) 部 分。 7F7E7D7C7B7A7978 7776757473727170 6F6E6D6C6B6A6968 6766656463626160 5F5E5D5C5B5A5958 5756555453525150 4F4E4D4C4B4A4948 4746454443424140 3F3E3D3C3B3A3938 3736353433323130 2F2E2D2C2B2A2928 2726252423222120 1F1E1D1C1B1A1918 17
25、16151413121110 0F0E0D0C0B0A0908 0706050403020100 3區(qū) 2區(qū) 1區(qū) 0區(qū) 07H 00H 0FH 08H 17H 10H 1FH 18H 20H 21H 22H 23H 24H 25H 26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 7FH MSBLSB 圖2.5 RAM位 地址 (低 128位 在 00H7 FH) 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 00000111 SP(07H) 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H
26、 0AH 00001000 SP(08H) 10101011 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 00000111 SP(07H) 壓棧操作:PUSH A出棧操作:POP A系統(tǒng)復(fù)位 (a)系統(tǒng)復(fù)位后,未改變SP初值時(shí)的堆棧操作(設(shè)(A)=0ABH) 執(zhí)行指令:MOV SP,#60H 5FH 60H 61H 62H 63H 64H 01100000 SP(60H) 5FH 60H 61H 62H 63H 64H 01100001 SP(61H) A1 5FH 60H 61H 62H 63H 64H 01100011 SP(63H) A1 A2
27、 壓入數(shù)據(jù)A1相繼壓入數(shù)據(jù)A2、A3 5FH 60H 61H 62H 63H 64H 01100001 SP(61H) A1 5FH 60H 61H 62H 63H 64H 01100010 SP(62H) A1 A2 彈出數(shù)據(jù)A3 A3 彈出數(shù)據(jù)A2彈出數(shù)據(jù)A1 5FH 60H 61H 62H 63H 64H 01100000 SP(60H) (b)系統(tǒng)復(fù)位后,改變SP初值為60H時(shí)的堆棧操作 圖2.6 堆棧操作示例 2. 特殊功能寄存器 特殊功能寄存器SFR的地址空間是80HFFH。 表2.3 特殊功能寄存器的名稱(chēng)、符號(hào)與地址 特殊功能 寄存器名稱(chēng) 符 號(hào) 位地址與位名稱(chēng)字節(jié) 地址 D7D
28、6D5D4D3D2D1D0 B寄存器BF7F6F5F4F3F2F1F0F0H 累加器AE7E6E5E4E3E2E1E0E0H 程序狀態(tài)字PS W D7D6D5D4D3D2D1D0D0H CACF0RS1RS0OVP 中斷優(yōu)先級(jí) 控制 IPBFBEBDBCBBBAB9B8B8H PSPT1PX1PT0PX0 D7D6D5D4D3D2D1D0 P3口P3B7B6B5B4B3B2B1B0B0H P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0 2. 特殊功能寄存器 中斷允許 控制 IEAFAEADACABAAA9A8A8H EAESET1EX1ET0EX0 P2口P2A7A6A5A4
29、A3A2A1A0A0H P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0 串行數(shù)據(jù) 緩沖器 SBUF99H 串行控制SCON9F9E9D9C9B9A999898H SM0SM1SM2RENTB8RB8TIRI P1口P1979695949392919090H P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0 定時(shí)/計(jì)數(shù) 器1高字節(jié) TH18DH 定時(shí)/計(jì)數(shù) 器0高字節(jié) TH08CH 2. 特殊功能寄存器 定時(shí)/計(jì)數(shù) 器1低字 節(jié) TL18BH 定時(shí)/計(jì)數(shù) 器0低字 節(jié) TL08AH 定時(shí)/計(jì)數(shù) 方式控制 TMODGATEC/TM1M0GATEC/TM1M089H
30、 2. 特殊功能寄存器 特殊功能 寄存器名 稱(chēng) 符號(hào)位地址與位名稱(chēng)字節(jié) 地址 D7D6D5D4D3D2D1D0 定時(shí)器控 制寄存器 TCON8F8E8D8C8B8A898888H TF1TR1TF0TR0IE1IT1IE0IT0 電源控制PCONSMOD87H 數(shù)據(jù)指針 高字節(jié) DPH83H 數(shù)據(jù)指針 低字節(jié) DPL82H 堆棧指針SP81H P0口P0878685848382818080H P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 2.4 MCS-51單片機(jī)的并行輸入輸出端口單片機(jī)的并行輸入輸出端口 2.4.1 P02.4.1 P0口結(jié)構(gòu)口結(jié)構(gòu) 1. P0用作通用I/
31、O口 2. P0用作地址/數(shù)據(jù)總線(xiàn)分時(shí)復(fù)用方式 D CL Q Q P0.X 鎖存器 MUX P0.X 引腳 T1 T2 讀引腳 寫(xiě)鎖存器 內(nèi)部總線(xiàn) 讀鎖存器 1 2 3 4 地址/數(shù)據(jù)控制C VCC 2.4.2 P22.4.2 P2口結(jié)構(gòu)口結(jié)構(gòu) 1. P2口用作地址總線(xiàn) 2. P2口用作通用I/O口 D CL Q Q P2.X 鎖存器 MUX 讀引腳 寫(xiě)鎖存器 內(nèi)部總線(xiàn) 讀鎖存器 1 2 地址控制C P2.X 引腳 T VCC R 3 2.4.3 P32.4.3 P3口結(jié)構(gòu)口結(jié)構(gòu) 2.4.4 P12.4.4 P1口結(jié)構(gòu)口結(jié)構(gòu) D CL Q Q P3.X 鎖存器 讀引腳 寫(xiě)鎖存器 內(nèi)部總線(xiàn) 讀鎖
32、存器 1 2 P3.X 引腳 T VCC R 第二輸出功能 第二輸入功能 3 4 D CL Q Q P1.X 鎖存器 讀引腳 寫(xiě)鎖存器 內(nèi)部總線(xiàn) 讀鎖存器 1 2 P1.X 引腳 T VCC R 2.5 MCS-51單片機(jī)的外部引腳及功能單片機(jī)的外部引腳及功能 2.5.1 2.5.1 電源引腳電源引腳 (b)雙列直插式封裝 (a)方形封裝 2.5.2 2.5.2 外接晶振或外部時(shí)鐘信號(hào)輸入端外接晶振或外部時(shí)鐘信號(hào)輸入端 (a)內(nèi)部振蕩器方式 (b)外部振蕩器方式 圖2.12 8051單片機(jī)的振蕩器方式 表2.4 按不同工藝制造的單片機(jī)芯片外接振蕩器時(shí)的接法 芯片類(lèi) 型 接 法 XTAL1XTA
33、L2 CHMOS接外部振蕩器脈沖輸入端(帶 上拉電阻) 懸浮 HMOS接地接外部振蕩器脈沖輸入端(帶 上拉電阻) 2.5.3 2.5.3 輸入輸出引腳輸入輸出引腳 P0.0P0.7:通道0是一個(gè)8位漏極開(kāi)路的雙向輸入輸出通道。在外接存 儲(chǔ)器或者擴(kuò)展I/O接口時(shí),P0口作為復(fù)用的低8位地址總線(xiàn)和雙向數(shù)據(jù) 總線(xiàn)。在不擴(kuò)展存儲(chǔ)器或者I/O接口時(shí),作為準(zhǔn)雙向輸入輸出接口。 P1.0P1.7:只有一種功能,即準(zhǔn)雙向I/O口。 P2.0P2.7:可作為準(zhǔn)雙向I/O口使用;但在接有片外存儲(chǔ)器或擴(kuò)展I/O 接口范圍超過(guò)256B時(shí),則該口一般只能作為高8位地址總線(xiàn)使用。 P3.0P3.7:該口除了作為準(zhǔn)雙向口外
34、,還具有第二功能。 2.5.4 2.5.4 控制線(xiàn)控制線(xiàn) 1. ALE/ 2. PSEN 3. EA/VPP 4. RST (a)上電復(fù)位 (b)電平開(kāi)關(guān)復(fù)位 圖2.13 復(fù)位電路 2.6 單片機(jī)指令時(shí)序單片機(jī)指令時(shí)序 S1 P1 P2 S2 P1 P2 S3 P1 P2 S4 P1 P2 S5 P1 P2 S6 P1 P2 S1 P1 P2 S2 P1 P2 S3 P1 P2 S4 P1 P2 S5 P1 P2 S6 P1 P2P2P1 S1 OSC ALE S1S2S3S4S5S6 讀操作碼 讀下一個(gè)操作碼 (丟棄) 讀下一個(gè)操作碼 A:?jiǎn)巫止?jié)單周期指令 如:INC A S1S2S3S4S
35、5S6 讀操作碼讀第2字節(jié)讀下一個(gè)操作碼 B:雙字節(jié)單周期指令 如:ADD A,#data S1S2S3S4S5S6 讀操作碼讀下一個(gè)操作碼 C:?jiǎn)巫止?jié)雙周期指令 如:INC DPTR S1S2S3S4S5S6 讀操作碼 讀下一個(gè)操作碼 D:?jiǎn)巫止?jié)雙周期指令 如:MOVX類(lèi)指令 讀下一個(gè)操作碼(丟棄) S1S2S3S4S5S6 S1S2S3S4S5S6 讀下一個(gè)操作碼(丟棄)不取指 無(wú)ALE信號(hào) 不取指 S1 S1 地址數(shù)據(jù) 訪問(wèn)外部存儲(chǔ)器 2.7 思考練習(xí)題思考練習(xí)題 (1)MCS-51單片機(jī)包含哪些主要邏輯功能部件? (2)程序狀態(tài)字寄存器PSW包含哪幾個(gè)標(biāo)志位?各位的含義是什么?各 有何
36、作用? (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è)置? (8)怎樣確定和改變單片機(jī)當(dāng)前的工作寄存器組? (9)簡(jiǎn)要說(shuō)明單片機(jī)的位地址分配。 (10)試畫(huà)出常用的單片機(jī)復(fù)位電路,并說(shuō)明復(fù)位后各個(gè)寄存器的狀態(tài)。 第3章 MCS-51單片機(jī)的指令系統(tǒng) u 匯編語(yǔ)言的指令格式及符號(hào)簡(jiǎn)介匯編語(yǔ)言的指令格式及符號(hào)簡(jiǎn)介 u 尋址方式 u 數(shù)
37、據(jù)傳送類(lèi)指令 u算術(shù)運(yùn)算類(lèi)指令 u邏輯運(yùn)算類(lèi)指令 u位操作類(lèi)指令 u控制轉(zhuǎn)移類(lèi)指令 u思考練習(xí)題 3.1 匯編語(yǔ)言的指令格式及符號(hào)簡(jiǎn)介匯編語(yǔ)言的指令格式及符號(hào)簡(jiǎn)介 3.1.1 指令格式指令格式 標(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)的定義本章中符號(hào)的定義 3.2 尋尋 址址 方方 式式 MCS-51單片機(jī)有7種尋址方式,見(jiàn)表3.1。 表3.1 7種尋址方
38、式的比較 序 號(hào) 尋址方式利用的寄存器和存儲(chǔ)空間 1立即尋址程序存儲(chǔ)器ROM 2直接尋址內(nèi)部RAM、特殊功能寄存器SFR 3寄存器尋 址 寄存器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 3.2.1 立即尋址立即尋址 例如:MOV A, #23H ; (A)23H,即累加器A的內(nèi)容被替換為立即數(shù)23H。 01110100 00100011 PC 操作碼 立
39、即數(shù) ACCE0H 圖3.1 MOV A,#23H的執(zhí)行示意圖 該指令的功能是將8位的立即數(shù)23H傳 送到累加器A中。如圖3.1所示。其中, 目的操作數(shù)采用寄存器尋址,源操作數(shù) 采用立即尋址。 3.2.2 直接尋址直接尋址 直接尋址是指在指令中包含了操作數(shù)的地址,該地址直接給出了參加運(yùn)算 或傳送的單元或位。直接尋址方式可訪問(wèn)三種地址空間: 特殊功能寄存器SFR(該空間只能采用直接尋址)。 內(nèi)部數(shù)據(jù)RAM的低128個(gè)字節(jié)單元(該空間還可以采用寄存器間接尋址)。 221個(gè)位地址空間。 例如例如:MOV A, 40H ;把40H單元的內(nèi)容送到累加器中,即 (A)(40H)。 11100101 010
40、00000 PC 操作碼 直接地址 ACCE0H 40H ROM 內(nèi)部RAM 圖3.2 MOV A,40H的執(zhí)行示意圖 3.2.3 寄存器尋址寄存器尋址 寄存器尋址是指定某一可尋址的寄存器的內(nèi)容為操作數(shù)。 例如:MOV A, R0 ;(A)(R0) 該指令的功能是將R0中的數(shù)據(jù)傳送到累加器A中。源操作數(shù) 與目的操作數(shù)都采用了寄存器尋址。 在MCS-51單片機(jī)中,能夠用來(lái)間接尋址的寄存器有:用戶(hù)所選定 的工作寄存器組的R0、R1,堆棧指針SP和16位的數(shù)據(jù)指針DPTR。 內(nèi)部數(shù)據(jù)RAM的寄存器間接尋址采用寄存器R0、R1;外部數(shù)據(jù) RAM的寄存器間接尋址有兩種形式:一是采用R0、R1作間址寄存器
41、, 這時(shí)R0或R1提供低8位地址,而高8位地址則由P2端口提供;二是采用 16位的DPTR作間址寄存器。 3.2.4 寄存器間接尋址寄存器間接尋址 例如:設(shè)R0的內(nèi)容為60H,且(60H)=10H,即60H地址單元中 的內(nèi)容為10H,則語(yǔ)句MOV A, R0的執(zhí)行過(guò)程如圖3.3所示。 執(zhí)行后,(A)=10H,即累加器A的內(nèi)容成為10H。 01100000 ACC R0 60H10H 00010000 00010000 內(nèi)部RAM 圖3.3 MOV A,R0的執(zhí)行示意圖 又如:MOVX A, R0;(A)(R0),用R0間接尋址的單元中的內(nèi)容替換A的 ;內(nèi)容。 MOVX A, DPTR;(A)(
42、DPTR),用DPTR間接尋址的單元中的內(nèi)容替換 ;A的內(nèi)容。 3.2.5 變址尋址變址尋址 這種尋址方式是以數(shù)據(jù)指針DPTR或程序計(jì)數(shù)器PC作為基址寄存器, 以累加器A作為偏移量寄存器,將一個(gè)基址寄存器的內(nèi)容與偏移量寄 存器的內(nèi)容之和作為操作數(shù)地址。 例如:MOVC A, A+DPTR 設(shè)(A)=10H,(DPTR)=1000H,程序存儲(chǔ)器的(1010H)=45H,則上面程序語(yǔ)句的 功能是將A的內(nèi)容與DPTR的內(nèi)容相加形成操作數(shù)地址(1010H),把該地址中的 數(shù)據(jù)傳送到累加器A。即(A)(A)+(DPTR)。結(jié)果: (A)=45H。 00010000DPH ROM 00000000DPL
43、00010000ACC 00010000 + 00010000 (DPTR)=1010H DPH DPL 01000101 ACC 01000101 圖 3.4 MOVC A,A+DPTR的執(zhí)行示意圖 相對(duì)尋址相對(duì)尋址是把指令中給定的地址偏移量rel與程序計(jì)數(shù)器 PC的當(dāng)前 值(讀出該雙字節(jié)或三字節(jié)的跳轉(zhuǎn)指令后,PC指向的下條指令的地址)相 加,得到真正的程序轉(zhuǎn)移地址。 例如:JC 80H 若C=0,則PC值不變,若C=1,則以當(dāng)前PC值為基地址,加上80H 得到新的PC值。設(shè)該轉(zhuǎn)移指令存放在1005H單元,取出操作碼后 PC指向1006H單元,取出偏移量后PC指向1007H單元,所以計(jì)算 偏
44、移量時(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ì)尋址相對(duì)尋址 3.2.6 相對(duì)尋址相對(duì)尋址 01000000 10000000 0F87H 1005 PC PC PC 1006 1007 ALU 1007 操作碼 偏移量 PC 圖3.5 JC 80H的執(zhí)行示意圖 3.2.7 位尋址位尋址 MCS-51單片機(jī)可對(duì)片內(nèi)RAM的兩個(gè)區(qū)域進(jìn)行位尋址:一 個(gè)是20H2FH單元的128位,另一個(gè)是特殊功能寄存器 的93位。 在尋址時(shí),同一個(gè)位地址可以有多種標(biāo)識(shí)方式,
45、讀者可 參看后面3.6節(jié)“位操作指令”的相關(guān)內(nèi)容。 3.3.1 通用傳送指令通用傳送指令 格式:MOV 目的操作數(shù),源操作數(shù) 功能:把第二操作數(shù)指定的字節(jié)內(nèi)容傳送到第一操作數(shù)指定的單 元中。不影響源操作數(shù)內(nèi)容,不影響別的寄存器和標(biāo)志。 1. 以累加器A為目的操作數(shù)的傳送類(lèi)指令 3.3 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 指令助記符及功能說(shuō)明如下: 目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方 式 MOVA,direct;(A)(direct)直接尋址 MOVA,Ri;(A)(Ri)寄存器間接尋址 MOVA,Rn;(A)(Rn)寄存器尋址 MOVA,#data;(A)data立即尋址 例例1 若(50H)
46、=10H,則執(zhí)行指令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。 2. 以Rn為目的操作數(shù)的傳送類(lèi)指令 例例1 若(A)=20H,則執(zhí)行指令MOV R3, A后,(R3)=20H。 例例2 若(30H)=01H,則執(zhí)行指令MOV R7, 30H后,(R7)=01H。 指令助記符及功能說(shuō)明如下: 目的操作數(shù) 源操作數(shù)功能說(shuō)明源操作數(shù)尋址方 式 MOVRn,A;(Rn)(A)寄存器尋址 MOVRn,direct;(Rn)(d
47、irect)直接尋址 MOVRn,#data;(Rn)data立即尋址 例例1 若(30H)=20H,(R0)=30H,則執(zhí)行指令MOV 90H, R0的結(jié)果為 (90H)=20H。 例例2 若例1中的條件不變,而執(zhí)行指令MOV P1, R0,則(P1)=20H。 3. 以直接地址directX為目的操作數(shù)的傳送類(lèi)指令 指令助記符及功能說(shuō)明如下: 目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式 MOVdirectX,A;(directX)(A)寄存器尋址 MOVdirectX,Rn;(directX)(Rn)寄存器尋址 MOVdirectX,directY;(directX)(directY)直接
48、尋址 MOVdirectX,Ri;(directX)(Ri)寄存器間接尋址 MOVdirectX,#data;(directX)data立即尋址 例例1 若(R0)=50H,(50H)=20H,(A)=10H,則執(zhí)行指令“MOV R0, A”后,50H單元的內(nèi)容由原來(lái)的20H變?yōu)?0H。 4. 以寄存器間接地址Ri為目的操作數(shù)的傳送類(lèi)指令 指令助記符及功能說(shuō)明如下: 目的操作 數(shù) 源操作數(shù)功能說(shuō)明源操作數(shù)尋址方 式 MOV Ri,A;(Ri)(A)寄存器尋址 MOV Ri,direct;(Ri)(direc t) 直接尋址 MOV Ri,#data;(Ri)data立即尋址 5. 16位目標(biāo)地
49、址傳送指令 這條指令的功能是:把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立即尋址 3.3.2 外部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器(或或I/O口口)與累加器與累加器A傳送指令傳送指令 例例1 設(shè)(P2)=20H,現(xiàn)將A中數(shù)據(jù)存儲(chǔ)到20FFH單元中去。 可用以下程序?qū)崿F(xiàn): MOV R1, #0FFH ;(R1)0FFH MOV
50、X R1, A ;(20FFH)(A) 也可采用下述程序?qū)崿F(xiàn): MOV DPTR, #20FFH ;(DPTR)20FFH MOVX 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)寄存器尋址 3.3.2 外部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器(或或I/O口口)與累加器與累加器A傳送指令傳送指令 例例2 將外部數(shù)據(jù)存儲(chǔ)器7FF0H單元
51、中的數(shù)據(jù)取出,存放到 外部數(shù)據(jù)存儲(chǔ)器2000H單元中去。 MOV DPTR, #7FF0H MOVX A, DPTR MOV DPTR, #2000H MOVX DPTR, A 例例1 在外部程序存儲(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, #data MOVC A, A+PC 3.3.3 程序存儲(chǔ)器向累加器程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)指令傳送數(shù)據(jù)指令 指令助記符與功能說(shuō)明如
52、下: 目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式 MOVCA,A+PC;(A)(A)+(PC)+1)變址尋址 MOVCA,A+DPTR;(A)(A)+(DPTR)變址尋址 1. 字節(jié)交換指令 例例1 設(shè)(R1)=30H,(30H)=45H,(A)=7FH,則執(zhí)行指令: 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ù)交換指令數(shù)據(jù)交換指令 指令助記符與功能說(shuō)明如下: 目的操作 數(shù) 源操作數(shù)功能說(shuō)明源操作數(shù)尋址方 式 XCH A,direct(direct)直接尋址 XCH A,Ri(Ri)間接尋址
53、 XCH A,Rn(Rn)寄存器尋址 2. 半字節(jié)交換指令 例例1 設(shè)(30H)=6FH,(R0)=30H,(A)=0F6H,則執(zhí)行指令: 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)間接尋址 3. 累加器A中高四位與低四位交換指令 SWAP A 該指令所執(zhí)行的操作是累加器A中的高4位與低4位的內(nèi)容互換,其 結(jié)果仍存放在累加器A中。 例例1 設(shè)(A)=0A5H(10100101B)
54、,則執(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 例1PUSH A ;保護(hù)A中數(shù)據(jù) PUSH PSW ;保護(hù)標(biāo)志寄存器中數(shù)據(jù) ;執(zhí)行服務(wù)程序 POP PSW ;恢復(fù)標(biāo)志寄存器中數(shù)據(jù) POP A ;恢復(fù)A中數(shù)據(jù) 例2PUSH A PUSH PSW
55、 POP A POP PSW 例3 PUSH DPH PUSH DPL POP DPL POP DPH 3.4.1 加減運(yùn)算指令加減運(yùn)算指令 1. 加法指令 這類(lèi)指令所完成的操作是把源操作數(shù)(立即數(shù)、直接地址單元內(nèi)容、 間接地址單元內(nèi)容、工作寄存器內(nèi)容)與累加器A的內(nèi)容相加,將結(jié)果保 存在累加器A中。 3.4 算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令 指令助記符與功能說(shuō)明如下: 目的操作 數(shù) 源操作數(shù)功能說(shuō)明源操作數(shù)尋址方 式 ADDA,#data;(A)(A)+data立即尋址 ADDA,direct;(A)(A)+(dire ct) 直接尋址 ADDA,Ri;(A)(A)+(Ri) 寄存器間接尋址 A
56、DDA,Rn;(A)(A)+(Rn)寄存器尋址 例例1 執(zhí)行指令: MOV A, #0A9H ADD A, #0B8H 對(duì)程序狀態(tài)寄存器的影響如圖3.6所示。 運(yùn)算結(jié)果:(A)=61H,CY=1,AC=1,OV=1,P=1,(PSW)=0C5H 例例2 8位數(shù)加法程序片斷1: MOVA, #23H ADDA, #5AH 運(yùn)算結(jié)果:(A)=7DH,CY=0,OV=0,AC=0,P=0,(PSW)=00H。 00 000 0000 0 0 11111 1 1 11 11 1 1 d7d0d4d3 無(wú)進(jìn)位AC=0 0 =0,OV=0 無(wú)進(jìn)位CY=0 P=0 0 例例3 8位數(shù)加法程序片斷2: MOV
57、A, #0ABH ADDA, #9AH 運(yùn)算結(jié)果:(A)=45H,CY=1,OV=1,AC=1,P=1,(PSW)=0C5H。 00 000 1000 1 1 10001 1 1 10 11 1 1 d7d0d4d3 有進(jìn)位AC=1 1 =1,OV=1 有進(jìn)位CY=1 P=11 0 帶進(jìn)位加法指令與前述加法指令的區(qū)別僅為考慮進(jìn)位位,其他與加法 指令相同。 2. 帶進(jìn)位加法指令 指令助記符與功能說(shuō)明如下: 目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式 ADDCA,#data;(A)(A)+data+(C)立即尋址 ADDCA,direct;(A)(A)+(direct)+(C)直接尋址 ADDCA
58、,Ri;(A)(A)+(Ri)+(C)寄存器間接尋址 ADDCA,Rn;(A)(A)+(Rn)+(C)寄存器尋址 例例3 利用ADDC指令可以進(jìn)行多字節(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)算結(jié)果:(A)=00000000B,AC=1,CY=1,OV=1。 例例2 設(shè)(A)=35H,(40H)=21H,C=0,則執(zhí)行指令: ADDC A,
59、 40H 運(yùn)算結(jié)果:(A)=56H,AC=0,CY=0,OV=0。 這與執(zhí)行指令“ADD A, 40H”的結(jié)果是一樣的。 SHJ: MOV A, 40H;(A)被加數(shù)低8位 ADD A, 42H;與加數(shù)低8位相加 MOV 50H, A;和的低8位存入50H MOV A, 41H;(A)被加數(shù)高8位 ADDC A, 43H ;被加數(shù)高8位與加數(shù)高8位以及低位來(lái)的進(jìn)位相加 MOV 51H, A;和的高8位存入51H單元 MOV A, #00H ;(A)00H ADDC A, #00H ;(A)(A) +00H+高8位來(lái)的進(jìn)位 MOV 52H, A;進(jìn)位位C內(nèi)容存入52H單元 3. 帶借位減指令 指
60、令助記符與功能說(shuō)明如下: 目的操作數(shù)源操作數(shù)功能說(shuō)明源操作數(shù)尋址方式 SUBB A,#data;(A)(A)-data-(C)立即尋址 SUBB A,direct;(A)(A)-(direct)-(C)直接尋址 SUBB A,Ri;(A)(A)-(Ri)-(C)寄存器間接尋址 SUBB A,Rn;(A)(A)-(Rn)-(C)寄存器尋址 例例1 設(shè)(40H)=0BAH,(41H)=98H,試編寫(xiě)40H內(nèi)容減去41H內(nèi) 容后,結(jié)果再存入40H單元的程序。 MOVA, 40H ;(A)(40H) CLRC;進(jìn)位位C清0 SUBBA, 41H ;(A)(A)-(41H) -(C) MOV40H, A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024水電工程安裝承包合同
- 二零二五年度汽車(chē)貸款抵押物保管合同樣本2篇
- 二零二五年度文化產(chǎn)業(yè)園開(kāi)發(fā)建設(shè)合同3篇
- 2025年度食品企業(yè)HACCP體系認(rèn)證與改進(jìn)服務(wù)合同3篇
- 二零二五年特色餐廳食材供應(yīng)鏈管理服務(wù)合同3篇
- 2024版版權(quán)質(zhì)押貸款合同3篇
- 二零二五年度附帶提前還款罰金的合法借款合同3篇
- 2024版影視經(jīng)紀(jì)中介協(xié)議樣本版B版
- 2024版外貿(mào)儀器合同范本
- 個(gè)人勞務(wù)合同簡(jiǎn)單范本
- 青島版科學(xué)四年級(jí)下冊(cè)課程綱要
- 《無(wú)人機(jī)法律法規(guī)知識(shí)》課件-第1章 民用航空法概述
- 部編人教版六年級(jí)下冊(cè)語(yǔ)文1-6單元作文課件
- NB/T 11434.5-2023煤礦膏體充填第5部分:膠凝材料技術(shù)要求
- 2020-2024年安徽省初中學(xué)業(yè)水平考試中考物理試卷(5年真題+答案解析)
- 手術(shù)器械與敷料的傳遞
- 提高護(hù)士手衛(wèi)生執(zhí)行率PDCA案例匯報(bào)課件(32張)
- 日本人的色彩意識(shí)與自然觀
- 校園網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì)規(guī)劃任務(wù)書(shū)
- 部編版5年級(jí)語(yǔ)文下冊(cè)第五單元學(xué)歷案
- 建造師建設(shè)工程項(xiàng)目管理二局培訓(xùn)精簡(jiǎn)版課件
評(píng)論
0/150
提交評(píng)論