版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
電機微機測控及功率接口(一)
主講教師胡慧慧
2015年3月
課程介紹我校電氣專業(yè)目前主要有兩個研究方向:
◆電力電子與電氣傳動;
◆電力系統(tǒng)自動化;前者主要研究對象為大功率執(zhí)行部件,如電機等。而針對電機的自動控制主要采用單片機應用系統(tǒng)。為了將單片機和大功率被控對象的接口技術結合起來。從08年開設此系列課程,本學期講述第(一)部分,以研究單片機的基本原理和構造為主。下學期第(二)部分以介紹實際應用的接口技術為主。主要內容第一章單片機基礎第二章MCS-51單片機的硬件結構與原理第三章MCS-51指令系統(tǒng)第四章匯編語言程序設計第五章定時器/計數(shù)器與中斷系統(tǒng)第六章單片機系統(tǒng)擴展第七章MCS-51單片機系統(tǒng)配置及接口技術第八章串行通信技術
參考書目1、單片機原理與應用技術清華大學出版社2、單片機原理及應用哈爾濱工業(yè)大學出版社3、單片機原理及接口技術北京航空航天大學出版社4、MCS-51單片機及應用系統(tǒng)設計北京航空航天大學出版社
課程導學1、重視實踐環(huán)節(jié),本課程有12學時實驗環(huán)節(jié),結合實驗儀器,做到活學活用。2、強調平時作業(yè)和考勤。
3、注重答疑。聯(lián)系方式:47467586018254265787基礎B211第一章單片機基礎★
單片機的內部結構★
單片機的結構特點★
單片機的發(fā)展概況★
單片機的主要技術發(fā)展方向★
單片機的應用領域什么是單片機?單片機(Single-chip-Microcomputer)又稱單片微控制器,其基本結構是將微型計算機的基本功能部件:中央處理器(CPU)、存儲器、輸入/輸出接口、定時器/計數(shù)器、中斷系統(tǒng)等全部集成在一個半導體芯片上,也稱嵌入式微控制器。嵌入式微控制器大多工作在為特定用戶群專用設計的系統(tǒng)中,可將許多由板卡完成的任務集成在芯片內部,從而有利于嵌入式系統(tǒng)在設計時趨于小型化,還具有高效率和高可靠性的優(yōu)點。一、單片機的內部結構1、CPU單片機的核心部件,由運算部件和控制部件兩部分組成。(1)運算部件由算術邏輯運算單元、暫存寄存器、累加器、寄存器和程序狀態(tài)寄存器等組成,用于完成算術運算和邏輯運算功能。(2)控制部件由程序計數(shù)器PC、指令寄存器、指令譯碼器、振蕩器以及定時電路等組成,用于完成控制功能。2、存儲器(1)程序存儲器ROM用于存放編制好的程序和表格常數(shù)。(2)數(shù)據(jù)存儲器RAM用于存放程序運行中采集的數(shù)據(jù)和所需要的變量。擴充:★只讀存儲器ROM(readonlymemory)①掩膜只讀存儲器ROM:這種ROM中的信息是在芯片制造時由廠家用“掩膜”工藝寫入(固化)的,用戶在使用過程中無法改變其中的內容。②可編程只讀存儲器PROM:用戶可用專門設備將存儲信息寫入芯片中。一旦寫入即不能更改,且只能寫一次。③紫外線擦除可編程只讀存儲器EPROM:用戶可多次用紫外線照射的方式擦除已寫入的信息,并允許再重新寫入。④電擦除可編程只讀存儲器EEPROM:允許用戶寫入信息,并可用外加電壓擦除已寫入的信息,并允許再重新寫入。⑤閃存可編程/擦除只讀存儲器FPEROM:簡稱閃存(FlashMemory),信息在閃電式的一瞬間被存儲,之后即使除去電源,存儲器中信息仍可保留。閃存也是電擦除可重復編程存儲器,體積小、功耗低、不易受物理破壞,存儲密度高?!镫S機存取存儲器RAM(randomaccessmemory)正常工作時可隨時讀寫,但在系統(tǒng)斷電后,其內容會消失。3、I/O接口
I/O接口用以實現(xiàn)對外控制或信息的傳遞。(1)并行接口:在單片機和存儲器或外圍設備之間并行傳送8位數(shù)據(jù)信息。(2)串行接口:在單片機之間或單片機與外圍設備之間實現(xiàn)串行通信。單片機內部具有特殊功能的兩個部件,利用它們可實現(xiàn)對外事件的定時和計數(shù)控制功能。4、定時/計數(shù)器通過外接石英晶體產生頻率固定的時鐘脈沖,為單片機提供時鐘脈沖序列,用以協(xié)調指揮整個單片機的有序工作。5、時鐘電路(1)集成度高、體積小、重量輕;(2)抗擾能力強,可靠性高;(3)運行速度快、控制功能強;(4)開發(fā)使用方便,易于產品化;(5)具有優(yōu)異的性能價格比。二、單片機的結構特點三、單片機的發(fā)展概況□第二階段(1978-1982年):高性能單片機階段。這類單片機帶有串行I/O口,8位數(shù)據(jù)線、16位地址線(可以尋址的范圍達到64K字節(jié))、控制總線以及較豐富的指令系統(tǒng)等。其應用范圍較廣,并在不斷的改進和發(fā)展。單片機的發(fā)展歷史可劃分為四階段:□第一階段(1974-1978年):低性能單片機的探索階段。以公司的MCS-48為代表,采用單片結構,即在一塊芯片內含有8位CPU、定時/計數(shù)器、并行I/O口、RAM和ROM等。主要用于工業(yè)領域。□第三階段(1982-1990年):16位單片機階段。16位單片機除CPU為16位外,片內RAM和ROM容量進一步增大,實時處理能力更強,體現(xiàn)了微控制器的特征。例如Intel公司的MCS-96主振頻率為12M,片內RAM為232字節(jié),ROM為8K字節(jié),中斷處理能力為8級,片內帶有10位A/D轉換器和高速輸入/輸出部件等?!醯谒碾A段(1990年至今):微控制器的全面發(fā)展階段,各公司的產品在盡量兼容的同時,向高速、強運算能力、尋址范圍大以及小型廉價方面發(fā)展。四、單片機的主要技術發(fā)展方向(1)多功能:盡可能將存儲器、各種功能的I/O口都集成在一塊芯片中,即外圍器件內裝化。(2)高性能:使用RISC體系結構、并行流水線操作和DSP等的設計技術使單片機的指令運行速度大大提高,電磁兼容性能也更優(yōu)越。(3)全盤CMOS化:從第三代開始,淘汰非CMOS工藝。此舉會帶來本質低功耗和低功耗管理技術的快速發(fā)展。(4)推行串行擴展總線:可以顯著減少芯片的引腳數(shù)量,簡化系統(tǒng)結構。(5)閃存FlashROM的推廣。五、單片機的應用領域
1、在智能儀表上的應用
單片機廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、等各種物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強大。
目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。單片機廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇:
2、在工業(yè)控制中的應用
用單片機可以構成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統(tǒng),與計算機聯(lián)網(wǎng)構成二級控制系統(tǒng)等。
3、在家用電器中的應用
可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子稱量設備,五花八門,無所不在。
4、在計算機網(wǎng)絡和通信領域中的應用
現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進行數(shù)據(jù)通信,現(xiàn)在的通信設備基本上都實現(xiàn)了單片機智能控制,從手機,電話機、樓宇自動通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。
5、單片機在醫(yī)用設備領域中的應用
單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統(tǒng)等等。
6、在各種大型電器中的模塊化應用
某些專用單片機設計用于實現(xiàn)特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。在大型電路中,這種模塊化應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。
7、單片機在汽車設備領域中的應用
單片機在汽車電子中的應用非常廣泛,例如汽車中的發(fā)動機控制器,基于CAN總線的汽車發(fā)動機智能電子控制器,GPS導航系統(tǒng),abs防抱死系統(tǒng),制動系統(tǒng)等等。此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。單片機的應用正從根本上改變著傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分控制功能,現(xiàn)在已能使用單片機通過軟件方法實現(xiàn)了。這種以軟件取代硬件,并能提高系統(tǒng)性能的控制技術,稱之為微控制技術,這標志著一種全新概念的建立。結論MCS-51單片機(MicroControllorSystem)MCS-51是指由美國INTEL公司生產的一系列單片機的總稱。51系列單片機源于Intel公司的MCS—51系列,在Intel公司將MCS—51系列單片機實行技術開放政策之后,許多公司,如Philips、Siemens、Atmel、Dallas、華邦、LG等都以MCS—51中的基礎結構8051為基核推出了許多各具特色、具有優(yōu)異性能的單片機。這樣,把這些廠家以8051為基核推出的各種型號的兼容型單片機統(tǒng)稱為51系列單片機。這一系列單片機包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產品,該系列其它單片機都是在8051的基礎上進行功能的增、減、改變而來的,所以人們習慣于用8051來稱呼MCS-51系列單片機。
8051:內部包含4KB的ROM(片內掩膜)、128B的RAM、21個特殊功能寄存器、4個8位并行口、一個全雙工串行口、兩個16位定時器/計數(shù)器以及一個處理功能很強的中央處理器。8751:是以4KB的EPROM代替4KBROM的8051。8951:是以4KB的E2PROM或FlashROM代替4KBROM的8051。8031:是內部無ROM的8051。8031單片機必須外接ROM作為程序存儲器。MCS-51子系列
52子系列也包含4個產品,分別是51子系列的增強型。由于資源數(shù)量的增加,芯片的功能有所增強。片內ROM容量和RAM容量增加了一倍;定時器數(shù)目從2個增加到3個;中斷源從5個增加到6個等。
80C31/87C51/80C51:采用CMOS工藝適于電池供電或其它要求低功耗的場合。★
MCS-51單片機的結構與工作原理★
中央處理單元與時序
★
存儲器配置★
并行I/O端口★
復位及復位電路第二章MCS-51單片機的硬件結構與原理一、內部結構第一節(jié)
MCS-51單片機的結構與工作原理P0驅動器P2驅動器P0鎖存器P2鎖存器RAM地址寄存器256BRAM4KBROMB寄存器暫存器1暫存器2ACCSP程序地址寄存器緩沖器PC增1PCDPTR中斷、串行口和定時器PSWP1鎖存器P1驅動器P3鎖存器P3驅動器定時控制指令寄存器指令譯碼器OSCALUP0.0-P0.7P2.0-P2.7P3.0-P3.7P1.0-P1.7XTAL1
XTAL2PSENALEEARET由上圖可見,8051內部集成有如下功能部件:1)8位中央處理器CPU2)4KB程序存儲器ROM(8031內部無ROM)3)256B數(shù)據(jù)存儲器RAM4)21個特殊功能寄存器5)4個8位并行I/O端口(P0~P3)6)1個可編程串行I/O端口7)2個16位定時/計數(shù)器(T0,T1)8)時鐘振蕩器和時鐘電路二、工作原理以ADDA,R0指令為例說明其工作原理執(zhí)行指令的過程是:取指令——譯碼——執(zhí)行取指令:CPU把PC的值送入程序地址寄存器,并向ROM發(fā)出讀指令,PC值加1。譯碼:把讀出的指令代碼送入指令寄存器IR,再送入指令譯碼器ID,譯碼結果送到定時與控制電路。執(zhí)行:根據(jù)譯碼的結果對數(shù)據(jù)進行運算。程序的執(zhí)行是指令一條接一條執(zhí)行的過程,每執(zhí)行一條指令,PC值自動加1,指向下一條指令。三、引腳及功能MCS-51單片機是40個引腳的雙列直插式封裝形式??刂埔_I/O口引腳邏輯圖時鐘引腳電源引腳第二功能1、電源引腳Vcc和Vss
★Vcc(40腳):電源端,接+5V電源
★Vss
(20腳):接地端2、外接晶體引腳XTAL1,XTAL2
★XTAL1(19腳):片內反向放大器輸入端
★
XTAL2(18腳)
:片內反向放大器輸出端采用內部時鐘時,2個引腳各接外部晶體和微調電容的一端;采用外部時鐘時,XTAL2腳輸入外部時鐘脈沖,XTAL1腳接地。各個引腳的功能說明如下:3、控制信號引腳★
RST/VPD(9腳):RST復位信號;VPD備用電源輸入端?!?/p>
ALE/PROG(addresslatchenable/programming,30腳):
ALE是地址鎖存允許信號;PROG是編程脈沖輸入端。ALE信號說明:1.當CPU訪問外部存儲器時,ALE端作為鎖存低8位地址的控制信號,下降沿有效。2.當CPU不訪問外部存儲器時,ALE端以1/6的振蕩頻率固定輸出正脈沖?!?/p>
EA/VPP(enableaddress/voltagepulseofprogramming,31腳):EA外部程序存儲器選擇端;
VPP編程電源輸入端。EA信號說明:1.EA為低電平時,CPU只訪問外部ROM;2.EA為高電平時,CPU首先訪問內部ROM并自動延至外部ROM。★
PSEN(programstoreenable,29腳):
外部程序存儲器選通信號說明:在訪問片外程序存儲器時,此引腳定時輸出負脈沖作為讀片外存儲器的選通信號,低電平有效?!?/p>
P0.0~P0.7:P0口,8位雙向I/O端口。當CPU訪問片外存儲器時,P0口分時提供復用的低8位地址線和8位雙向數(shù)據(jù)線?!?/p>
P1.0~P1.7:P1口,內部帶上拉電阻的8位準雙向I/O端口?!?/p>
P2.0~P2.7:P2口,內部帶上拉電阻的8位準雙向I/O端口。當CPU訪問片外存儲器時,輸出高8位地址。
★
P3.0~P3.7:P3口,內部帶上拉電阻的8位準雙向I/O端口。P3口作一般I/O端口使用外,每個引腳都有專門的第二功能。4、I/O端口引腳引腳轉義引腳功能說明P3.0RXD串行數(shù)據(jù)接收端P3.1TXD串行數(shù)據(jù)發(fā)送端P3.2INT0外部中斷0請求P3.3INT1外部中斷1請求P3.4T0計數(shù)器0外部輸入P3.5T1計數(shù)器1外部輸入P3.6WR外部數(shù)據(jù)存儲器寫P3.7RD外部數(shù)據(jù)存儲器讀P3口的第二功能引腳連接圖1RST引腳連接圖2EA
一、運算器和控制器1、運算器(1)算數(shù)邏輯單元ALU:完成基本的算術運算、邏輯運算;(2)累加器A(ACC):專門用來存放操作數(shù)和運算結果;(3)暫存寄存器:暫存數(shù)據(jù)和狀態(tài),便于傳送和運算;(4)B寄存器:用于乘法和除法的8位寄存器;第二節(jié)中央處理單元與時序位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0標志CYACF0RS1RS0OV-P①CY(C):進位標志位
★存放算術運算的進位或借位標志;
★在位操作中,作位累加器使用。②AC:輔助進位位加減運算中,低4位向高4位有進位或借位時,AC=1。③F0:用戶標志位
(5)程序狀態(tài)字(ProgramStatusWord
PSW
):存放指令執(zhí)行后的狀態(tài)信息:RS1RS0選中的工作寄存器組R0~R7地址000組00-07H011組08-0FH102組10-17H113組18-1FH⑤OV:溢出標志位
運算結果超出了累加器A所能表示的帶符號數(shù)的范圍(-128~+127),OV=1。④RS1、RS0:工作寄存器選擇位
CPU選擇哪一組工作寄存器為當前工作寄存器,確定R0~R7的物理地址。(6)布爾處理器:也稱為位處理器,以PSW中的CY為累加器,可執(zhí)行各種位操作,也可以將CY與其他可尋址位之間進行邏輯與、邏輯或操作,結果存放于CY。⑥P:奇偶標志位累加器A中1的個數(shù)的奇偶性,奇:P=1;偶:P=0。位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0標志CYACF0RS1RS0OV-P(1)程序計數(shù)器PC:是一個16位專用寄存器,用來存放將要執(zhí)行的下一條指令的地址;(2)指令寄存器IR和指令譯碼器ID:存放代碼及譯碼;(3)定時控制電路:產生CPU的操作時序。2、控制器
單片機的時鐘信號是提供片內各種操作的時間基準。二、時鐘電路?內部時鐘電路:石英晶體或陶瓷振蕩器(晶振):1.2~12MHz。微調電容C01、C02起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為
5~30PF。因片內有高增益運算放大器,外接晶振后,就構成了自激振蕩器并產生振蕩時鐘脈沖。?外部時鐘電路把外部振蕩信號引入XTAL2端,XTAL1端接地。這種方式適宜用于使單片機的時鐘與外部信號保持一致。由于XTAL2端的邏輯電平與TTL電平不兼容,故在此引腳外接一個上拉電阻。1、時鐘周期又稱振蕩周期,是一個振蕩脈沖的周期,也是時序中最小的時間單位。2、機器周期完成一個最基本操作的時間,通常由若干個時鐘周期構成,在MCS-51單片機中,每個機器周期都包含12個時鐘周期,分為6個狀態(tài)S1~S6,每個狀態(tài)又分為2個節(jié)拍P1和P2。3、指令周期執(zhí)行一條指令所用的時間稱為指令周期,用機器周期的個數(shù)來表示。MCS-51系統(tǒng)中有單周期指令、雙周期指令、四周期指令。三、機器周期與指令周期時鐘周期和機器周期是單片機內計算其他時間值(例如:波特率、定時器的定時時間等)的基本時序單位。例:單片機外接晶振頻率12MHz時的各種時序單位:
1/frequencyoscillate
=1/12MHz=0.0833us12/fosc=12/12MHz=1us
(1~4)機器周期=1~4us說明:時鐘周期=機器周期=指令周期=四、指令取指/執(zhí)行時序單片機的工作工程是:取指令、譯碼、執(zhí)行指令……,一步步地完成各種指令規(guī)定的功能。各指令的操作順序在時間上有嚴格的次序,這種操作的時間順序稱為時序。單片機的時鐘信號用來為單片機芯片內部各種操作提供時間基準。單字節(jié)指令、雙字節(jié)指令是單周期或雙周期的;
三字節(jié)指令是雙周期的;乘除指令是四周期的。MCS-51單片機指令的取指/執(zhí)行的時序存儲器結構第三節(jié)存儲器配置普林斯頓結構/馮·諾伊曼:ROM、RAM統(tǒng)一編址。哈佛結構:ROM、RAM分開編址。在結構上分為6個存儲器編址空間;在物理上分:片內、片外程序存儲器;片內、片外數(shù)據(jù)存儲器。在邏輯上分:程序存儲器、片內數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。程序存儲器內部數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器程序存儲器ROM存放編制好的固定程序和表格,以16位的程序計數(shù)器做地址指針,可尋址64KB空間。
一、程序存儲器特殊功能地址單元(1)0000H-0002H:存放復位后初始化引導程序例程序放在內部1000H開始的單元
ORG0000H AJMPMAIN ORG1000HMAIN:MOVA,#0AFH0000H0001H0002H(PC)中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位...0FFFH0FFEH程序存儲器資源分布中斷地址區(qū)初始化引導程序(2)0003H-002AH:中斷地址區(qū)
CPU響應中斷后,根據(jù)中斷類型,自動轉入各中斷區(qū)首地址去執(zhí)行中斷服務程序。8個單元不能放下中斷服務程序,因此在中斷入口地址放一條無條件跳轉指令。
0003H~002AH共40個單元是中斷服務程序地址區(qū),它被分為五段,每段8個單元,分別分配給5個中斷源:0003H~000AH
外部中斷0中斷地址區(qū);000BH~0012H
定時器/計數(shù)器0中斷地址區(qū);0013H~001AH
外部中斷1中斷地址區(qū);001BH~0022H
定時器/計數(shù)器1中斷地址區(qū);0023H~002AH
串行中斷地址區(qū)。中斷源入口地址外部中斷00003H定時器0溢出中斷000BH外部中斷10013H定時器1溢出中斷001BH串行口中斷0023H例:假設外部中斷INT0的中斷服務程序放在0040H開始的單元
ORG0003HAJMPINT0ORG0040HINT0:PUSHPSW…….二、數(shù)據(jù)存儲器內部RAM(00H-FFH)外部RAM(0000H-FFFFH)數(shù)據(jù)存儲器00H20H2FH7FH1FH30H
用戶RAM區(qū)位尋址區(qū)
工作寄存器區(qū)特殊功能寄存器區(qū)(80H-FFH)內部RAM(00H-FFH)真正RAM區(qū)(1)工作寄存器區(qū)(00H~1FH)地址范圍在00H~1FH的32個單元,可分成4個工作寄存器組,每組占8個字節(jié)。第0組工作寄存器:地址范圍為00H~07H
第1組工作寄存器:地址范圍為08H~0FH
第2組工作寄存器:地址范圍為10H~17H
第3組工作寄存器:地址范圍為18H~1FH1、真正RAM區(qū)每個工作寄存器組都有8個寄存器,分別稱為R0、R1、R2、R3、R4、R5、R6、R7。但在程序運行時,只允許有一個工作寄存器組工作,這組工作寄存器稱為當前工作寄存器組,所以每組之間不會因為名稱相同而混淆出錯。可通過對特殊功能寄存器中的程序狀態(tài)字PSW的RS1、RS0的狀態(tài)設置,選擇哪組工作寄存器作當前工作寄存器組。
單片機復位時,當前工作寄存器默認為0組。說明?與工作寄存器相連的16個字節(jié)地址單元20H~2FH為位尋址區(qū),可以對每個RAM單元中的任何一個位進行位操作,例如對某一位進置0、清0、判1、判0、轉移等。?該位尋址區(qū)既可以按照字節(jié)操作(16個單元),也可以按照位操作(128位)。?每一位可用位地址尋址,也可用字節(jié)地址和位地址相結合的表示方法。(2)位尋址區(qū)(20H~2FH)2FH.726H.3
30H-7FH共80個RAM單元,用來存放用戶數(shù)據(jù)和堆棧操作使用,稱為用戶RAM區(qū),該區(qū)是按字節(jié)存取的。堆棧的概念堆棧是在單片機內部RAM中從某個選定的存儲單元開始劃定的一個地址連續(xù)的區(qū)域,在這個區(qū)域選定某個存儲單元作為棧底,只允許向一個方向寫入數(shù)據(jù),最后一個寫入數(shù)據(jù)的存儲單元稱為棧頂。堆棧的生成有兩種情況,向高地址方向寫入數(shù)據(jù)生成的堆棧稱為向上生長型堆棧,反之稱為向下生長型堆棧,MCS-51單片機屬于向上生長型堆棧(即向高地址方向生成)。(3)堆棧和數(shù)據(jù)緩沖區(qū)堆棧指針寄存器SP:一個8位寄存器,用于指明堆棧頂部在RAM中的位置,可由軟件設置初始值;系統(tǒng)復位后,SP初始化為07H;實際中,一般將SP設置在30-7FH范圍內。堆棧的原則:先進后出,后進先出。每存(?。┮粋€字節(jié),SP自動加(減)1,SP始終指向新的棧頂。堆棧操作方式:指令方式:PUSH、POP
自動方式:調用子程序或中斷時,將返回地址自動進棧;程序返回時,斷點地址自動彈回PC。棧底AB進棧SPSPSP+162H61H60H棧底AB出棧SPSPSP-162H61H60HA先進棧B再進棧B先出棧A再出棧堆棧示意圖2、特殊功能寄存器(SFRSpecialFunctionRegisters
)◆
8051單片機中設置了21個特殊功能寄存器,它們不連續(xù)地分布在地址為80H-FFH的128個字節(jié)的存儲空間中?!?/p>
21個SFR只能采用直接尋址方式,但是字節(jié)地址能被8整除(16進制的地址碼尾數(shù)為0或8)的11個單元均具有位尋址能力。可位尋址(1)堆棧指針寄存器SP:(2)數(shù)據(jù)存儲器地址指針DPTR:16位專用寄存器,由DPH、DPL組成。對64KB外部數(shù)據(jù)存儲器尋址,做間址寄存器;訪問程序存儲器,做基址寄存器。(3)端口寄存器P0~P3:用于控制4個8位并行I/O口。(4)串口數(shù)據(jù)緩沖器SBUF:由發(fā)送緩沖器和接收緩沖器組成,通過讀寫指令來區(qū)別對哪一個緩沖器進行操作。(5)串行口控制與狀態(tài)寄存器SCON:控制串行通信工作方式、接收或發(fā)送控制、設置狀態(tài)標志。SFR:(6)
定時器/計數(shù)器T:MCS51有兩個16位定時器T0和T1,每個定時器各包含兩個獨立的8位寄存器TH0、TL0、TH1、TL1。(7)定時器/計數(shù)器工作方式寄存器TMOD:主要確定定時器/計數(shù)器的工作方式。(8)定時器/計數(shù)器控制寄存器TCON:控制定時器/計數(shù)器的啟/停操作及對定時器溢出時設定標志位。(9)中斷允許寄存器IE和中斷優(yōu)先級寄存器IP:IE用來控制CPU對各中斷源的中斷請求進行響應,IP用來確定中斷源的優(yōu)先級別。
MCS-51共有4個8位準雙向并行I/O端口P0~P3,共32根I/O口線,每根都可以獨立作為輸入和輸出。這四個端口是單片機對外部實現(xiàn)控制及信息交換的輸入輸出通道。P0:作為外部擴展存儲器時的地址/數(shù)據(jù)線P1:普通I/O口P2:作為外部擴展存儲器時的地址線P3:除作為I/O口外,每根口線都有第二功能。第四節(jié)并行I/O端口一、P0端口★由兩只場效應管組成的輸出驅動電路;★由一個與門、反向器和多路轉換開關MUX組成輸出控制電路;★
MUX的位置由CPU的控制信號確定,當控制信號為低電平時,P0口用作一般I/O口;反之為高電平時,P0口用作地址/數(shù)據(jù)總線。P0.X1、用作I/O口:控制信號為低電平,V1截至,輸出極為漏極開路電路,應接上拉電阻。輸出時:內部總線上的數(shù)據(jù)在寫信號控制下,先寫入鎖存器,經(jīng)反相端反相,再經(jīng)V2反相,使輸出數(shù)據(jù)正好出現(xiàn)在P0口引腳上。
輸入時:先向鎖存器寫1,令V1,V2截至,讀引腳信號把三態(tài)緩沖器打開,則端口上的數(shù)據(jù)經(jīng)三態(tài)緩沖器輸入到內部總線。P0.X為什么輸入時要先向鎖存器寫1?由于輸出驅動V2并接在引腳上,如果V2導通會把引腳的高電平拉成低電平,從而產生誤讀,所以輸入時必須先向鎖存器寫1。P0口在做普通I/O口時,是一個準雙向口。對于準雙向口,在做輸入口時,應先向鎖存器寫入1,使2個場效應管都截至,引腳處于懸浮狀態(tài),可作高阻態(tài)輸入。因為引腳上的信號是加在輸出極場效應管的漏極上,當它導通時,會把引腳上的電位拉為低電平。2、用作地址/數(shù)據(jù)總線:控制信號為高電平,輸出的地址/數(shù)據(jù)信號經(jīng)反相器驅動V2,同時通過與門驅動V1。
CPU先輸出地址信息,在ALE的下降沿鎖存低8位地址,然后轉為數(shù)據(jù)傳輸線。
P0口用作地址/數(shù)據(jù)總線時,便不能再用作I/O口。P0.X
P1口只能傳送數(shù)據(jù),不能作為地址/數(shù)據(jù)口;在輸出驅動部分接有內部上拉電阻;
P1口作為輸出口時,輸出狀態(tài)與寫入鎖存器狀態(tài)相同;
P1口作為輸入口時,要先向鎖存器寫1。二、P1端口三、P2端口P2口與P0口的區(qū)別:﹡用上拉電阻代替上拉場效應管;﹡MUX的一個輸入口是地址。1、用作I/O口如果外部沒有擴展存儲器,或者只擴展小于256B的RAM,這時只需要提供低8位地址,P2口的MUX接鎖存器Q端不動,用作普通I/O口。2、用作地址線對于有片外存儲器的系統(tǒng),CPU訪問片外存儲器時,MUX在控制信號控制下,把地址線和反向器3相連,由此輸出高8位地址。此時只能作為地址總線不能作為數(shù)據(jù)總線。四、P3端口1、P3口比P1口多了一個與非門3和一個輸入緩沖器4,既可以作為一般I/O口,也可以作為第二功能口;2、作一般I/O口,第二功能輸出信號為高電平,與非門打開,過程與其它口相同。3、實際應用中,P3口基本用作第二功能,此時應首先向鎖存器寫1,打開與非門,第二功能輸出;第二功能輸入時,第二功能輸出自動置1,V1截至,信號由三態(tài)緩沖器輸入。1、P0~P3均可作為I/O口,但P0、P2多用作地址/數(shù)據(jù)總線,P3多用作第二功能,P1真正作為I/O口;2、P0為真正的雙向口,P1~P3為準雙向口,只有P0可用作系統(tǒng)的數(shù)據(jù)總線;3、作為I/O口,P0應接上拉電阻,P1~P3沒必要,但是P0用作地址/數(shù)據(jù)總線時,不用接上拉電阻;4、P0~P3作為輸入口時,必須首先向端口鎖存器寫1,P3作為第二功能口輸出或輸入時,也要先鎖存器寫1;5、P0口的每1位輸出能驅動8個LS型TTL負載;P1、P2、P3口的每一位輸出能驅動4個LS型TTL負載。6、單片機內部的I/O口只有數(shù)據(jù)鎖存和緩沖功能,無控制功能,只能實現(xiàn)簡單的功能。五、I/O端口小結一、單片機復位復位是單片機的初始化操作,使單片機處于一個固定的初始狀態(tài),并從此狀態(tài)開始運行。在運行中,當單片機的程序受外界因素干擾陷入死循環(huán)或跑飛時,為擺脫困境,可將單片機復位,重新啟動。
MCS-51單片機的RST引腳為復位端,該引腳保持兩個機器周期以上的高電平便可以實現(xiàn)單片機復位。第五節(jié)復位及復位電路
P0~P3的端口鎖存器被設置成FFH;堆棧指針SP設置成07H;串行口的SBUF無確定值;其它各專用寄存器包括程序計數(shù)器PC均被設置成00H;片內RAM不受復位的影響。單片機復位后:(1)上電自動復位上電復位按鍵脈沖復位按鍵電平復位二、單片機的復位電路脈沖復位電平復位(2)按鍵手動復位內部復位電路外部復位電路復位電路
★復位完成后,如果RST端繼續(xù)保持高電平,則單片機一直處于復位狀態(tài),只有RST端恢復低電平后,單片機才能進入其他工作狀態(tài)。
★復位電路雖然簡單,但是其作用非常重要。一個單片機系統(tǒng)能否正常工作,首先要檢查其是否能復位成功。說明
思考題:41頁第三章MCS-51指令系統(tǒng)★
指令系統(tǒng)概述★
MCS-51單片機指令系統(tǒng)
?數(shù)據(jù)傳送類指令?算術運算類指令?邏輯運算類指令
?控制轉移類指令?位操作類指令指令:規(guī)定計算機進行某種操作的命令。指令系統(tǒng):計算機能夠執(zhí)行的各種指令的集合。單字節(jié)指令:49條雙字節(jié)指令:45條三字節(jié)指令:17條單周期指令:64條雙周期指令:45條四周期指令:2條MCS-51單片機共有111條指令。第一節(jié)指令系統(tǒng)概述1)數(shù)據(jù)傳送類指令29條:片內RAM、片外RAM、程序存儲器的傳送指令;交換及堆棧操作指令;2)算術運算類指令24條:加法、帶進位加、減、乘、除、加1、減1指令;3)邏輯運算類指令24條:邏輯與、或、異或、移位指令;4)控制轉移類指令17條:無條件轉移與調用、條件轉移、空操作指令;5)布爾(位)操作類指令17條:位數(shù)據(jù)傳送、位與、位或、位轉移指令。按功能分類:
1.指令的組成:操作碼和操作數(shù)(1)單字節(jié)指令:操作數(shù)、操作碼均在一個字節(jié)內;只有操作碼,無操作數(shù);(2)雙字節(jié)指令:一個字節(jié)是操作碼,一個字節(jié)是操作數(shù);(3)三字節(jié)指令:一個字節(jié)是操作碼,二個字節(jié)是操作數(shù)。一、指令格式[標號]:操作碼[操作數(shù)];[注釋]標號:又稱為指令地址符號,一般是由1~6個字符組成,以字母開頭的字母數(shù)字串,與操作碼之間用冒號分開。操作碼:是由助記符所表示的指令的操作功能,與操作數(shù)之間必須用空格隔開。操作數(shù):是指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址,可以沒有,也可以是1個、2個或3個,多個操作數(shù)之間必須用“,”隔開。注釋:是為該條指令作用的說明,以便于閱讀。操作碼是指令的核心,不可缺少,其他幾項根據(jù)不同指令為可選項。2、指令的格式1、立即尋址2、直接尋址3、寄存器尋址4、寄存器間接尋址5、變址尋址6、相對尋址7、位尋址二、尋址方式所謂尋址方式就是指如何找到存放操作數(shù)的地址的方法。操作數(shù)直接出現(xiàn)在指令中。操作數(shù)前加“#”號表示,也稱立即數(shù)。指令的操作數(shù)可以是8位或16位數(shù)。例:MOVA,#26H ;26H→A指令執(zhí)行結果:把立即數(shù)26H直接送到累加器A中。這類指令大都是雙字節(jié)指令,只有一條是三字節(jié)指令。例:
MOVDPTR,#data16向數(shù)據(jù)指針DPTR傳送的是16位立即數(shù),立即數(shù)的高8位送入DPH中,低8位送入DPL中。MCS-51只有1條16位數(shù)據(jù)傳送指令。1、立即尋址2、直接尋址指令直接給出操作數(shù)的地址,用direct表示。直接尋址方式可以訪問的地址空間有:內部數(shù)據(jù)存儲器的低128個字節(jié)單元、位地址空間及特殊功能寄存器SFR,且SFR和位地址空間只能用直接尋址方式訪問。例:MOVA,26H;把26H單元的內容送到累加器A中。注意:對于特殊功能寄存器,指令既可使用它們的地址,也可使用它們的名字。3、寄存器尋址指令中指定寄存器的內容作為操作數(shù),使用的寄存器有:工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR和位累加寄存器C等。例:INCR2;(R2)+1→(R2)指令功能是將R2工作寄存器的內容加1后傳送回R2。如果選定的工作寄存器屬于第一組(RS1RS0=01B)且原來(R2)=24H,則指令執(zhí)行結果為(R2)=25H。指定寄存器中的內容是操作數(shù)的地址,該地址對應存儲單元的內容才是操作數(shù)??捎瞄g接尋址的寄存器有R0、R1、堆棧指針SP
和16位數(shù)據(jù)指針DPTR,使用時前面加符號@表示間接尋址。4、寄存器間接尋址例:MOVA,@R1
設當前工作寄存器組為第0組,R1的內容為4FH,片內RAM區(qū)4FH單元的內容為27H。指令執(zhí)行結果:A=27H。R0、R1可尋址片內RAM低128B和片外RAM低256B,DPTR可尋址片外RAM64KB。R0、R1是當前工作寄存器組中可以作為地址指針的2個工作寄存器基址寄存器加變址寄存器間接尋址,簡稱變址尋址。
MCS-51單片機以數(shù)據(jù)指針DPTR或程序計數(shù)器PC作為基址寄存器,累加器A作為變址寄存器,兩者的內容相加形成16位程序存儲器地址,該地址就是操作數(shù)所在地址。5、變址尋址例:MOVCA,@A+DPTR;(A+DPTR)→A
該指令為單字節(jié)指令。指令功能將A+DPTR形成的地址的單元內的內容送入累加器A。假設A=0D0H,DPTR=2000H,(20D0H)=1FH,指令執(zhí)行后A=1FH。這種尋址方式常用于訪問程序存儲器ROM中的表格。
MOVCA,@A+PC以PC當前值為基準,加上指令中給出的相對偏移量rel形成轉移地址。轉移的目的地址=轉移指令所在地址+
轉移指令字節(jié)數(shù)+
rel
其中相對偏移量rel是有符號的8位二進制數(shù)6、相對尋址相對尋址方式主要用于跳轉指令。例:SJMP30H此指令為雙字節(jié)指令,地址為1068H,則轉移的目的地址為109AH。轉移范圍:以PC當前值為起始地址,相對偏移在-128~+127
字節(jié)單元之間。PC當前值7、位尋址指對片內RAM的位尋址區(qū)和某些可以進行位尋址的特殊功能寄存器進行位操作時的尋址方式。該尋址方式和直接尋址方式的形式與執(zhí)行過程基本相同,但參與操作的數(shù)據(jù)是1位而不是8位。位地址用bit表示,以區(qū)別字節(jié)地址direct。
MCS-51單片機內的RAM有兩個區(qū)域可以進行位尋址:一個是20H~2FH的16個單元中的128位,另一個是字節(jié)地址能被8整除的特殊功能寄存器的每一位。在8051中,位地址常用下列三種方式表示:1)直接使用位地址;2)字節(jié)地址和位地址相結合3)直接用特殊功能寄存器名加位數(shù)表示,表示PSW.3。例:SETB2EH判斷下列指令中各操作數(shù)的尋址方式(1)MOVA,#65H
(2)MOV@R1,65H
(3)MOV30H,R2
(4)MOVC,20H
(5)JZ50H
(6)MOV60H,@R1
(7)MOVCA,@A+DPTR
立即尋址寄存器間接尋址直接尋址直接尋址寄存器尋址位尋址位尋址相對尋址直接尋址寄存器間接尋址變址尋址練習:★
#data:表示指令中的8位立即數(shù)(data),“#”表示后面的數(shù)據(jù)是立即數(shù)。★
#data16:表示指令中的16位立即數(shù)。★
direct:表示8位內部數(shù)據(jù)存儲器單元的地址。★
Rn:n=0~7,表示當前選中的工作寄存器組R0~R7。★
Ri:i=0或1,表示當前選中的工作寄存器組中的2個寄存器R0、R1,可作地址指針即間址寄存器?!?/p>
Addr11:表示11位的目的地址。★
Addr16:表示16位的目的地址。三、指令系統(tǒng)中的符號說明★
rel:表示8位帶符號的偏移量。用于SJMP和所有的條件轉移指令中?!?/p>
DPTR:為數(shù)據(jù)指針,可用作16位的地址寄存器?!?/p>
bit:內部RAM或專用寄存器中的直接尋址位地址?!?/p>
/:位操作數(shù)的前綴,表示對該位操作數(shù)取反?!?/p>
A:累加器ACC?!?/p>
B:專用寄存器,用于MUL和DIV指令中?!?/p>
C:進位/借位標志位,也可作為布爾處理機中的位累加器?!?/p>
@:間址寄存器或基址寄存器的前綴?!?/p>
$:當前指令的地址?!?/p>
→:表示將箭頭左邊的內容送入箭頭的右邊。
?數(shù)據(jù)傳送類指令
?
算術運算類指令?邏輯運算類指令
?
控制轉移類指令?
位操作類指令第二節(jié)
MCS-51單片機指令系統(tǒng)數(shù)據(jù)傳送指令是最常用的一類指令,共有29條,可以通過累加器進行數(shù)據(jù)傳送,還可以在數(shù)據(jù)存儲器之間或工作寄存器與數(shù)據(jù)存儲器之間直接進行數(shù)據(jù)傳送。數(shù)據(jù)傳送類指令用到的助記符有:MOV、MOVC、MOVX、XCH、XCHD、SWAP、PUSH、POP共8種,源操作數(shù)可以采用寄存器、寄存器間接、直接、立即、變址加基址5種尋址方式,目的操作數(shù)可以采用前3種尋址方式。一、數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令分類內部RAM數(shù)據(jù)傳送指令(16條)外部RAM數(shù)據(jù)傳送指令(4條)查表指令(2條)堆棧操作指令(2條)交換指令(5條)1、內部RAM數(shù)據(jù)傳送指令(16條)1)以累加器A為目的操作數(shù)的指令:(4條)2)以工作寄存器Rn為目的操作數(shù)的指令(3條)3)以直接地址為目的操作數(shù)的指令(5條)
4)以間接地址為目的操作數(shù)的指令(3條)5)16位數(shù)據(jù)傳送指令(1條)﹡
MOVA,R6
MOVA,Rn
;Rn
→AMOVA,@Ri
;(Ri)→AMOVA,direct ;(direct)→AMOVA,#data ;data→A
該組指令的功能是把源操作數(shù)指定的內容送入累加器A。源操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址和立即尋址4種尋址方式。源操作數(shù)為寄存器尋址源操作數(shù)為寄存器間接尋址源操作數(shù)為直接尋址源操作數(shù)為立即尋址﹡
MOVA,#38H﹡
MOVA,38H﹡MOVR1,#40H
MOVA,@R11)以累加器A為目的操作數(shù)的指令:(4條)
MOVRn,A ;(A)→RnMOVRn,direct;(direct)→
RnMOVRn,#data ;data→
Rn
該組指令的功能是將源操作數(shù)指定的內容送入當前工作寄存器組的某個寄存器。源操作數(shù)有寄存器、直接、立即3種尋址方式。沒有“MOVRn,Rn”指令。﹡MOVR6,A﹡
MOVR5,#38H﹡
MOVR1,40H2)以工作寄存器Rn為目的操作數(shù)的指令(3條):源操作數(shù)為寄存器尋址源操作數(shù)為直接尋址源操作數(shù)為立即尋址
MOVdirect,AMOVdirect,RnMOVdirect1,direct2MOVdirect,@RiMOVdirect,#data
該組指令的功能是將源操作數(shù)指定的內容送入由直接地址direct所指定的存儲單元中。源操作數(shù)有寄存器、直接、寄存器間接和立即4種尋址方式。﹡MOV4AH,A﹡MOV20H,R5﹡
MOV26H,#38H﹡
MOV44H,66H3)以直接地址為目的操作數(shù)的指令(5條):
MOV@Ri,AMOV@Ri,directMOV@Ri,#data
該組指令的功能是將源操作數(shù)指定的內容傳送至以R0或R1為地址指針的片內RAM單元中。源操作數(shù)有寄存器、直接、和立即3種尋址方式。
﹡
MOV@R1,30H假設(30H)=6FH,R1=40H,執(zhí)行指令后,30H單元中的數(shù)據(jù)送入R1間接尋址的40H單元,(40H)=6FH4)以間接地址為目的操作數(shù)的指令(3條):MOVDPTR,#data16該指令的功能:把16位立即數(shù)傳送至16位數(shù)據(jù)指針寄存器DPTR。5)16位數(shù)據(jù)傳送指令:例:把立即數(shù)34H送到內部RAM20H單元。例:用寄存器間接尋址把立即數(shù)6BH送到內部RAM20H單元。
例:利用直接尋址把P1口的內容送到P3口。MOV20H,#34HMOVR0,#20HMOV@R0,#6BH
MOVP3,P11、MOVA,#30HMOVR0,#45HMOV@R0,A練習:2、MOVR1,#30HMOV30H,#45HMOVA,@R1結果(45H)=30H結果A=45H累加器A與片外數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送是通過P0口與P2口進行的。只能通過寄存器間接尋址方式。由于MCS51指令系統(tǒng)沒有專門的輸入輸出指令,且片外擴展的I/O口與片外RAM是統(tǒng)一編址的,故以下4條指令也可以作為輸入輸出指令,與外部設備進行數(shù)據(jù)交換。
MOVXA,@DPTR
;(DPTR)→A,為寄存器間接尋址
MOVX@DPTR,A
;A→(DPTR)2、外部數(shù)據(jù)傳送指令(4條)
★這兩條指令以數(shù)據(jù)指針DPTR為片外數(shù)據(jù)存儲器16位地址指針,尋址范圍達到64KB,低8位(DPL)由P0口送出,高8位(DPH)由P2口送出。MOVXA,@Ri
;(Ri)→A,為寄存器間接尋址MOVX@Ri,A
;A→(Ri)
★這兩條指令是用R0或R1作低8位地址指針,由P0口送出,尋址范圍是256B。例:現(xiàn)有一輸入設備地址為DE00H,在這個口中,已有數(shù)據(jù)A8H,欲將此值存入片內30H單元,則可編寫如下指令:MOVDPTR,#0DE00H;DE00H→DPTRMOVXA,@DPTR;A8H→AMOV30H,A;A→(30H)執(zhí)行指令后30H單元的內容為A8H。例:將累加器A中的內容送入外部數(shù)據(jù)存儲器的0060H單元。MOVP2,#00;輸出地址高8位輸出00HMOVR0,#60H;地址送間址寄存器MOVX@R0,A;A中內容送外部數(shù)據(jù)存儲器
0060H單元例:將外部存儲器的2000H單元的內容送入片外2100H單元。MOVDPTR,#2000H;DPTR=2000HMOVXA,@DPTR;A=(DPTR)MOVDPTR,#2100H;DPTR=2100HMOVX@DPTR,A;(DPTR)
=A查表指令,即程序存儲器數(shù)據(jù)傳送指令有兩種形式:MOVCA,@A+PC ;PC+1→PC,(A+PC)→AMOVCA,@A+DPTR
;(A+DPTR)→A3、查表指令“MOVCA,@A+DPTR”指令以DPTR為基址寄存器進行查表,使用前,先給DPTR賦地址,查表范圍可達64KB程序存儲器空間,稱為遠程查表指令。
CPU執(zhí)行指令“MOVCA,@A+PC”后,先給PC值加1,將新的PC的內容與累加器A中的8位無符號數(shù)相加形成地址,再取出該地址單元中的內容送累加器A中。由于A只有一個字節(jié),所形成的地址空間范圍只有256B,稱為近程查表指令。
例:在程序存儲器中,數(shù)據(jù)表格為:2010H2011H
2012H
2013H0AH0BH0CH0DH執(zhí)行程序:
2000H:MOVA,#0DH2002H:MOVCA,@A+PC2003H:MOVR1,A結果A=0AH,R1=0AH,PC=2004H;0DH→A;(0DH+2003H)→A;A→R1例:在程序存儲器中,數(shù)據(jù)表格為:6010H6011H
6012H
6013H0AH0BH0CH0DH執(zhí)行程序:
2000H:MOVA,#10H2002H:MOVDPTR,#6000H2005H:MOVCA,@A+DPTR結果A=0AH,PC=2006H;10H→A;6000H→DPTR;(10H+6000H)→A例:以查表方式求出片內RAM中20H單元中數(shù)的平方,結果存入片內21H單元中。解法一:以DPTR為基址寄存器,平方表首址可靈活安排在適當?shù)奈恢茫?000H,即平方表的內容從2000H單元放起。程序如下:
ORG1800HMOVDPTR,#2000HMOVA,20H
MOVCA,@A+DPTRMOV21H,AORG2000HDB00H,01H,04H,09H,10H,19H,24HDB31H,40H,51H,64H,...解法二:以PC為基址寄存器,此時表格須緊跟程序之后,且要計算好表格首址的位置。程序如下:
ORG1000H1000H:MOVA,20H1001H:ADDA,
1003H:MOVCA,@A+PC1004H:MOV21H,A1006H:DB00H,01H,04H,09H,10H,19H,24HDB31H,40H,51H,64H,...#02HPUSHdirect;(SP)+1→SP(先指針加1);
(direct)→(SP)(再壓棧)POPdirect ;
(direct)→(SP)(先彈出);(SP)-1→SP(再指針減1)
4、堆棧操作指令
PUSH指令是入棧(或稱壓?;蜻M棧)指令,其功能是先將堆棧指針SP的內容加1,然后將直接尋址direct單元中的數(shù)據(jù)壓入到SP所指示的單元中。
POP是出棧(或稱彈出)指令,其功能是先將堆棧指針SP所指示的單元內容彈出到直接尋址direct單元中,然后將SP的內容減1,SP始終指向棧頂。例:已知片內RAM40H單元中存放數(shù)值為66H,設堆棧指針為30H,把此數(shù)值壓入堆棧,然后彈出到50H。MOVSP,#30H;30H→SPPUSH40H;SP+1→SP,(40H)→(31H)POP50H;(31H)→(50H),SP-1→SP例:將片外4000H單元中的內容壓入堆棧,之后彈出到48H單元中,編寫指令如下:MOVDPTR,#4000HMOVXA,@DPTR;(4000H)=AMOV20H,A;A→(20H)MOVSP,#30H;30H→SPPUSH20H;20H單元內容壓入堆棧POP48H;彈出到48H單元MOVSP,#30HPUSH10HPUSH20HPOP10HPOP20H用堆棧指令實現(xiàn)RAM中10H和20H中的內容交換,設(10H)=54H,(20H)=45H。;設置堆棧指針指向30H;進棧SP+1→SP,(SP)=31H,(31H)=54H;進棧SP+1→SP,(SP)=32H,(32H)=45H;出棧(10H)=45H,SP-1→SP,(SP)=31H;出棧(20H)=54H,SP-1→SP,(SP)=30H練習1)字節(jié)交換指令:
XCHA,Rn
;A的內容與Rn的內容交換
XCHA,@Ri
;A的內容與(Ri)的內容交換
XCHA,direct;A的內容與(direct)的內容交換5、數(shù)據(jù)交換指令例:已知(30H)=88H,(40H)=11H,R0=30H,R1=40HMOVA,30HXCHA,40HMOV30H,A;(A)←(30H),(A)=88H;(A)(40H),(A)=11H,(40H)=88H;(30H)←(A),(30H)=11H結果為A(30H)=11H,(40H)=88H,30H和40H單元的內容互換顯然,程序沒有用到已知條件R0=30H,R1=40H,可以采用寄存器間接尋址的方式,程序如下:MOVA,@R0XCHA,@R1MOV@R0,AXCHA,BXCHB,A練習:編程實現(xiàn)累加器A與寄存器B的內容互換。√×2)低半字節(jié)交換指令:
XCHDA,@Ri
;A的低四位與(Ri)的低四位交換3)累加器A的高、低半字節(jié)交換指令
SWAPA;A的低四位與高四位互換例:累加器A中的內容為FFH,間址寄存器R0中的內容為5BH,5BH中的內容為6DH,執(zhí)行指令“XCHDA,@R0”后。累加器A中的內容變?yōu)椋?BH單元中的內容變?yōu)椤DH6FH練習:(A)=56H,R0=30H,(30H)=74H,執(zhí)行下列指令:
XCHA,@R0XCHDA,@R0XCHA,R0XCHA,30H;(A)=74H,(30H)=56H;(A)=76H,(30H)=54H;(A)=30H,(R0)=76H;(A)=54H,(30H)=30H※對8位無符號數(shù)進行直接的運算,包括加法、減法、加1、減1和乘法、除法?!柚绯鰳酥緦τ蟹柕亩M制整數(shù)進行加減運算?!柚M位標志,可以實現(xiàn)多字節(jié)的加減運算?!鶎嚎s的BCD數(shù)進行運算(壓縮BCD數(shù),是指在1個字節(jié)中存放2位BCD數(shù))?!阈g運算指令對程序狀態(tài)字PSW中的CY、AC、OV三個標志都有影響,根據(jù)運算的結果可將它們置1或清除。但是加1和減1指令不影響這些標志。二、算數(shù)運算類指令1)不帶進位的加法指令ADDA,#data ;A+data
→AADDA,direct ;A+(direct)→AADDA,Rn
;A+Rn
→AADDA,@Ri
;A+(Ri)→A
這4條指令的功能是把累加器A中的數(shù)與源操作數(shù)所確定的內容相加,其和送入累加器A中。1、加法指令※規(guī)則①
求和時總是把操作數(shù)直接相加,而無須任何變換。②
若位7進位,CY=1,若為無符號數(shù)的相加,CY代表十進制256,但是兩個帶符號數(shù)的相加,CY無意義。③
確定相加后OV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腰突的微創(chuàng)治療
- 內蒙古赤峰市名校2024-2025學年高二上學期期中聯(lián)考地理試題(含答案)
- 14 B波的反射、折射和衍射 中檔版2025新課改-高中物理-選修第1冊(21講)
- 熱孔高分子材料行業(yè)相關投資計劃提議
- HF-FB防彈玻璃相關行業(yè)投資方案范本
- 酒店管理業(yè)務能力
- 機關黨委換屆選舉工作方案范文
- 第七講-應對與心理防御機制課件
- 垃圾填埋場對水資源的污染
- 角膜皮樣瘤的術后護理
- 麻醉科考試題庫匯總及答案
- 鋼筋砼路面硬化施工方案
- 大象版一年級科學上冊 (我的前后左右)新課件
- 10kv及以下供電工程改造施工組織設計
- 學前兒童發(fā)展,講義第二章學前兒童生理的發(fā)展
- VDA6.3過程審核檢查表(中英文版)6
- 產品可追溯流程圖
- 全國行政區(qū)劃代碼
- 班主任帶班育人方略ppt
- 哈弗F7x保養(yǎng)手冊
- 中級經(jīng)濟師《中級運輸經(jīng)濟》歷年真題匯編(共288題)
評論
0/150
提交評論