版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第1章 基礎(chǔ)知識第2章 MCS-51系列單片機(jī)的結(jié)構(gòu)和時(shí)序第3章 MCS-51系列單片機(jī)指令系統(tǒng)第4章 MCS-51系列單片機(jī)中斷系統(tǒng) 與定時(shí)計(jì)數(shù)器第5章 存儲器擴(kuò)展技術(shù)第6章 并行 IO擴(kuò)展技術(shù)第7章 串行通信技術(shù)第8章 IO設(shè)備接口技術(shù)第9章 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)第1章 基礎(chǔ)知識本章重點(diǎn):了解微型計(jì)算機(jī)的基本結(jié)構(gòu)和工作原理; 掌握單片機(jī)的概念及應(yīng)用場合; 掌握計(jì)算機(jī)中的數(shù)制與編碼。1.1 微型計(jì)算機(jī)簡介1.2 單片機(jī)簡介1.3 計(jì)算機(jī)中的數(shù)制與編碼 本章小結(jié)1.1 微型計(jì)算機(jī)簡介1.1.1 微型計(jì)算機(jī)的發(fā)展 1.微型計(jì)算機(jī)的發(fā)展第一代微處理器 例: Intel 40044位第二代微處理器 例
2、:Intel 80808位第三代微處理器 例:Intel 808616位第四代微處理器 例:Intel8048632位第五代微處理器 例:Intel公司的Pentiumg64位2.微型計(jì)算機(jī)的應(yīng)用數(shù)值計(jì)算 控制 信息處理與管理人工智能1.1.2 微型計(jì)算機(jī)的組成及工作原理 1.微型計(jì)算機(jī)的常用術(shù)語位(bit): 位是計(jì)算機(jī)所能表示的最基本、最小的數(shù)據(jù)單位。 位有兩種狀態(tài):0和1。字節(jié)(Byte): 一個(gè)連續(xù)的8位二進(jìn)制數(shù)稱為一個(gè)字節(jié),即: 1Byte8bit,通常以字節(jié)為單位來存放數(shù)據(jù)。字(Word):是計(jì)算機(jī)內(nèi)部進(jìn)行數(shù)據(jù)處理的基本單位 。 字通常與計(jì)算機(jī)內(nèi)部的寄存器、算術(shù)邏輯單元、數(shù)據(jù)總線的
3、寬度相一致。存儲器容量更大單位: KB(1KB1024B210B) MB(1MB1024KB220B) GB(11024MB230B) 指令(instruction):是規(guī)定計(jì)算機(jī)進(jìn)行某種操作的命令。 指令系統(tǒng)(instruction set):指一臺計(jì)算機(jī)所能執(zhí)行的全部指令。程序(program):是指令的有序集合,是一組為完成某種任務(wù)而編制的指令序列。2.微型計(jì)算機(jī)的組成(1)中央處理單元(CPU) CPU主要由運(yùn)算器、控制器組成。(2)存儲器 存儲器的主要功能是存放程序和數(shù)據(jù)。存儲器中存放二進(jìn)制數(shù)的單元稱為存儲單元。(3)輸入/輸出接口(I/O接口)完成外設(shè)與CPU的連接;轉(zhuǎn)換數(shù)據(jù)傳送速
4、度;轉(zhuǎn)換電平;將I/O設(shè)備的狀態(tài)信息反饋給CPU等。 (4)總線(Bus) 總線是將CPU、存儲器和I/O接口等相對獨(dú)立的功能部件連接起來,并傳送信息的公共通道。數(shù)據(jù)總線DB(Data Bus):雙向通信總線。地址總線AB(Address Bus):單向通信總線。控制總線CB(Control Bus):單向通信總線。3.微型計(jì)算機(jī)的工作原理(1)取指令CPU選中存儲單元;CPU向存儲器發(fā)出讀取數(shù)據(jù)的控制信號;CPU通過DB讀入指令代碼。(2)分析、執(zhí)行指令過程CPU讀取指令代碼后進(jìn)行譯碼;CPU根據(jù)譯碼結(jié)果發(fā)出為完成此指令所需要的控制信號;執(zhí)行指令所規(guī)定的操作。1.2 單片機(jī)簡介常見計(jì)算機(jī):一
5、般計(jì)算機(jī)的結(jié)構(gòu):顯示器主機(jī)鼠標(biāo)鍵盤微型計(jì)算機(jī)系統(tǒng)運(yùn) 算 器控 制 器CPU存 儲 器輸入接口電路輸入設(shè)備輸出設(shè)備輸出接口電路硬件系統(tǒng)軟件系統(tǒng)+什么是單片機(jī)? 單片機(jī)就是將組成微型計(jì)算機(jī)的CPU、存儲器(RAM和ROM)、輸入/輸出接口等幾個(gè)部分,全部集成在一塊芯片內(nèi)所組成的微型計(jì)算機(jī),就稱為單片機(jī)。1.2.1 單片機(jī)的發(fā)展概況單片機(jī)的發(fā)展方向低電源、低功耗外圍接口電路內(nèi)裝化工藝的進(jìn)步及抗干擾能力的提高存儲能力和Internet連接1.2.2 單片機(jī)的特點(diǎn)體積小、結(jié)構(gòu)簡單、可靠性高;控制功能強(qiáng) ;低電壓、低功耗 優(yōu)異的性能/價(jià)格1.2.3 單片機(jī)的應(yīng)用汽車電子 家用電器 航空航天 醫(yī)療設(shè)備 工業(yè)
6、控制儀器儀表 通信產(chǎn)品 1.2.4 MCS-51系列單片機(jī)簡介MCS-51系列基本產(chǎn)品型號:8051、8031、8751稱為 51子系列。不同型號MCS-51單片機(jī)CPU處理能力和指令系統(tǒng)完全兼容,只是存儲器和I/O接口的配置有所不同。 硬件配置基本配置:1. 8位CPU2. 片內(nèi)ROM/EPROM、RAM3. 片內(nèi)并行 I/O接口4. 片內(nèi)16位定時(shí)器/計(jì)數(shù)器5. 片內(nèi)中斷處理系統(tǒng)6. 片內(nèi)全雙工串行I/O口1.3 計(jì)算機(jī)中的數(shù)制與編碼1.3.1 數(shù)制數(shù)制:是按進(jìn)位原則進(jìn)行計(jì)數(shù)的一種方法,即進(jìn)位計(jì)數(shù)制。十進(jìn)制數(shù)(1)記數(shù)符號:0、1、2、3、4、5、6、7、8、9;書寫時(shí)用“D”作后綴(一般
7、省略)。(2)進(jìn)位原則:“逢十進(jìn)一”。(3)按權(quán)展開式:二進(jìn)制數(shù)(1)記數(shù)符號:0、1;書寫時(shí)用“B”作后綴。(2)進(jìn)位原則:“逢二進(jìn)一”;(3)按權(quán)展開式:十六進(jìn)制數(shù)(1)記數(shù)符號:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;書寫時(shí)用“H”作后綴。(2)進(jìn)位原則:“逢十六進(jìn)一”;(3)按權(quán)展開式:記?。菏M(jìn)制與十進(jìn)制、十六進(jìn)制與二進(jìn)制對應(yīng)關(guān)系。1.3.2 數(shù)制之間的相互轉(zhuǎn)換1.二進(jìn)制及其他進(jìn)制轉(zhuǎn)換為十進(jìn)制數(shù)二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換十進(jìn)制的方法是:將二進(jìn)制、八進(jìn)制或十六進(jìn)制寫成按權(quán)展開式,然后各項(xiàng)相加,則得相應(yīng)的十進(jìn)制數(shù)?!纠堪讯M(jìn)制數(shù)10101.1011B轉(zhuǎn)換成相
8、應(yīng)的十進(jìn)制數(shù)。解:10101.1011B 12402322021120 12-112-312-4 21.6875D2.十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)十進(jìn)制數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)是將整數(shù)部分按“除2倒讀余數(shù)法”的原則進(jìn)行轉(zhuǎn)換;小數(shù)部分按“乘2順讀整數(shù)法”的原則進(jìn)行轉(zhuǎn)換。【例】把十進(jìn)制數(shù)15.625轉(zhuǎn)換成為對應(yīng)二進(jìn)制數(shù)。解:所以十進(jìn)制數(shù)15.6251111.101B3.二進(jìn)制數(shù)與十六進(jìn)制數(shù)相互轉(zhuǎn)換二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)時(shí),從小數(shù)點(diǎn)開始,分別向左、向右每4位二進(jìn)制數(shù)劃為一組,整數(shù)部分不足4位前面添0,小數(shù)部分不足4位后面添0,然后每一組(4位二進(jìn)制數(shù))用1位十六進(jìn)制數(shù)代替(4位二進(jìn)制數(shù)與1位十六進(jìn)制數(shù)對應(yīng)關(guān)系
9、見表),小數(shù)點(diǎn)位置保持不變。 【例】二進(jìn)制數(shù)1111000111.100101B轉(zhuǎn)換成為十六進(jìn)制數(shù)。解: 1111000111.100101B0011 1100 0111.1001 0100B 3C7.94H3.二進(jìn)制數(shù)與十六進(jìn)制數(shù)相互轉(zhuǎn)換十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)時(shí),1位十六進(jìn)制數(shù)用4位二進(jìn)制數(shù)來替換,小數(shù)點(diǎn)位置保持不變?!纠繉⑹M(jìn)制數(shù)2F5.CH轉(zhuǎn)換成為二進(jìn)制數(shù)解: 2F5.CH0010 1111 0101.1100B 1011110101.11B4.十進(jìn)制數(shù)轉(zhuǎn)換十六進(jìn)制數(shù)先將十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),再將二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)。1.3.3 二進(jìn)制數(shù)的算術(shù)運(yùn)算1加法運(yùn)算加法規(guī)則: 000
10、 ;011;101;1110進(jìn)位原則:逢二進(jìn)位?!纠壳?111B與0110B之和。解: 0 1 1 1 (7) )0 1 1 0 (6) 1 1 0 1 (13) 0111B0110B1101B2減法運(yùn)算減法規(guī)則: 000 ;101;110;011(借位)【例】求1110B0101B?解: 1 1 1 0 (14) )0 1 0 1 (5) 1 0 0 1 (9) 1110B0101B1001B3乘法運(yùn)算在計(jì)算機(jī)系統(tǒng)中,都是將乘法作為連續(xù)的加法來執(zhí)行。其中,自身相加的數(shù)為被乘數(shù),相加的次數(shù)為乘數(shù)。【例】求1101B11B?解: 1101B11B 1101B1101B1101B 100111B
11、4除法運(yùn)算除法可以歸結(jié)為連續(xù)的減法,即從被除數(shù)中不斷地減去除數(shù),所減的次數(shù)是相除的商,而剩下的值則是相除的余數(shù)。注意:因?yàn)闇p法可以轉(zhuǎn)換為加法(見二進(jìn)制數(shù)補(bǔ)碼的加減運(yùn)算),所以除法也能轉(zhuǎn)換成加法。這樣,二進(jìn)制數(shù)的加、減、乘、除都可以轉(zhuǎn)換加法運(yùn)算。1.3.4 二進(jìn)制數(shù)的邏輯運(yùn)算1邏輯與運(yùn)算運(yùn)算規(guī)則 000 ;010;100;111 記憶口訣:有0為0,全1為1。2邏輯或運(yùn)算運(yùn)算規(guī)則 000 ;011;101;111記憶口訣:有1為1,全0為0。3邏輯異或運(yùn)算運(yùn)算規(guī)則 000 ;011;101;110 記憶口訣:相同為0,不同為1(僅指兩位異或運(yùn)算)。4邏輯非運(yùn)算運(yùn)算規(guī)則記憶口訣:取反。1.3.5
12、計(jì)算機(jī)中數(shù)的表示與編碼1計(jì)算機(jī)中數(shù)的表示在計(jì)算機(jī)中,為了運(yùn)算的方便,數(shù)的最高位用來表示正、負(fù)數(shù)。最高位為“0”表示正數(shù),最高位為“1”表示負(fù)數(shù)。真值:帶“+、”號的數(shù)。機(jī)器數(shù):數(shù)碼化了的帶符號數(shù)。【例】正數(shù)59H真值和機(jī)器數(shù)表示法。解:真值的表示法:+101 1001B或+59H 機(jī)器數(shù)表示法:0101 1001B或 59H【例】-59H真值和機(jī)器數(shù)表示法。解:真值的表示法:-101 1001B或-59H 機(jī)器數(shù)表示法:1101 1001B或 D9H微型計(jì)算機(jī)中一個(gè)符號數(shù)的機(jī)器數(shù)的表示方法有原碼、反碼、補(bǔ)碼等三種表示法。原碼:用最高位表示符號位,后面各位表示該數(shù)的絕對值。(注意:符號位:0代表
13、,1代表-)【例】 (56 )原碼0011 1000B38H (56 )原碼1011 1000BB8H從例題中可以看出:一個(gè)負(fù)數(shù)的原碼只要在其對應(yīng)的正數(shù)原碼基礎(chǔ)上加80H就可以方便地求出其原碼。 (56)原碼(56)原碼80H38H80HB8H反碼:正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上,保留符號位不變,數(shù)值位各位取反?!纠?(56 )反碼0011 1000B38H (56 )反碼1100 0111BC7H從例題中可以看出:一個(gè)負(fù)數(shù)的反碼只要在其對應(yīng)的正數(shù)反碼(即原碼)基礎(chǔ)上各位取反就可以方便地求出其反碼。而取反的方法也很簡單,只要用FFH去減該數(shù)即可。 (56)反碼FFH-(5
14、6)原碼FFH-38HC7HWhy?補(bǔ)碼:正數(shù)的補(bǔ)碼與原碼、反碼相同;負(fù)數(shù)的補(bǔ)碼是在其反碼的基礎(chǔ)上加1即可?!纠?(56 )補(bǔ)碼0011 1000B38H (56 )補(bǔ)碼(56)反碼1C7H1C8H從求反碼的方法中可以推導(dǎo): (56 )補(bǔ)碼(56)反碼1 FFH-(56)原碼1 100H- (56)原碼100H-38H=C8H負(fù)數(shù)原碼、反碼、補(bǔ)碼求法歸納:(負(fù)數(shù))原碼(對應(yīng)正數(shù))原碼80H(負(fù)數(shù))反碼FFH(對應(yīng)正數(shù))原碼(負(fù)數(shù))補(bǔ)碼100H(對應(yīng)正數(shù))原碼注意:在原碼和反碼,0有兩種表示法,即0和0的表示法不同;而在補(bǔ)碼中0的表示法只有一種。2.二進(jìn)制編碼BCD碼:用二進(jìn)制數(shù)表示的十進(jìn)制數(shù)
15、稱為二進(jìn)制編碼的十進(jìn)制數(shù)。 非壓縮BCD碼:8位碼表示1位十進(jìn)制數(shù)(高4位填0)的編碼。 壓縮的BCD碼:8位碼表示2位十進(jìn)制數(shù)(高4位、低4位各代表一位十進(jìn)制數(shù))。 非法碼:4位代碼在1010B1111B范圍時(shí)。( 2個(gè)BCD碼的運(yùn)算可能出現(xiàn)非法碼,這時(shí)要對所得結(jié)果進(jìn)行調(diào)整。)ASCII碼:美國標(biāo)準(zhǔn)信息交換碼(即ASCII碼)。字符09的ASCII碼:30H39H大寫英文字母AZ的ASCII碼:41H5AH小寫英文字母az的ASCII碼:61H7AH本章小結(jié)微型計(jì)算機(jī)的基本結(jié)構(gòu)和常用術(shù)語單片機(jī)的概念單片機(jī)的特點(diǎn)及應(yīng)用場合計(jì)算機(jī)不同中數(shù)制及相互轉(zhuǎn)換二進(jìn)制數(shù)的自述運(yùn)算和邏輯運(yùn)算符號數(shù)的表示形式:
16、原碼、反碼、補(bǔ)碼BCD碼和ASCII碼第2章 MCS-51系列單片機(jī)的結(jié)構(gòu)和時(shí)序本章重點(diǎn):了解51系列單片機(jī)基本結(jié)構(gòu); 了解51系列單片機(jī)的引腳名稱及功能; 掌握存儲器(內(nèi)RAM)結(jié)構(gòu); 掌握PSW寄存器各位名稱及功能; 掌握復(fù)位后PC、PSW的狀態(tài)。2.1 MCS-51系列單片機(jī)的結(jié)構(gòu)與引腳2.2 MCS-51系列單片機(jī)的存儲器結(jié)構(gòu)2.3 MCS-51系列單片機(jī)的時(shí)鐘電路和時(shí)序2.4 MCS-51系列單片機(jī)的復(fù)位與掉電處理 本章小結(jié)2.1 MCS-51系列單片機(jī)的結(jié)構(gòu)與引腳2.1.1 MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)8031無2.1.2 MCS-51系列單片機(jī)內(nèi)部主要組成部分介紹1中央處理器
17、(CPU)(1)運(yùn)算器 運(yùn)算器由ALU(算術(shù)及邏輯運(yùn)算單元)、A(累加器)、B寄存器、PSW(程序狀態(tài)字寄存器)和暫存器等組成,主要功能用于實(shí)現(xiàn)算術(shù)運(yùn)算和邏輯運(yùn)算。 (2)控制器 控制器由程序計(jì)數(shù)器PC、指令寄存器、指令譯碼器、堆棧指針SP、數(shù)據(jù)指針DPTR、定時(shí)與控制邏輯電路等組成。單片機(jī)的執(zhí)行指令是在控制下進(jìn)行的。 程序計(jì)數(shù)器PC:是一個(gè)16位的專用寄存器,用來存放即將要執(zhí)行的指令地址,可對64KB的程序存儲器直接尋址。 注:PC沒有地址,是不可尋址的,因此用戶無法對它進(jìn)行直接讀寫。但可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,實(shí)現(xiàn)程序的轉(zhuǎn)移。指令寄存器 :指令寄存器是一個(gè)8位的寄存器,用于
18、暫存待執(zhí)行的指令代碼,等待譯碼。(2)控制器8051單片機(jī)中共有256個(gè)RAM單元,包括低128個(gè)單元(地址為00H7FH)的內(nèi)部RAM區(qū)和高128B(地址為80HFFH)的特殊功能寄存器區(qū)。8051單片機(jī)共有4KB的內(nèi)部ROM,用于存放程序或表格,稱為程序存儲器。2.內(nèi)部數(shù)據(jù)存儲器3.內(nèi)部程序存儲器四個(gè)雙向的8位并行I/O口,每個(gè)端口可以按字節(jié)輸入或輸出,每一條I/O線也可以單獨(dú)用作輸入或輸出。 8051片內(nèi)有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其他設(shè)備之間的串行數(shù)據(jù)傳送。4I/O端口5串行口 8051帶有2個(gè)16位的計(jì)數(shù)器,既可以作為定時(shí)器用于對被控系統(tǒng)進(jìn)行定時(shí)控制,也可以作為計(jì)數(shù)器用于產(chǎn)生
19、各種不同頻率的矩形波及用于測量脈沖寬度等。 8051單片機(jī)有5個(gè)中斷源,2個(gè)中斷優(yōu)先級。 6定時(shí)/計(jì)數(shù)器7中斷控制系統(tǒng)2.1.3 MCS-51系列單片機(jī)的引腳1. 電源線:VCC(+5V)、 VSS(地)2. 振蕩電路:XTAL1、XTAL23. 復(fù)位引腳:RST4. 并行口:P0、P1、P2、P35. EA:訪問程序存儲控制信號6. PSEN:外部ROM讀選通信號7. ALE:地址鎖存控制信號注:P0、P2、P3口還具有第二功能P0、P2、P3口的第二功能2.2 MCS-51系列單片機(jī)的存儲器結(jié)構(gòu)MCS-51單片機(jī)內(nèi)部有程序存儲器和數(shù)據(jù)存儲器兩大類。程序存儲器:用于存放程序和常數(shù)。ROM類存
20、儲器(4KB,但8031片內(nèi)無ROM)數(shù)據(jù)存儲器:MCS-51系列單片機(jī)的數(shù)據(jù)存儲器由片內(nèi)數(shù)據(jù)存儲器(采用8位二進(jìn)制數(shù)尋址),用于存放中間結(jié)果或暫存數(shù)據(jù),部分單元作為特殊功能寄存器。RAM類存儲器在物理結(jié)構(gòu)上分為四個(gè)存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。從邏輯上分為三個(gè)存儲器地址空間: 片內(nèi)、片外統(tǒng)一編址的64KB程序存儲器地址空間0000HFFFFH; 64KB的外部數(shù)據(jù)存儲器或擴(kuò)展I/O口地址空間0000HFFFFH; 256B的片內(nèi)數(shù)據(jù)存儲器地址空間00HFFH(包括低128B的內(nèi)部RAM地址00H7FH和高128B的特殊功能寄存器地址空間)。2.2.
21、1程序存儲器外部ROM60KB內(nèi)部ROM4KBEA1外部ROM4KBEA0FFFFH1000H0FFFH0000H0FFFH0000H注:程序存儲器用MOVC指令訪問2.2.2 數(shù)據(jù)存儲器特殊功能寄存器128B內(nèi)部RAM128B外部RAM64KBFFH80H7FH00HFFFFH0000H注1:用MOV指令讀寫注2:用MOVX指令讀寫內(nèi)部數(shù)據(jù)存儲器FFH80H7FH30H2FH20H1FH00H特殊功能寄存器SFR用戶RAM區(qū)位尋址區(qū)通用寄存器區(qū)1.通用寄存器區(qū)通用寄存器區(qū)共分4個(gè)區(qū),每個(gè)區(qū)有8個(gè)單元,每個(gè)區(qū)的8個(gè)單元從低地址到高地址分別命名為R0R7。復(fù)位后當(dāng)前工作寄存器區(qū)為0區(qū),可以通用對
22、PSW中的RS1、RS0的設(shè)置改變當(dāng)前工作寄存器區(qū)。 RS1 RS0 被選寄存器組 0 0 0區(qū) 0 1 1區(qū) 1 0 2區(qū) 1 1 3區(qū)R7R0R7R0R7R0R7R6R5R4R3R2R1R01FH|18H17H|10H0FH|08H07H06H05H04H03H02H01H00H3區(qū)2區(qū)1區(qū)0區(qū)2.位尋址區(qū)字節(jié)地址為20H2FH,既可作RAM,也可位操作共有16個(gè)RAM單元,共128位,位地址為00H7FH。注意:雖然位地址和字節(jié)地址的表現(xiàn)形式可以一樣,但因?yàn)槲徊僮髋c字節(jié)操作的指令不同,所以不會混淆。 2.位尋址區(qū)字節(jié)地址位地址D7D6D5D4D3D2D1D02FH7FH7EH7DH7CH
23、7BH7AH79H78H2EH77H76H75H74H73H72H71H70H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H3. 通用RAM區(qū):也稱用戶RAM區(qū)。在該區(qū)域內(nèi),只能進(jìn)行字節(jié)尋址。A、堆棧(Stack)是按照“先進(jìn)后出,后進(jìn)先出”的原則來存取數(shù)據(jù)的一個(gè)內(nèi)部RAM區(qū)域,這個(gè)存儲器區(qū)域的一端是固定的,另一端是活動(dòng)的,每個(gè)存儲單元是不能按字節(jié)任意訪問的。B、在使用堆棧之前,應(yīng)規(guī)定堆棧的起始位置(固定端),稱為棧底。堆棧最后壓入或即將彈出數(shù)據(jù)的單元(活動(dòng)端),稱棧頂。67HA
24、3H46H棧底PUSH指令POP指令SP堆棧指針4. 特殊功能寄存器21個(gè)SFR的地址離散地分部在內(nèi)部數(shù)據(jù)存儲器的80HFFH地址空間。SFR占用21個(gè)單元,其余的大部分是空余單元,它們沒有定義不能作內(nèi)部RAM使用。有11個(gè)SFR具有位地址,可以進(jìn)行位尋址,對應(yīng)的位也有位名稱,它們的字節(jié)地址正好能被8整除。4. 特殊功能寄存器1)累加器ACC:最常用的8位特殊功能寄存器,大部分指令的操作數(shù)取自于ACC,許多運(yùn)算結(jié)果也存放在ACC中。A是累加器ACC的助記符。2)B寄存器:一個(gè)8位寄存器,主要用于乘法和除法操作。在其他指令中,作為一般的內(nèi)部RAM使用。3)程序狀態(tài)字寄存器PSW:一個(gè)8位的寄存器
25、,用于存放程序運(yùn)行中的各種狀態(tài)信息。 CyACF0RS1RS0OVPPSWCy:進(jìn)位標(biāo)志位。在進(jìn)行加(或減)法運(yùn)算時(shí),若操作結(jié)果的最高位(D7位)有進(jìn)位(或借位)時(shí),Cy =1;否則Cy=0。AC:輔助進(jìn)位標(biāo)志位。在進(jìn)行加(或減)運(yùn)算時(shí),若操作結(jié)果的低半字節(jié)(D3位)向高半字節(jié)產(chǎn)生進(jìn)位(或借位)時(shí),AC=1;否則AC=0。 F0:用戶標(biāo)志位。RS1、RS0:當(dāng)前工作寄存器區(qū)選擇位。OV:溢出標(biāo)志位。當(dāng)進(jìn)行補(bǔ)碼運(yùn)算時(shí),運(yùn)算結(jié)果超出-128127范圍時(shí),即溢出,則OV=1;沒有溢出,則OV=0。 出現(xiàn)下列情況即為溢出(運(yùn)算后OV1):正數(shù)加正數(shù)為負(fù)數(shù);負(fù)數(shù)加負(fù)數(shù)為正數(shù);正數(shù)減負(fù)數(shù)為負(fù)數(shù);負(fù)數(shù)減正數(shù)
26、為正數(shù);乘法時(shí)結(jié)果B0;除法運(yùn)算時(shí)除數(shù)為0。P:奇偶校驗(yàn)標(biāo)志位。每條指令執(zhí)行完后,該位始終跟蹤累加器A中1的數(shù)目的奇偶性。如果A中有奇數(shù)個(gè)1,則P1;否則P0?!纠咳鬉96H,執(zhí)行ADD A,#84H后,判斷Cy、AC、OV、P的狀態(tài)。解:執(zhí)行該指令 A 96H + 84H A 1AH0001 1010B Cy=1,AC=0,OV=1,P=1【例】若A36H,執(zhí)行ADD A,#3BH后,則: A71H,Cy=0,AC=1,OV=0,P=0負(fù)數(shù)負(fù)數(shù)正數(shù)Why?4)堆棧指針SP:用于存放當(dāng)前堆棧操作的單元地址,并根據(jù)入棧指令(PUSH)或出棧指令(POP)修改其內(nèi)容,SP始終指向棧頂。系統(tǒng)復(fù)位后
27、,SP初始化為07H。5)數(shù)據(jù)指針DPTR:DPTR可以作為一個(gè)16位SFR使用,也可以作為兩個(gè)獨(dú)立的8位寄存器DPH和DPL來使用,其中DPH為8位,DPL為低8位。 如:DPH34H,DPLA6H,則DPTR34A6H。6)I/O端口鎖存器P0P3:P0P3為四個(gè)8位的特殊功能寄存器,它們有字節(jié)地址和位地址。當(dāng)I/O端口某一位用于輸入時(shí),必須在相應(yīng)口鎖存器的對應(yīng)位先寫入1。7)其它的SFR有:TMOD、TCON、T0(TH0和TL0組成)、T1(由TH1和TL1組成)、IE、IP、SCON、SBUF、PCON等。2.3 MCS-51單片機(jī)的時(shí)鐘電路和時(shí)序2.3.1 振蕩器和時(shí)鐘電路時(shí)鐘頻率
28、范圍要求在1.2MHz12MHz之間。內(nèi)部振蕩器方式外部引入方式XTAL1單片機(jī)XTAL2 內(nèi)部振蕩器方式外部引入方式1。.。XTAL2單片機(jī)XTAL1 外部時(shí)鐘源+5V2.3.2 時(shí)序單位時(shí)鐘周期(又稱為振蕩周期):是指振蕩器產(chǎn)生一個(gè)振蕩脈沖信號所用的時(shí)間,是振蕩頻率的倒數(shù),稱為拍節(jié)。狀態(tài)周期:振蕩脈沖信號經(jīng)過內(nèi)部時(shí)鐘電路二分頻之后產(chǎn)生的單片機(jī)時(shí)鐘信號的周期(用S表示)稱為狀態(tài)周期。機(jī)器周期:是指CPU完成某一個(gè)規(guī)定操作所需的時(shí)間。MCS-51單片機(jī)的一個(gè)機(jī)器周期包含6個(gè)狀態(tài),并依次表示為S1S6,每個(gè)狀態(tài)分為2個(gè)節(jié)拍。依次表示為:S1P1、S1P2、S2P1、S6P1、S6P2。指令周期:
29、CPU執(zhí)行一條指令所需要的時(shí)間稱為指令周期。MCS-51單片機(jī)指令周期根據(jù)指令的不同,可包含有1或2或4個(gè)機(jī)器周期。不同晶振頻率下的各周期情況2.4 MCS-51單片機(jī)的復(fù)位與掉電處理2.4.1 復(fù)位與復(fù)位電路復(fù)位1.復(fù)位條件:RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩脈沖周期(即二個(gè)機(jī)器周期)以上。 【例】若使用頻率為6MHz的晶振,則復(fù)位信號持續(xù)時(shí)間至少為多少s?解:fosc=6MHz MC=12/fosc=12/6MHz=2s t= 4s 所以復(fù)位信號至少持續(xù)4s。復(fù)位后寄存器的狀態(tài)寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)PC0000HTCON00HACC00HT
30、H000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0P3FFHSCON00HIP000000BSBUF不定IE000000BPCON0B(NMOS)TMOD00H00000B(CHMOS)復(fù)位電路上電復(fù)位手動(dòng)電平復(fù)位手動(dòng)脈沖復(fù)位2.4.2 掉電處理掉電保護(hù)方式 當(dāng)遇到單片機(jī)掉電時(shí),可以把HMOS型的8051單片機(jī)的RST/VPD引腳作為備用電源端,只要Vcc上的電壓低于VPD上的電壓時(shí),備用電源通過VPD端給內(nèi)部RAM供電,以低功耗保持內(nèi)部RAM中的數(shù)據(jù)。掉電保護(hù)電路2.4.2 掉電處理節(jié)電工作方式由片內(nèi)SFR中的電源控制寄存器PCON的低4位來控制待機(jī)和
31、掉電兩種方式,其格式如下:位D7D6D5D4D3D2D1D0位名稱SMODGF1GF0PDIDLIDL:待機(jī)方式位。若IDL1,進(jìn)入待機(jī)方式;PD:掉電方式位。若PD1,進(jìn)入掉電方式;GF1、GF0:通用標(biāo)志位。由用戶置位或復(fù)位;SMOD:串行口波特率加倍位。當(dāng)PD和IDL同時(shí)為1,則先進(jìn)入掉電工作方式。復(fù)位后,PCON中有定義的位均為0。 只有CHMOS型單片機(jī)(如80C51)才有節(jié)電工作方式,有兩種節(jié)電方式即待機(jī)和掉電保護(hù)方式。本章小結(jié)內(nèi)部數(shù)據(jù)存儲器結(jié)構(gòu)當(dāng)前工作寄存器組如何選擇堆棧的定義ACC、B、DPTR、SP等SFR的名稱及功能程序狀態(tài)字PSW各位名稱及功能時(shí)鐘電路復(fù)位狀態(tài)及復(fù)位電路第
32、3章 MCS-51系列單片機(jī)指令系統(tǒng)本章重點(diǎn):掌握匯編指令的基本格式; 掌握51系列單片機(jī)的尋址方式; 掌握51系列單片機(jī)的各指令; 能閱讀程序并能編寫簡單程序。3.1 指令系統(tǒng)簡介3.2 尋址方式3.3 MCS-51系列單片機(jī)指令系統(tǒng)3.4 匯編語言程序設(shè)計(jì)本章小結(jié)3.1 指令系統(tǒng)簡介3.1.1 指令的基本格式 匯編語言指令格式 標(biāo)號:操作碼 第一操作數(shù),第二操作數(shù),第三操作數(shù);注釋說明:帶有方括號的部分代表可選項(xiàng)?!纠?LOOP:MOV A,31H ;將立即數(shù)31H送累加器A中操作碼第一操作數(shù)第二操作數(shù)標(biāo)號注釋機(jī)器語言指令格式(1)單字節(jié)指令格式:操作碼【例】匯編語言指令 ADD A,R
33、0 對應(yīng)的機(jī)器語言是: 28(2)雙字節(jié)指令格式:操作碼操作數(shù)【例】匯編語言指令 ADD A,31H 對應(yīng)的機(jī)器語言是: 24 31(3)三字節(jié)指令格式:操作碼 第一操作數(shù) 第二操作數(shù)【例】匯編語言指令 MOV 30H,7AH 對應(yīng)的機(jī)器語言是: 75 30 7A3.1.2 單片機(jī)指令分類數(shù)據(jù)傳送指令:是將數(shù)據(jù)從一個(gè)(塊)存儲地方傳送到另一個(gè)(塊)地方的傳送,原存儲地方數(shù)據(jù)不變。算術(shù)運(yùn)算指令:是對數(shù)據(jù)進(jìn)行加法、減法、乘法、除法、加1、減1以及十進(jìn)制調(diào)整指令。邏輯運(yùn)算指令:是對數(shù)據(jù)進(jìn)行與、或、異或、非及移位操作??刂妻D(zhuǎn)移指令:是實(shí)現(xiàn)程序的轉(zhuǎn)移或子程序的調(diào)用。位操作指令 :是對數(shù)據(jù)的某一位進(jìn)行操作
34、,包括置1、清零、位傳送及位的邏輯運(yùn)算。3.1.3 指令系統(tǒng)中的常用符號Rn:07,代表工作寄存器R0R7。Ri:代表工作寄存器Ri間接尋址8位存儲單元,存儲單元地址00HFFH。其中0、1,Ri代表工作寄存器R0、R1。direct:代表8位地址,該8位地址可以是內(nèi)RAM的任何一個(gè)地址(00H7FH),也可以為SFR(特殊功能寄存器)中的任何一個(gè)(80HFFH)。data:為8位的立即數(shù),該數(shù)為真正參與運(yùn)算或傳送的數(shù)據(jù)。data16:為16位的立即數(shù),該數(shù)為參與傳送的數(shù)據(jù)。addr16:為16位目的地址,用于LCALL、LJMP二個(gè)指令中,可以實(shí)現(xiàn)在64K程序存儲器范圍內(nèi)調(diào)用子程序或轉(zhuǎn)移。a
35、ddr11:為11位目的地址,用于ACALL、AJMP二個(gè)指令中,可以實(shí)現(xiàn)在下條指令地址所在的2K范圍內(nèi)調(diào)用子程序或轉(zhuǎn)移。rel:為帶符號的8位偏移地址,用于SJMP和所有的條件轉(zhuǎn)移指令,可以在下條指令地址所在的-128+127的程序存儲器范圍內(nèi)轉(zhuǎn)移。DPTR:數(shù)據(jù)指針,可用作16位地址寄存器。A:累加器ACC。B:通用寄存器,主要用于乘法MUL和除法DIV指令中。Cy:代表進(jìn)位標(biāo)志位或在布爾處理器中的累加器。bit:位地址。片內(nèi)RAM中的位尋址單元及SFR中的可尋址位。/bit:在位操作指令中,表示對該位(bit)先取反,再進(jìn)行傳送或運(yùn)算,不改變該位(bit)的原值。 3.2 尋址方式 尋址
36、就是尋找操作數(shù)的地址,尋找操作數(shù)地址的方式,稱為操作數(shù)地址的尋址方式,簡稱尋址方式。 3.2.1 立即尋址方式 立即尋址方式就是指令中直接給出操作數(shù)的尋址方式。其特征是操作數(shù)前帶有“”,指令中的操作數(shù)也稱為立即數(shù)?!纠?MOVA,7AH 上述指令將數(shù)7AH送到A中 執(zhí)行后A7AH,過程如右圖。6DHA7AH立即數(shù)3.2.2 直接尋址方式 直接尋址方式就是指令中給出操作數(shù)地址的尋址方式,即指令中給出的數(shù)據(jù)作為地址,該地址對應(yīng)存儲單元中的數(shù)據(jù)才是真正的操作數(shù)。【例】 設(shè)內(nèi)RAM 7AH單元中的內(nèi)容為6DH,則執(zhí)行指令 MOV A,7AH 后,A中的內(nèi)容為6DH,即A6DH43H14H7BH7AH
37、A6DH6DH注意:7AH單元中的數(shù)據(jù)沒有變化3.2.3 寄存器尋址方式 寄存器尋址方式就是對指令中指出的某一寄存器中的數(shù)作為操作數(shù)的尋址方式?!纠?如果R1=56H,則執(zhí)行指令 MOV A,R1 后,累加器A=56H。93H14H6BHA3HR3R2R1R0A56H56HR1中的內(nèi)容沒有變3.2.4 寄存器間接尋址方式 寄存器間接尋址方式就是將指令指定的寄存器中的內(nèi)容作為地址,將該地址所對應(yīng)的存儲單元中的數(shù)據(jù)作為真正參與運(yùn)算或傳送的操作數(shù)的尋址方式。寄存器間接尋址也簡稱寄存器間址。注意:與寄存器尋址方式的格式不同在于寄存器前加。93H【例】 如果R0=30H,(30H)=B3H,則執(zhí)行指令
38、 MOV A,R0后, A=B3H。指令 MOV A,R0 的工作過程示意點(diǎn)擊頁面。14HB3H30H31H30HR0AB3H3.2.5 變址尋址方式 變址尋址方式就是將指令指定的變址寄存器和基址寄存器的內(nèi)容相加形成操作數(shù)地址的尋址方式?!纠咳绻鸄=30H,DPTR=2000H,(2030H)=45H,執(zhí)行指令 MOVC A, A+DPTR是將累加器A中的內(nèi)容與DPTR中的內(nèi)容相加,其和作為程序存儲器的地址,找到程序存儲器中該地址所對應(yīng)的單元,將該單元中的內(nèi)容送累加器A中。 30H00H00H20上例指令 MOVC A, A+DPTR 的工作過程點(diǎn)擊頁面。20H30HDPHDPLA2030H
39、3DHB5H2031H202FH20H00H93H93H3.2.6 相對尋址方式 相對尋址方式就是將程序計(jì)數(shù)器PC當(dāng)前的值(執(zhí)行本指令后的PC值)加上指令中給出的相對偏移量rel形成程序轉(zhuǎn)移的目的地址賦值給PC,這種尋址方式就稱為相對尋址方式。相對偏移量rel用補(bǔ)碼表示,其范圍為-128+127?!纠?如果當(dāng)前PC2030H,則執(zhí)行指令 SJMP 0A3H后, PC=2030H20A3H(補(bǔ)碼,其值是負(fù)的) =1FD5H即程序轉(zhuǎn)到1FD5H處取指、執(zhí)行。 注意:在相對尋址方式時(shí),在rel為正數(shù)和負(fù)數(shù)兩種不同情況下,目的地址PC的求法可以用下列不同的公式求:當(dāng)rel為正數(shù)時(shí), PC目的PC當(dāng)前
40、當(dāng)前指令字節(jié)數(shù)rel當(dāng)rel為負(fù)數(shù)時(shí), PC目的PC當(dāng)前當(dāng)前指令字節(jié)數(shù)rel100H在人工匯編時(shí),往往知道PC目的和PC當(dāng)前,需要求rel,如果PC目的PC當(dāng)前,采用第一個(gè)公式;如果PC目的PC當(dāng)前,采用第二個(gè)公式。3.2.7 位尋址方式 位尋址就是對內(nèi)部RAM和特殊功能寄存器的可尋址位的內(nèi)容進(jìn)行操作的尋址方式。這種尋址方式只是對指令指定的1位進(jìn)行操作,其尋址方式與直接尋址方式相同?!纠咳绻鸄74H,則執(zhí)行指令 SETB ACC.3后,A7CH,見下圖。執(zhí)行前A01110100執(zhí)行后A011111003.3 MCS51系列單片機(jī)指令系統(tǒng)3.3.1 數(shù)據(jù)傳送指令1.內(nèi)部RAM中一般數(shù)據(jù)傳送指令
41、 這類數(shù)據(jù)傳送指令的格式為: MOV目的操作數(shù),源操作數(shù)該指令的功能將源操作數(shù)傳送到目的操作數(shù)中,而源操作數(shù)中的數(shù)據(jù)保持不變。 即:(目的地址)(源地址)或立即數(shù) 數(shù)據(jù)傳送指令對PSW一般沒有影響,但如果目的單元為A,則影響PSW中的P標(biāo)志位。(1)以累加器為目的的數(shù)據(jù)傳送指令 1) MOVA,Rn ;ARn,n=07 2) MOVA,Ri ;A(Ri),i=0,1 3) MOVA,direct ;A(direct) 4) MOVA,data ;A93H1)指令:MOVA ,Rn ;ARn,n=07功能:該指令是將寄存器Rn中的內(nèi)容送到累加器中,Rn中的內(nèi)容保持不變?!纠咳绻?dāng)前R0=56H
42、,A=93H,則執(zhí)行指令: MOV A,R0 結(jié)果:A=56H14H6BHA3H56HR3R2R1R0A56H93H2)指令:MOVA ,Ri ;A(Ri),i=0,1功能:該指令是將寄存器Ri中的內(nèi)容作為數(shù)據(jù)存儲器的地址,將該地址對應(yīng)單元中的內(nèi)容送到累加器中,該單元及Ri中的內(nèi)容保持不變?!纠咳绻?dāng)前R0=30H,(30H)=0B3H,A=93H,執(zhí)行指令: MOV A,R0 結(jié)果:B314HB3H30H31H30HR0AB3H43H3)指令:MOVA,direct ;A(direct)功能:該指令是將數(shù)據(jù)存儲器地址為direct單元中的內(nèi)容送到累加器中,該單元中的內(nèi)容保持不變?!纠咳绻?/p>
43、當(dāng)前(40H)=6DH,A=43H,則執(zhí)行指令: MOVA,40H結(jié)果:6D14H6DH41H40HA6DH43H4)指令:MOVA,data ;Adata功能:該指令是將立即數(shù)data送到累加器中。注意:與MOVA,direct的形式與功能的區(qū)別 【例】如果當(dāng)前A=43H,則執(zhí)行指令: MOVA,#40H結(jié)果:A=40H14H6DH41H40HA40H立即數(shù)(2)以寄存器Rn為目的的數(shù)據(jù)傳送指令 1) MOVRn,A ;RnA,n=07 2) MOVRn,direct ;Rn(direct) 3) MOVRn,data ;RA3H93H1)指令:MOVRn,A ;RnA ,n=07功能:該指
44、令是將累加器中的內(nèi)容送到寄存器Rn中,中的內(nèi)容保持不變?!纠咳绻?dāng)前R1A3H,A=93H,則執(zhí)行指令: MOVR1,A結(jié)果: R19314H6BH56HR3R2R1R0A93H6DHB3H2)指令:MOVRn,direct ;Rn(direct)功能:該指令是將數(shù)據(jù)存儲器地址為direct單元中的內(nèi)容送到Rn中,該單元中的內(nèi)容保持不變?!纠咳绻?dāng)前(41H)=73H,R1=6DH,則執(zhí)行指令: MOVR1,41H結(jié)果:R17314H6DH78HR2R1R042H73H41HA3H40H73H6DHB3H3)指令:MOVRn,data ;Rndata功能:該指令是將立即數(shù)data送到寄存器
45、Rn中?!纠咳绻?dāng)前(41H)=73H,R1=6DH,則執(zhí)行指令: MOVR1,#40H結(jié)果:R14014H6DH78HR2R1R042H40H41HA3H40H73H立即數(shù)(3)以直接地址為目的的數(shù)據(jù)傳送指令 1) MOVdirect,A ;(direct)A 2) MOVdirect,Rn ;(direct)Rn 3) MOVdirect,Ri;(direct)(Ri) 4) MOVdirect,data ;(direct)data 5) MOVdirect1,direct2 ;(direct1)(direct2)B3H93H1)指令:MOVdirect,A ;(direct)A 功能:
46、該指令是將累加器的內(nèi)容送到地址為direct的數(shù)據(jù)存儲器單元中,累加器中的內(nèi)容保持不變?!纠咳绻?dāng)前內(nèi)存情況如圖所示,執(zhí)行指令: MOV30H,A 結(jié)果:(30H)=93H14H30H31H30HR0A93HB3H2)指令:MOVdirect,Rn ;(direct)Rn,n=0-7功能:該指令是將寄存器Rn的內(nèi)容送到地址為direct的數(shù)據(jù)存儲器單元中,寄存器Rn中的內(nèi)容保持不變。【例】如果當(dāng)前內(nèi)存情況如圖所示,執(zhí)行指令: MOV30H,R0 結(jié)果:(30H)=30H14H30H31H30HR030H3)指令:MOVdirect,Ri ;(direct)(Ri),i=0,1功能:該指令是將
47、寄存器Ri的內(nèi)容作為地址,該地址所對應(yīng)內(nèi)存單元中的數(shù)據(jù)送到地址為direct的內(nèi)存單元中。【例】如果當(dāng)前內(nèi)存情況如圖所示,執(zhí)行指令: MOV31H,R0 結(jié)果:(31H)=0B3H14HB3H31H30HR030HB3H73HB3H4)指令: MOVdirect,data ;(direct)data功能:該指令是將立即數(shù)data送到地址為direct的內(nèi)存單元中。【例】如果當(dāng)前(41H)=73H,則執(zhí)行指令: MOV41H,#40H結(jié)果:(41H)4042H40H41HA3H40H立即數(shù)5)指令:MOV direct1,direct2;(direct1)(direct2)功能:該指令是將內(nèi)存單
48、元地址為direct2的單元中的數(shù)據(jù)送到地址為direct1的內(nèi)存單元中?!纠咳绻?dāng)前內(nèi)存情況如圖所示,執(zhí)行指令: MOV31H,30H 結(jié)果:(31H)=0B3H14HB3H31H30HR030HB3H(4)以寄存器間址Ri為目的的數(shù)據(jù)傳送指令 1) MOVRi,A ;(Ri)A,i=0,1 2) MOVRi,direct ;(Ri)(direct) 3) MOVRi,data ;(Ri)B3H93H1)指令: MOVRi,A ;(Ri)A,i=0, 功能:該指令是將累加器的內(nèi)容送到以寄存器i中的數(shù)據(jù)作為地址對應(yīng)的數(shù)據(jù)存儲器單元中,累加器中的內(nèi)容保持不變?!纠咳绻?dāng)前R030H,(30H
49、)=0B3H,A=93H,則執(zhí)行指令: MOVR0,A 結(jié)果:(R0)93H 即(30H)93H 而 R0=30H14H30H31H30HR0A93HB3H2)指令: MOVRi,direct;(Ri)(direct)功能:該指令是將數(shù)據(jù)存儲器地址為direct單元中的內(nèi)容送到以寄存器i中的數(shù)據(jù)作為地址對應(yīng)的數(shù)據(jù)存儲器單元中,原單元中的內(nèi)容保持不變。【例】如果當(dāng)前R0=30H,(30H)=0B3H,(31H)=14H,則執(zhí)行指令: MOVR0,31H 結(jié)果:(R0)=14H 即:(30H)=14H 而 R0=30H14H30H31H30HR014H73HB3H3)指令: MOVRi,data
50、;(Ri)data功能:該指令是將立即數(shù)data送到以寄存器i中的數(shù)據(jù)作為地址對應(yīng)的數(shù)據(jù)存儲器單元中?!纠咳绻?dāng)前R1=41H,(41H)=73H,則執(zhí)行指令: MOVR1,#40H結(jié)果:(R1)40 即:(41H)=40H 而:R141H41H78HR1R042H40H41HA3H40H立即數(shù)2. 16位數(shù)據(jù)傳送指令 MOVDPTR,#data16;DPTRdata16功能說明:該指令是將16位數(shù)據(jù)送到數(shù)據(jù)指針DPTR中,其中數(shù)據(jù)的高8位送到DPH中,而數(shù)據(jù)的低8位送到DPL中。【例】如果當(dāng)前DPTR2000H,執(zhí)行指令: MOVDPTR,236BH結(jié)果:DPTR236BH 即:DPH23
51、H,DPL6BH3.累加器與外部數(shù)據(jù)存儲器的數(shù)據(jù)傳送指令(1)以Ri為間址寄存器 1) MOVXA,Ri ; A (Ri)外RAM 2) MOVXRi,A ; (Ri)外RAM A說明:第一條指令是將Ri中的8位數(shù)據(jù)作為低8位地址所對應(yīng)的外RAM單元中的內(nèi)容送到累加器A中;第二條指令是將累加器A中的內(nèi)容送到Ri中的8位數(shù)據(jù)作為低8位地址所對應(yīng)的外RAM單元中。 由于外RAM一般由16位地址構(gòu)成,因此應(yīng)用上述兩條指令時(shí),需要先將高8位地址通過P2口送出,然后執(zhí)行上述兩條指令。Ri中的數(shù)據(jù)作為低8位地址,通過P0口送出。(2)以DPTR為間址寄存器 1) MOVXA,DPTR ; A (DPTR)
52、外RAM 2) MOVXDPTR,A ; (DPTR)外RAM A說明:第一條指令是將DPTR中的16位數(shù)據(jù)作為地址,其所對應(yīng)的外RAM單元中的內(nèi)容送到累加器A中;第二條指令是將累加器A中的內(nèi)容送到DPTR中的16位數(shù)據(jù)作為地址所對應(yīng)的外RAM單元中。 DPTR提供的是16位數(shù)據(jù),其中高8位通過P2口送出,低8位通過P0口送出?!纠咳绻獙?nèi)存30H單元中的數(shù)據(jù)送到外RAM 3000單元中,請編寫指令。 MOV P2,30H MOV A,30H MOV R0,#00H MOVX R0,A或者 MOV A,30H MOV DPTR,#3000H MOVX DPTR,A【例】如果要將外RAM 2
53、340H單元中數(shù)據(jù)讀到內(nèi)存50H單元中,請編寫指令。 MOV P2,23H MOV R0,#40H MOVX A,R0 MOV 50H,A或者 MOV DPTR,#2340H MOVX A,DPTR MOV 50H,A 4.訪問程序存儲器指令(1)以DPTR作為基址寄存器 MOVCA,A+DPTR ; A (A+DPTR)ROM(2)以PC作為基址寄存器 MOVXA,A+PC ; PCPC+1,A (A+PC)ROM說明:上述兩條指令是將A中的8位無符號數(shù)與DPTR或PC中的16位無符號數(shù)相加形成16位地址,將該地址單元中的數(shù)據(jù)讀到累加器A中。 如果訪問外部程序存儲器(具體視EA及地址大小而定
54、),則高8位地址通過P2口送出,低8位地址通過P0口送出?!纠繄?zhí)行下面程序,則A為多少? ORG 2000H;偽指令,定義下列程序從2000H開始存放 MOV A,02H MOV DPTR,DATA MOVC A,A+DPTR RETDATA:11H,12H,13H由于在程序第一條賦給A的值是02H,第二條指令賦給DPTR的值是2007H,所以形成的地址是2009H,因此結(jié)果A13H。地址ROM2000H742001H022002H902003H202004H072005H932006H222007H112008H122009H13【例】執(zhí)行下面程序,則A為多少? ORG 2000H;偽指令
55、,定義下列程序從2000H開始存放 MOV A,02H MOVC A,A+PC RETDATA:11H,12H,13H,14H,15H由于在程序第一條賦給A的值是02H,第二條指令PC值為2002H,加1后PC為2003H再加A中的值02H,所以形成的地址是2005H,因此結(jié)果A12H。地址ROM2000H742001H022002H832003H222004H112005H122006H132007H142008H152009H5.堆棧操作指令(1)入棧指令 PUSH direct ;SPSP+1,(SP)(direct)(2)出棧指令 POP direct ;(direct)(SP),SP
56、SP-1說明:堆棧指令主要用于現(xiàn)場保護(hù),使用時(shí)必須遵循先進(jìn)后出原則。8CH3AH60H58H【例】當(dāng)前數(shù)據(jù)狀態(tài)如圖所示,點(diǎn)擊頁面,可以演示執(zhí)行指令PUSH時(shí)數(shù)據(jù)變化過程。 MOV SP,#70H PUSH A PUSH R33H45H3AH58HR0A71H73H07HSP70H71H72H70H72H3AH8CH58H33H60H【例】當(dāng)前數(shù)據(jù)狀態(tài)如圖所示,點(diǎn)擊頁面,可以演示執(zhí)行指令POP時(shí)數(shù)據(jù)變化過程。 MOV SP,#73H POP A POP R33H45H8CHR0A71H73H07HSP73H72H71H70H72H注意:堆棧指令用于現(xiàn)場保護(hù)時(shí),要成對出現(xiàn),并遵循先進(jìn)后出的規(guī)則。【
57、例】下列就是對A、R0進(jìn)行現(xiàn)場保護(hù)的中斷服務(wù)子程序。 PUSH A PUSH R0 POP R0 POP A RETI成對,呈嵌套6.數(shù)據(jù)交換指令(1)字節(jié)交換指令 1) XCH A,Rn ;A Rn 2) XCH A,direct;A (direct) 3) XCH A,Ri ;A (Ri)【例】當(dāng)前數(shù)據(jù)狀態(tài)如圖所示,點(diǎn)擊頁面,可以演示執(zhí)行指令XCH時(shí)數(shù)據(jù)變化過程。 1) XCH A,R0 2) XCH A,40H 3) XCH A,RR0A3AH58H40HA5BH3AH43H5BHXCH A,R0示意圖XCH A,40H示意圖R13DH30H30HA7CHXCH A,R1示意圖3DHBH
58、6.數(shù)據(jù)交換指令(2)半字節(jié)交換指令 1) XCHD A,Ri ;A3-0 (Ri)3-0 2) SWAP A;A7-4 A3-XCHD A,R0示意圖SWAP A示意圖A 7H40H64BHR040HAB110101017 - 43 - 03.3.2 算術(shù)運(yùn)算指令1.加法指令注意:加法指令將影響PSW中的Cy、AC、OV、P標(biāo)志位。(1)不帶進(jìn)位位加法指令 1) ADD A,Rn;AA+Rn 2) ADD A,Rn;AA+(Ri) 3) ADD A,direct;AA+(direct) 4) ADD A,#data;AA+【例】設(shè)當(dāng)前A7CH,R0=30H,R1=0D3H,(30H)=5BH
59、,分別執(zhí)行下列指令后,累加器A、標(biāo)志位Cy、AC、OV、P分別為多少? 1) ADD A,R1 2) ADD A,R0 3) ADD A,30H 4) ADD A,#30H解:1)A7CH0D3H4FH(進(jìn)位),Cy1,AC0,OV0,P1。 2)A7CH5BH0D7H,Cy0,AC1,OV1,P0。 3)A7CH5BH0D7H,Cy0,AC1,OV1,P0。 4)A7CH30H0ACH,Cy0,AC0,OV1,P0。(2)帶進(jìn)位位加法指令 1) ADDC A,Rn;AA+Rn+Cy 2) ADDC A,Rn;AA+(Ri)+Cy 3) ADDC A,direct;AA+(direct)+Cy
60、 4) ADDC A,#data;AA+data+Cy注意:帶進(jìn)位位加法指令必須加上Cy,因此必須考慮在程序執(zhí)行過程中Cy狀態(tài)的變化情況?!纠吭O(shè)當(dāng)前A7CH,R0=30H,R1=0D3H,(30H)=5BH,Cy=1,執(zhí)行下列程序后,累加器A、標(biāo)志位Cy、AC、OV、P為多少? ADDC A,R1 ADDC A,R0 ADDC A,30H ADDC A,#30H解:第一條指令:A7CH0D3H+Cy4FH+150H,Cy1 第二條指令:A50H5BHCy0ABH+10ACH,Cy0 第三條指令:A0ACH5BH+Cy07H+0=07H,Cy1 第四條指令:A07H30HCy37H138H所以
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《高原疾病防治知識》課件
- 2025年分期付款化妝品購買合同
- 2025年P(guān)PP項(xiàng)目合作物資保障協(xié)議
- 二零二五年海洋工程建設(shè)項(xiàng)目施工合同6篇
- 二零二五年度PVC管材綠色制造技術(shù)合作合同3篇
- 2025年度新能源發(fā)電項(xiàng)目租賃合同3篇
- 2025版學(xué)校圖書館古籍保護(hù)與展示工程合同3篇
- 二零二五年度航空航天器研發(fā)與測試合同4篇
- 2025年度住宅小區(qū)物業(yè)管理權(quán)轉(zhuǎn)讓與社區(qū)安全防范協(xié)議
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)經(jīng)營授權(quán)協(xié)議
- 2024年云南省中考數(shù)學(xué)試題含答案解析
- 國家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢病種診療方案和臨床路徑目錄
- 2024年全國甲卷高考化學(xué)試卷(真題+答案)
- 汽車修理廠管理方案
- 人教版小學(xué)數(shù)學(xué)一年級上冊小學(xué)生口算天天練
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 三年級數(shù)學(xué)添括號去括號加減簡便計(jì)算練習(xí)400道及答案
- 蘇教版五年級上冊數(shù)學(xué)簡便計(jì)算300題及答案
- 澳洲牛肉行業(yè)分析
- 計(jì)算機(jī)江蘇對口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
評論
0/150
提交評論