版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
微控制器
——原理及應(yīng)用——2第一章緒論微控制器(單片機)就是在一塊半導(dǎo)體硅片上集成了微處理器(CPU)、存儲器(RAM、ROM)和各種功能單元(定時器/計數(shù)器、并行I/O口、串行口、ADC等)的集成電路芯片。這樣一塊集成電路芯片具有一臺計算機的屬性,因而被稱為單片微型計算機(SingleChipMicrocomputer),簡稱單片機。為了更好地體現(xiàn)其控制應(yīng)用,在國際上,一般把單片機稱為微控制器(MicroControllerUnit,MCU)。圖1-1所示為較常用的STC12C5A60S2微控制器芯片。1.1什么是微控制器(單片機)3圖1-1微控制器芯片4MCU按照其用途可以分為通用型和專用型兩大類。通用型MCU具有比較豐富的內(nèi)部資源,性能全面且適應(yīng)性強,可滿足多種應(yīng)用需求。專用型MCU是專門針對某些產(chǎn)品的特定用途而制作的MCU,如打印機、家用電器、健身器材以及各種通信設(shè)備中的專用MCU。5MCU的發(fā)展歷史大致可分為四個階段。第一階段(1974年—1976年):MCU初級階段。第二階段(1976年—1978年):低性能MCU階段。以Intel公司制造的MCS-48系列MCU為代表。
第三階段(1978年—1982年):高性能MCU階段。典型代表有Intel公司制造的MCS-5l系列MCU、Freescale公司(原Motorola公司的半導(dǎo)體事業(yè)部)的6801和Zilog公司的Z8等。1.2微控制器的發(fā)展歷史6
第四階段(1982年—現(xiàn)在):8位MCU鞏固發(fā)展,大量應(yīng)用;16位MCU逐漸占有一席之地;32位MCU推出階段。8位MCU代表廠家為ATMEL、NXP(原Philips的半導(dǎo)體事業(yè)部)、SiliconLab、STC等。對于16位MCU來說,代表廠家為TI、Freescale、凌陽等。但隨著32位MCU的推出,尤其是ARM公司Cortex系列MCU的推出,16位MCU處于比較尷尬的境地。7盡管目前8位MCU種類繁多,但其中最具代表性的是Intel公司的MCS-51系列MCU。80C51系列MCU是在MCS-51的基礎(chǔ)上于20世紀(jì)80年代發(fā)展起來的,其功能有很大增強。直到現(xiàn)在,80C51系列MCU仍然是8位MCU的主流品種。本書將以80C51系列MCU為主,介紹微控制器的原理及其應(yīng)用。8從近40年MCU的發(fā)展歷程可以看出,它正朝多功能、多選擇、高速度、低功耗、低價格、擴大存儲容量和加強I/O功能及結(jié)構(gòu)兼容方向發(fā)展,圖1-2所示為微控制器最小系統(tǒng)。圖1-2微控制器最小系統(tǒng)1.2微控制器的發(fā)展趨勢9微控制器今后的發(fā)展趨勢為以下幾個方面。1)多功能化MCU可集成越來越多的內(nèi)置部件,常用的部件有:
(1)存儲器類,包括程序存儲器MROM/OTPROM/EPROM/EEPROM/FlashROM和數(shù)據(jù)存儲器SRAM/SDRAM/SSRAM。
(2)串行接口類,包括UART、SPI、I2C、CAN、IR、Ethernet、HDLC。
(3)并行接口類,包括Centronics、PCI、IDE、GPIO等。10(4)定時和時鐘類,包括定時器/計數(shù)器、實時時鐘(RTC)、Watchdog、Clockout。(5)專用和外圍接口類,包括Comparer(比較器)、ADC、DAC、LCD控制器、DMA、PWM、PLL、溫度傳感器等。112)多核化隨著嵌入式應(yīng)用的深入,特別是在數(shù)字通信和網(wǎng)絡(luò)中的應(yīng)用,對處理器提出了更高的要求。為滿足這種要求,現(xiàn)在已出現(xiàn)多核結(jié)構(gòu)的處理器。123)低功耗化現(xiàn)在新推出的MCU的功耗越來越低,很多MCU都有多種工作方式,包括等待、暫停、休眠、空閑、節(jié)電等工作方式。134)寬工作電壓擴大電源電壓范圍以及在較低電壓下仍能工作是現(xiàn)在新推出的MCU的一個特點。目前一般MCU都可以在3.3~5.5V的范圍內(nèi)工作,有些產(chǎn)品則可以在2.2~6V的范圍內(nèi)工作。145)封裝小型化現(xiàn)在MCU的封裝水平已大大提高,有越來越多的MCU采用了各種貼片封裝形式,以滿足便攜式手持設(shè)備的需要。Microchip公司推出了目前世界上體積最小的6引腳PICl0F2XX系列MCU。156)低噪聲布線技術(shù)在過去一般MCU中,電源與地引腳是安排在芯片封裝的對角上,即左上、右下或右上、左下位置上。這種安排會使電源噪聲對MCU的內(nèi)部電路造成的干擾相對較大?,F(xiàn)在很多MCU都把電源和地引腳安排在兩個相鄰的引腳上。這樣既降低了干擾,又便于在印制電路板上對去耦電容器進行布線,降低系統(tǒng)的噪聲,如STC15F2K6052。16MCU之所以應(yīng)用如此廣泛,主要原因是以MCU為核心構(gòu)成的應(yīng)用系統(tǒng)具有以下優(yōu)點。功能齊全,應(yīng)用可靠,抗干擾能力強。(2)簡單方便,易于普及。(3)發(fā)展迅速,前景廣闊。(4)嵌入容易,用途廣泛。MCU的體積小、性價比高、應(yīng)用靈活性強。1.4微控制器的特點及應(yīng)用1.4.1微控制器的特點17MCU主要應(yīng)用在檢測、控制領(lǐng)域,它具有小巧靈活、成本低、可靠性好、適應(yīng)溫度范圍寬、易擴展等特點。以下是MCU應(yīng)用領(lǐng)域的舉例。1)家用電器領(lǐng)域目前國內(nèi)家用電器已普遍采用MCU控制取代傳統(tǒng)的控制電路。1.4.2微控制器的應(yīng)用183)商業(yè)營銷領(lǐng)域在商業(yè)營銷領(lǐng)域已廣泛使用的電子稱、收款機、條形碼閱讀器、倉儲安全監(jiān)測系統(tǒng)、商場保安系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)、冷凍保鮮系統(tǒng)中,已紛紛采用MCU構(gòu)成專用系統(tǒng)。2)辦公自動化領(lǐng)域現(xiàn)代辦公室中所使用的大量通信、信息產(chǎn)品多數(shù)都采用了MCU。4)工業(yè)自動化工業(yè)過程控制、過程監(jiān)測、工業(yè)控制器及機電一體化控制系統(tǒng)等這些系統(tǒng)除一些小型工控機之外,許多都是由MCU為核心的單機或多機網(wǎng)絡(luò)系統(tǒng)。195)智能儀表與傳感器網(wǎng)絡(luò)目前各種變送器、電氣測量儀表普遍采用MCU應(yīng)用系統(tǒng)替代傳統(tǒng)的測量系統(tǒng),使測量系統(tǒng)具有各種智能化功能。6)汽車電子設(shè)備MCU已經(jīng)廣泛地應(yīng)用于各種汽車電子設(shè)備中,如汽車安全系統(tǒng)、智能自動駕駛系統(tǒng)、汽車集中顯示系統(tǒng)、衛(wèi)星汽車導(dǎo)航系統(tǒng)、汽車防撞監(jiān)控系統(tǒng)、汽車自動診斷系統(tǒng)及汽車黑匣子等。207)武器裝備在現(xiàn)代化的武器裝備中,如飛機、軍艦、大炮、坦克、導(dǎo)彈、魚類制導(dǎo)、智能武器裝備、航天飛機導(dǎo)航系統(tǒng),都有MCU作為主控芯片嵌入其中,發(fā)揮著重要作用。綜上所述,MCU應(yīng)用的意義絕不限于它的功能及所帶來的經(jīng)濟效益,更重要的意義在于,MCU的應(yīng)用正從根本上改變著傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。2180C51系列MCU是在MCS-51系列的基礎(chǔ)上發(fā)展起來的。早期的80C31只是MCS-51系列眾多芯片中的一類,但是隨著后來的發(fā)展,80C51MCU已經(jīng)形成獨立的系列,并且成為當(dāng)前8位MCU的典型代表。下面介紹最近十幾年在我國比較流行的幾個系列的MCU。1.580C51系列微控制器簡介221)
Atmel公司生產(chǎn)的AT89C5X系列MCUAT89C5X系列MCU繼承了80C51的全部功能,在引腳以及指令系統(tǒng)方面完全兼容。此外,AT89C5X系列MCU中的某些型號又增加了一些新的功能,如WDT、ISP及SPI串行總線技術(shù)等。其中AT89S51增加了ISP及SPI,其時鐘頻率最高達33MHz,F(xiàn)lash存儲器不但允許并行重復(fù)編程,還支持在線可編程寫入技術(shù),串行寫入、速度更快、穩(wěn)定性更好,燒寫電壓也僅需要4~5V。另外,AT89S51也支持由軟件選擇的兩種低功耗方式,非常適合于電池供電或其他要求低功耗的場合。23表1-1Atmel公司生產(chǎn)的AT89C5X系列MCU主要產(chǎn)品的片內(nèi)硬件資源24
2)
STC公司生產(chǎn)的STC89C系列及STC12C系列MCU(1)
STC89C系列MCU性能特點:最高工作頻率為80MHz,F(xiàn)lash程序儲存器容量為4~64KB,RAM數(shù)據(jù)儲存器容量512~1280B,內(nèi)部集成E2PROM2~16KB及看門狗和專用復(fù)位電路,部分集成ADC。25表1-2STC公司生產(chǎn)的STC89C系列MCU主要產(chǎn)品的片內(nèi)硬件資源26
(2)
STC12C系列MCU性能特點:單時鐘/機器周期,超小封裝,2~4路PWM,8~10位高速ADC,F(xiàn)lash程序儲存器512B~12KB,RAM數(shù)據(jù)儲存器256~512B,集成1KB的E2PROM及硬件WDT。產(chǎn)品都有低功耗功能,都有ISP和IAP功能,以及強抗干擾和降低EMI性能。27表1-3STC公司生產(chǎn)的STC12C系列MCU主要產(chǎn)品的片內(nèi)硬件資源283)
SiliconLabs公司生產(chǎn)的C8051F系列MCUC8051F有多個系列,如C8051F02X系列、C8051F04X系列、C8051F06X系列、C8051F34X系列、C8051F35X系列、C8051F41X系列等。我們以C8051F04X系列MCU為例進行介紹。C8051F04X系列是完全集成的混合信號片上系統(tǒng)型MCU,具有64個數(shù)字I/O引腳(C8051F040/2/4/6)或32個數(shù)字I/O引腳(C8051F041/3/5/7),片內(nèi)集成了一個CAN2.0B控制器。下面給出了C8051F04X系列MCU的一些主要特性:29(1)高速、流水線結(jié)構(gòu)的80C51兼容的CIP-51內(nèi)核(可達25MIPS)。(2)集成CAN2.0B控制器,具有32個消息對象,每個消息對象有其自己的標(biāo)識。(3)全速、非侵入式的系統(tǒng)調(diào)試接口(片內(nèi))。(4)真正12位(C8051F040/1)或10位(C8051F042/3/4/5/6/7)、100ksps的ADC,帶PGA和8通道模擬多路開關(guān)。(5)允許高電壓差分放大器輸入到12/10位ADC(60V峰-峰值),增益可編程。30(6)真正8位500ksps的ADC,帶PGA和8通道模擬多路開關(guān)(C8051F040/1/2/3)。(7)兩個12位DAC,具有可編程數(shù)據(jù)更新方式(C8051F040/1/2/3)。(8)
64KB(C8051F040/1/2/3/4/5)或32KB(C8051F046/7)可在系統(tǒng)編程的FlashROM。(9)
4352(4KB+256B)B的片內(nèi)RAM。(10)可尋址64KB地址空間的外部數(shù)據(jù)存儲器接口。
(11)硬件實現(xiàn)的SPI、SMBus/I2C和兩個UART串行接口。(12)
5個通用的16位定時器。31(13)具有6個捕捉/比較模塊的可編程計數(shù)器/定時器陣列。(14)片內(nèi)看門狗定時器、VDD監(jiān)視器和溫度傳感器。具有片內(nèi)VDD監(jiān)視器、看門狗定時器和時鐘振蕩器的C8051F04X系列器件是真正能獨立工作的片上系統(tǒng)。所有模擬和數(shù)字外設(shè)均可由用戶固件使能/禁止和配置。FlashROM還具有在系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲,并允許現(xiàn)場更新固件。32片內(nèi)JTAG調(diào)試電路允許使用安裝在最終應(yīng)用系統(tǒng)產(chǎn)品上的MCU進行非侵入式(不占用片內(nèi)資源)、全速、在系統(tǒng)調(diào)試。該調(diào)試系統(tǒng)支持觀察和修改存儲器和寄存器,支持斷點、觀察點、單步及運行和停機命令。在使用JTAG調(diào)試時,所有的模擬和數(shù)字外設(shè)都可全功能運行。每個MCU都可在工業(yè)溫度范圍(-45~+85℃)工作,工作電壓為2.7~3.6V。端口I/O、和JTAG引腳都容許5V的輸入信號電壓。C8051F040/2/4/6為100管腳TQFP封裝,C8051F041/3/5/7為64管腳TQFP封裝。33表1-4
C8051F04X系列MCU的主要產(chǎn)品片內(nèi)硬件資源微控制器
——原理及應(yīng)用——35第二章80C51系列微控制器的片內(nèi)基本結(jié)構(gòu)
MCU的結(jié)構(gòu)特征是將組成計算機的基本部件集成在一塊電路芯片上,有的MCU生產(chǎn)廠家還集成了一些應(yīng)用于測量和控制的特殊部件,從而構(gòu)成了一個強大的計算機系統(tǒng)芯片。典型80C51系列MCU的基本組成結(jié)構(gòu)如圖2-1所示。下面分別對典型80C51系列MCU各組成部件進行簡單介紹。2.180C51系列微控制器的硬件組成圖2-1典型80C51系列MCU的基本組成結(jié)構(gòu)371.微處理器(CPU)80C51系列MCU中的中央處理器(CPU)是一個8位的處理器,和通用微處理器基本相同,同樣包括了運算器和控制器兩大部分,為了增強實時性,添加了“面向控制”的處理功能,如位處理、查表、多種跳轉(zhuǎn)、乘除法運算、狀態(tài)檢測、中斷處理等。382.程序存儲器(ROM)MCU的存儲器有兩種基本結(jié)構(gòu):普林斯頓(Princeton)結(jié)構(gòu)和哈佛(Harvard)結(jié)構(gòu)。普林斯頓結(jié)構(gòu),又稱為馮·諾依曼結(jié)構(gòu),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一個存儲空間的存儲器結(jié)構(gòu),取指令和取操作數(shù)都在同一總線上,通過分時復(fù)用的方式進行;哈佛結(jié)構(gòu)是一種將程序指令存儲器和數(shù)據(jù)存儲器分開的存儲器結(jié)構(gòu),它的主要特點是將程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個獨立的存儲器,每個存儲器獨立編址、獨立訪問,優(yōu)點是減輕了程序運行時的訪存瓶頸??紤]到MCU“面向控制”的實際應(yīng)用的特點和實時性的要求,80C51系列MCU采用的結(jié)構(gòu)是哈佛結(jié)構(gòu)。39
3.?dāng)?shù)據(jù)存儲器(RAM)在MCU中,用隨機存取存儲器(RAM)來存儲程序在運行期間的工作變量和數(shù)據(jù),所以稱為數(shù)據(jù)存儲器。一般在80C51系列MCU內(nèi)部設(shè)置一定容量(128~256B)的RAM。在80C51系列MCU中,常把寄存器(如工作寄存器、特殊功能寄存器、堆棧等)在邏輯上劃分在片內(nèi)RAM空間中,所以可將80C51系列MCU內(nèi)部RAM看成是寄存器堆,這樣的結(jié)構(gòu)也有利于運行速度的提高。對某些應(yīng)用系統(tǒng)還可在外部擴展數(shù)據(jù)存儲器。40
4.可編程并行I/O口為了滿足“面向控制”的實際應(yīng)用的需要,MCU提供了數(shù)量多、功能強、使用靈活的并行I/O口。不同MCU的并行I/O電路在結(jié)構(gòu)上稍有差異。有些MCU的并行I/O口,不僅可靈活地選作輸入/輸出,而且還具有多種功能。例如,80C51系列MCU的P0口,它既是I/O口,又是系統(tǒng)總線,從而為擴展外部存儲器和I/O接口提供了方便,大大拓寬了MCU的應(yīng)用范圍。41
5.全雙工串行口(UART)現(xiàn)在的80C51系列MCU均配置了全雙工串行口,有的80C51系列MCU(SiliconLabs公司的MCU)甚至配置了多個串行口。串行口提供了與某些終端設(shè)備進行串行通信或和一些特殊功能的器件相連的能力,甚至可用多個MCU相連構(gòu)成多機系統(tǒng),使MCU的功能更強且應(yīng)用更廣。426.定時器/計數(shù)器(T/C)在MCU的實際應(yīng)用中,往往需要精確的定時,或者對外部事件進行計數(shù)。為了減少軟件開銷和提高MCU的實時控制能力,現(xiàn)在的MCU均在內(nèi)部配置了定時器/計數(shù)器電路,通過中斷,實現(xiàn)定時/計數(shù)的自動處理。43
7.中斷控制系統(tǒng)中斷控制系統(tǒng)的加入有效地解決了快速CPU與慢速外部設(shè)備之間的矛盾,可使CPU與外部設(shè)備并行工作,大大提高了工作效率;可以及時處理控制系統(tǒng)中許多隨機產(chǎn)生的參數(shù)與信息,即計算機具有實時處理的能力,從而提高了控制系統(tǒng)的性能;使系統(tǒng)具備了處理故障的能力,提高了系統(tǒng)自身的可靠性。442.289C51系列微控制器的引腳介紹學(xué)習(xí)MCU首先必須知道怎樣設(shè)計電路及怎樣連線,這就需要了解MCU的引腳。熟悉并牢記各引腳的功能,是學(xué)好用好MCU的基本功。89C51芯片是DIP(DualIn-linePackage)封裝的,有40個引腳,如圖2-2(a)所示。89C52芯片與89C51芯片封裝形式一樣。由于技術(shù)的進步及可靠性、小型化的要求,在應(yīng)用中,現(xiàn)在的MCU出現(xiàn)了多種封裝形式。45例如,STC公司的MCU,封裝形式有SOP(SmallOut-linePackage)、PQFP(PlasticQuadFlatPackage)、LQFP(LowrofileQuadFlatPackage),如圖2-2(b)所示;NXP公司的MCU,封裝形式有LQFP、TSOP(ThinSmallOut-linePackage);SiliconLabs公司的MCU,封裝形式有TQFP(ThinQuadFlatPackage)、QFN(QuadFlatNo-leadPackage)等。
46對于初學(xué)者來說,DIP封裝的MCU使用方便,且便于記憶管腳位置,下面就結(jié)合圖2-2介紹標(biāo)準(zhǔn)89C51DIP封裝形式的引腳功能。圖2-2標(biāo)準(zhǔn)89C51DIP和QFP封裝圖47
2.2.1電源及時鐘引腳1.電源引腳MCU使用的是+5V電源,其中40引腳(VDD)接正極,20引腳(VSS)接地。2.時鐘引腳兩個時鐘引腳XTAL1、XTAL2外接晶體與片內(nèi)的反相放大器構(gòu)成一個振蕩器,它為MCU提供了時鐘信號。482.2.2并行I/O口標(biāo)準(zhǔn)89C51MCU具有4個I/O口,32根I/O口線。1.P0口P0口是8位、漏極開路的雙向I/O口。當(dāng)擴展片外存儲器(ROM及RAM)時,P0口用作分時復(fù)用的地址/數(shù)據(jù)總線。492.P1口P1口是8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。在編程/校驗期間,用作輸入低位字節(jié)地址。503.P2口P2口是8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。當(dāng)擴展片外存儲器(ROM及RAM)時,P2口輸出高8位地址。在編程/校驗期間,接收高位字節(jié)地址。514.P3口P3口是8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。P3口還提供各種第二功能,在提供這些功能時,其輸出鎖存器應(yīng)由程序置1,其第二功能定義見表2-1。52表2-1P3口的第二功能定義53EA/VPP是片外程序存儲器訪問允許信號,低電平有效。在編程時,其上施加21V或12V的編程電壓。2.2.3控制引腳控制引腳共4根。1.RSTRST是復(fù)位輸入信號端,高電平有效。振蕩器工作時,在RST上作用兩個機器周期以上的高電平,將使MCU復(fù)位。2.EA/VPP543.ALE/PROGALE/PROG輸出地址鎖存允許信號,當(dāng)訪問片外存儲器時,鎖存低字節(jié)地址。ALE以1/6時鐘頻率的速率穩(wěn)定輸出信號,可用作對外輸出的時鐘或用于定時。在對程序存儲器編程期間,用作輸入,可輸入編程脈沖(PROG)。554.PSENPSEN是片外程序存儲器選通信號,低電平有效。在從片外程序存儲器取指令期間,在每個機器周期,當(dāng)PSEN有效時,程序存儲器的內(nèi)容被送入P0口(數(shù)據(jù)總線)。562.380C51系列微控制器的CPU結(jié)構(gòu)
80C51系列MCU的CPU由運算器和控制器組成。2.3.1運算器運算器主要用來對操作數(shù)進行算術(shù)運算、邏輯運算和位操作運算。它由算術(shù)邏輯運算單元ALU(ArithmeticLogicUnit)、累加器A(ACC,ACCumulator)、寄存器B、暫存器、位處理器CY、程序狀態(tài)字PSW及BCD碼修正電路等組成。572.累加器A累加器A是CPU中使用最頻繁的一個8位寄存器,簡稱A或ACC寄存器。累加器A的作用如下。(1)累加器A是ALU單元的輸入之一,同時它又是ALU運算結(jié)果的存放單元,即ALU運算結(jié)果又通過內(nèi)部總線送入累加器A中存放。(2)
CPU中的數(shù)據(jù)傳送大多都通過累加器A,故累加器A相當(dāng)于一個數(shù)據(jù)的中轉(zhuǎn)站。583.寄存器B寄存器B是為乘法、除法操作而設(shè)置的寄存器,是ALU的輸入之一。在其他情況下,寄存器B可作為普通寄存器使用。594.程序狀態(tài)字PSW圖2-3PSW的格式.程序狀態(tài)字PSW(ProgramStatusWord)是一個逐位定義的8位的特殊功能寄存器,字節(jié)地址是0D0H,它記錄了程序運行狀態(tài)的各種信息,有時,也稱為程序狀態(tài)寄存器。它是一個程序可訪問的特殊功能寄存器,而且可以按位訪問。PSW的格式如圖2-3所示。602.3.2控制器控制器的作用是識別指令,并根據(jù)指令的性質(zhì)控制MCU各功能部件??刂破髦饕沙绦蛴嫈?shù)器PC(ProgramCounter)、程序地址寄存器、指令寄存器IR、指令譯碼器、條件轉(zhuǎn)移邏輯電路及時序控制邏輯電路構(gòu)成。611.程序計數(shù)器PC程序計數(shù)器PC是一個獨立的計數(shù)器,它存放著下一條將要從程序存儲器中取出的指令的地址,我們一般將這個地址稱為當(dāng)前地址或PC的當(dāng)前值。它的工作過程是:讀指令時,程序計數(shù)器PC將其中的數(shù)作為所取指令的地址輸出給程序存儲器,然后程序存儲器按此地址輸出指令字節(jié),同時程序計數(shù)器PC本身自動加1,指向下一條指令在程序存儲器中的地址。62程序計數(shù)器PC中地址的變化決定著用戶程序的流向。80C51中程序計數(shù)器PC是一個16位的計數(shù)器,故其對程序存儲器的尋址范圍是64KB(216=65536=64K)。程序計數(shù)器PC的工作方式有以下幾種。(1)程序計數(shù)器自動加1,這是最基本的工作方式。(2)執(zhí)行有條件或無條件轉(zhuǎn)移指令時,程序計數(shù)器PC將被置入新的數(shù)值,從而使程序的流向發(fā)生變化。63(3)在執(zhí)行子程序調(diào)用或響應(yīng)中斷時,MCU自動完成以下工作:將PC的當(dāng)前值(此時,可稱為斷點值)自動送入堆棧;將子程序的入口地址或中斷向量地址送入PC,程序流向發(fā)生變化,執(zhí)行子程序或中斷服務(wù)程序。子程序或中斷服務(wù)程序執(zhí)行完畢,遇到返回指令RET或RETI時,將堆棧頂部的斷點值彈出到PC中,程序的流向又返回到原來的地方,繼續(xù)執(zhí)行。642.指令寄存器IR、指令譯碼器及定時控制邏輯電路
指令寄存器IR是用來專門存放指令操作碼的專用寄存器。首先,從程序存儲器中讀出的指令先放入IR中;其次,將指令送入指令譯碼器,由指令譯碼器對該指令進行譯碼;最后,譯碼結(jié)果送定時控制邏輯,由定時控制邏輯發(fā)出一系列定時控制信號,控制MCU的各個功能部件進行相應(yīng)的工作。對于運算指令還要把運算結(jié)果的特征送入程序狀態(tài)寄存器PSW中。652.480C51系列微控制器的存儲器結(jié)構(gòu)由于80C51系列MCU采用哈佛結(jié)構(gòu),程序存儲器和數(shù)據(jù)存儲器截然分開;片內(nèi)集成存儲器,而片外可擴展存儲器;因此,80C51系列MCU在物理上便有4個存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。存儲器空間映像如圖2-4所示。661.程序存儲器空間MCU能夠按照一定的次序工作,是由于程序存儲器中存放了二進制代碼形式的程序。程序存儲器空間可劃分為片內(nèi)程序存儲器空間和片外程序存儲器空間兩部分。6789C51片內(nèi)有4KB的程序存儲器,可通過編程器對其編程,也可在線編程(ISP)。如果89C51片內(nèi)的4KB程序存儲器不夠用的話,80C51系列MCU給用戶提供了片外擴展至64KB程序存儲器的能力。至于具體擴展多少程序存儲器,用戶需根據(jù)實際需要來決定。當(dāng)然,由于80C51系列MCU技術(shù)的進步,片內(nèi)程序存儲器已可達64KB。所以,用戶也可根據(jù)需要,選擇合適的片內(nèi)程序存儲器容量的MCU。68圖2-4存儲器空間映像圖692.?dāng)?shù)據(jù)存儲器空間數(shù)據(jù)存儲器空間用來儲存程序在運行期間的變量和數(shù)據(jù)。數(shù)據(jù)存儲器空間可分為片內(nèi)數(shù)據(jù)存儲器(InternalDataMemory,IRAM)和片外數(shù)據(jù)存儲器(eXternalDataMemory,XRAM)兩部分。89C51內(nèi)部有128B的RAM(89C52為256B),其特點是存取速度快、功耗低。70需要注意的是,在片內(nèi)集成的超過256B的RAM,我們一般稱作片內(nèi)集成的XRAM,需用用XRAM的指令MOVX訪問。從圖2-4中看出,片內(nèi)數(shù)據(jù)存儲器空間在物理上包含兩部分:對于89C51來說,區(qū)間00H~7FH為IRAM區(qū),區(qū)間80H~0FFH為SFR區(qū);對于89C52來說,區(qū)間00H~7FH為IRAM區(qū),區(qū)間80H~0FFH為IRAM區(qū)和SFR區(qū)的重疊區(qū)間。由于在80H~0FFH區(qū)間為重疊區(qū)間,所以,CPU通過不同的尋址方式來訪問IRAM區(qū)和SFR區(qū)。71在邏輯上,MCU的存儲器空間可劃分為3個:片內(nèi)、片外統(tǒng)一編址的64KB程序存儲器空間;片內(nèi)256B(89C51)或384B(89C52)數(shù)據(jù)存儲器空間,其中包括特殊功能寄存器(SpecialFunctionRegister,SFR)空間128B;片外64KB的數(shù)據(jù)存儲器空間。如圖2-4所示。由于地址重疊,在訪問這3個不同的存儲器空間時,應(yīng)選用不同形式的指令。
722.4.1程序存儲器程序存儲器(ROM)用來存放MCU的系統(tǒng)程序、應(yīng)用程序、數(shù)據(jù)或表格。首先,編譯程序把用高級語言或匯編語言編寫的程序變換成二進制數(shù)(bin)或十六進制數(shù)(hex);其次,使用在系統(tǒng)可編程(ISP)方式或相應(yīng)的編程器(Programmer)寫入程序存儲器中,用以控制MCU的工作。Intel早期生產(chǎn)的8031內(nèi)部無程序存儲器,因此在使用這種MCU時必須在片外擴展程序存儲器;89C51內(nèi)部有4KB的程序存儲器,可以用ISP方式或編程器給其寫入程序,若其不夠用時可進行外部擴展,外部擴展最多為64KB。73有關(guān)程序存儲器的使用應(yīng)注意以下幾點。(1)EA接高電平時程序?qū)钠瑑?nèi)程序存儲器開始執(zhí)行,當(dāng)PC值超過片內(nèi)ROM時自動轉(zhuǎn)向片外程序存儲器空間執(zhí)行程序。EA接低電平時MCU只能執(zhí)行片外程序存儲器中的程序。在現(xiàn)有技術(shù)下,我們只需要選用合適容量的MCU即可,不用再擴展程序存儲器。因此,在設(shè)計電路時,EA一般接高電平。74(2)程序存儲器的某些單元被固定用于中斷源的中斷服務(wù)程序的入口地址(中斷向量地址或中斷矢量地址)。80C51系列MCU復(fù)位后,程序計數(shù)器的內(nèi)容是0000H,故所有的MCU系統(tǒng)必須從0000H單元開始取指令,執(zhí)行程序。程序存儲器中的0000H地址是系統(tǒng)程序的啟動地址,或者稱為復(fù)位或非屏蔽中斷入口地址。這一點初學(xué)者一定要記牢。另外,對于89C51來說,還有5個單元具有特殊用途,它們是5個中斷源的中斷服務(wù)程序的入口地址;對于89C52來說,在89C51的基礎(chǔ)上,再增加定時器/計數(shù)器T2的中斷入口地址,見表2-2。75表2-2中斷入口地址表762.4.2數(shù)據(jù)存儲器1.片內(nèi)數(shù)據(jù)存儲器(IRAM)片內(nèi)數(shù)據(jù)存儲器是最靈活的地址空間。它又分為三個部分:(1)片內(nèi)低128B區(qū),字節(jié)地址為00H~7FH;(2)片內(nèi)高128B區(qū)(89C51沒有,89C52擁有),字節(jié)地址為80H~0FFH;(3)特殊功能寄存器(SFR)區(qū),字節(jié)地址為80H~0FFH。圖2-5為片內(nèi)數(shù)據(jù)存儲器各部分地址空間的分布圖。77圖2-5片內(nèi)數(shù)據(jù)存儲器78下面詳細介紹片內(nèi)數(shù)據(jù)存儲器三部分的功能。1)片內(nèi)低128B區(qū)在片內(nèi)低128B區(qū),根據(jù)不同的尋址方式又可分為以下3個區(qū)域:工作寄存器區(qū)、位尋址區(qū)、字節(jié)尋址區(qū)。(1)工作寄存器區(qū)。
從圖2-5可看出,字節(jié)地址為00H~1FH的32個單元是4組工作寄存器組,每個組含有8個字節(jié)的寄存器,其編號為R0~R7,工作寄存器也稱為通用寄存器。79對這4組寄存器組來說,在同一時刻只能使用其中一組;使用哪一組作為當(dāng)前工作寄存器組,是通過軟件對程序狀態(tài)寄存器(PSW)中的RS0、RS1位的設(shè)置來實現(xiàn)的(表2-3)。表2-3工作寄存器組的選擇80(2)位尋址區(qū)。
從圖2-5可看出,字節(jié)地址為20H~2FH的16個單元是可以位尋址的IRAM區(qū)。這16個字節(jié)單元,既可進行字節(jié)尋址,又可實現(xiàn)位尋址(共計16×8位=128位)。字節(jié)地址與位地址之間的關(guān)系見表2-4。這里要特別注意位地址和字節(jié)地址的區(qū)別,字節(jié)地址范圍為20H~2FH,位地址范圍為00H~7FH。81表2-4RAM中的位地址單元82(3)字節(jié)尋址區(qū)。從圖2-5可看出,地址為30H~7FH的存儲單元為普通IRAM區(qū),只能進行字節(jié)尋址,可以采用直接尋址方式來訪問每一個字節(jié)。這一區(qū)域,一般稱為用戶RAM區(qū)。832)片內(nèi)高128B區(qū)從圖2-5可看出,對于89C52MCU來說,高128B的IRAM區(qū)和SFR區(qū)的地址空間是重疊的。究竟訪問哪一個區(qū)通過不同的尋址方式來加以區(qū)別,訪問高128BIRAM區(qū)時,選用間接尋址方式;訪問SFR區(qū)時,則應(yīng)選用直接尋址方式。對于89C52MCU來說,用戶RAM區(qū)還包括80H~0FFH的存儲單元。因此,89C52MCU用戶區(qū)包含30H~0FFH,共208個存儲單元。843)特殊功能寄存器(SFR)區(qū)特殊功能寄存器SFR(SpecialFunctionRegister)是80C51系列MCU中各功能部件所對應(yīng)的寄存器,是用來存放相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)的區(qū)域。這是80C51系列MCU中最有特色的部分?,F(xiàn)在所有80C51系列MCU功能的增加和擴展幾乎都是通過增加特殊功能寄存器來實現(xiàn)的。85對于89C51MCU來說,共定義了21個特殊功能寄存器,其名稱和字節(jié)地址列于表2-5中。而在89C52MCU中,除上述的21個特殊功能寄存器之外,還增加了5個特殊功能寄存器,共計26個,見表2-5。86表2-5SFR的名稱及其分布87從表2-5中可以發(fā)現(xiàn)一個規(guī)律:8位地址的末位為0H或8H的特殊功能寄存器不但可以字節(jié)尋址,還可以進行位尋址。這些寄存器與片內(nèi)數(shù)據(jù)存儲器地址為20H~2FH的16個字節(jié)共同構(gòu)成了可位尋址的空間,可以使用位操作指令逐位訪問。88表2-6SFR與位地址的對應(yīng)關(guān)系89
特殊功能寄存器在存儲空間中的分布見表2-7。從表2-7中可看出,在128B的空間中存在大量空白區(qū),這為80C51系列MCU的功能增加提供了極大可能性。90表2-7SFR在存儲空間中的分布91特殊功能寄存器中的累加器A、程序狀態(tài)字(PSW)、寄存器B已經(jīng)在前面介紹過,下面介紹幾個常用的特殊功能寄存器,其余特殊功能寄存器將在后續(xù)相關(guān)章節(jié)中介紹。(1)堆棧指針SP。堆棧(Stack)是一塊按照“先進后出,后進先出”原則組織的存儲器空間,有時也簡稱為棧。一般來說,大部分的CPU都將堆棧設(shè)置在RAM區(qū),80C51系列MCU也不例外。92當(dāng)進行入棧操作時,首先將SP的內(nèi)容自動加1,指向新的存儲單元,再把數(shù)據(jù)壓入存儲單元;當(dāng)進行出棧操作時,首先將當(dāng)前棧頂?shù)膬?nèi)容彈出到相應(yīng)位置(由指令POP確定),然后把SP的內(nèi)容自動減1。93堆棧的作用主要是為子程序調(diào)用或中斷操作而設(shè)置的。它的功能有兩個:保護斷點和保護現(xiàn)場。
此外,堆棧也用于數(shù)據(jù)的臨時存放。94(2)數(shù)據(jù)指針DPTR。數(shù)據(jù)指針DPTR(DataPoinTeR)是一個16位的SFR,它的高位字節(jié)為DPH,低位字節(jié)為DPL。它可以作為一個16位的寄存器DPTR使用,也可以作為兩個8位的寄存器DPH和DPL來使用。80C51系列MCU對外部RAM進行操作時要利用DPTR作為數(shù)據(jù)指針,即DPTR存放外部RAM的16位地址,通過它來訪問64KB的片外RAM或片外ROM。952.片外數(shù)據(jù)存儲器(XRAM)片外數(shù)據(jù)存儲器是在外部存放數(shù)據(jù)的區(qū)域,這一區(qū)域用寄存器間接尋址的方法訪問,所用的寄存器為DPTR、R1或R0。當(dāng)用R1、R0尋址時,由于R0、R1為8位寄存器,因此最大尋址范圍為256B;當(dāng)用DPTR尋址時,由于DPTR為16位寄存器,因此最大尋址范圍為64KB。96
時鐘電路用于產(chǎn)生MCU工作所需要的時鐘信號,而時序所研究的是指令執(zhí)行中各信號之間的相互關(guān)系。MCU本身就如一個復(fù)雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴格地按時序進行工作。2.5時鐘電路與CPU的工作時序972.5.1時鐘電路MCU工作時,是在統(tǒng)一的時鐘脈沖控制下有序進行的。這個脈沖是由時鐘電路(圖2-6)產(chǎn)生的。時鐘電路由振蕩器和分頻器組成,振蕩器產(chǎn)生基本的振蕩信號,然后進行分頻,得到相應(yīng)的時鐘。振蕩電路有兩種振蕩方式:內(nèi)部振蕩和外部振蕩。98圖2-6時鐘電路991.內(nèi)部振蕩方式80C51系列MCU內(nèi)有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。把放大器與作為反饋元器件的晶體振蕩器和陶瓷電容相連,就構(gòu)成了自激振蕩器,其輸出就是時鐘脈沖。內(nèi)部振蕩電路如圖2-7所示。1002.外部振蕩方式外部振蕩方式是把外部已有的時鐘信號引入MCU內(nèi)部。對于HMOS型MCU,外部振蕩電路如圖2-8所示。對于CHMOS型MCU,XTAL1接片外振蕩脈沖輸入端,XTAL2懸空。1012.5.2時序定時單位MCU執(zhí)行指令是在時鐘脈沖控制下一步一步進行的,由于指令的功能和長短各不相同,因此,指令執(zhí)行所需的時間也不一樣。80C51系列MCU的時序定時單位共有4個,從小到大依次是振蕩周期、狀態(tài)周期、機器周期和指令周期。(1)振蕩周期:晶體振蕩器輸出的時鐘周期。(2)狀態(tài)周期:振蕩信號經(jīng)二分頻后形成的時鐘脈沖信號,用S表示。一個狀態(tài)周期的兩個振蕩周期作為兩個節(jié)拍分別稱為節(jié)拍P1和節(jié)拍P2。在P1有效時,通常完成算術(shù)邏輯操作;在P2有效時,一般進行內(nèi)部寄存器之間的傳輸。102(3)機器周期:通常將完成一個基本操作所需要的時間稱為機器周期。80C51系列MCU的一個機器周期包括6個狀態(tài)周期,用S1,S2,…,S6表示;共12個節(jié)拍,依次可表示為S1P1,S1P2,S2P1,S2P2,…,S6P1,S6P2。(4)指令周期:CPU執(zhí)行一條指令所需要的時間為一個指令周期。顯然,指令不同,對應(yīng)的指令周期也不一樣。一個指令周期通常含有1~4個機器周期。80C51系列MCU除了乘法、除法指令是4個機器周期外,其余都是單周期指令或雙周期指令。10380C51系列MCU的典型取指令、執(zhí)行指令的時序如圖2-9所示。圖2-980C51系列MCU取指令、執(zhí)行指令的時序圖104
80C51系列MCU共有復(fù)位、程序執(zhí)行、低功耗及編程四種工作方式。2.680C51系列微控制器的工作方式2.6.1復(fù)位方式1.復(fù)位操作復(fù)位是MCU的初始化操作,只要給RST引腳加上2個機器周期以上的高電平信號即可實現(xiàn)復(fù)位操作。復(fù)位的主要功能是把程序計數(shù)器PC的值初始化為0000H,使MCU從0000H單元開始執(zhí)行程序。105表2-889C51內(nèi)部寄存器的復(fù)位狀態(tài)1062.復(fù)位電路圖2-10復(fù)位電路80C51系列MCU的復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。一般的復(fù)位電路如圖2-10所示。1072.6.2程序執(zhí)行方式程序執(zhí)行方式是MCU最基本的工作方式。由于復(fù)位后PC=0000H,因此程序執(zhí)行總是從地址0000H開始的。但一般情況下,程序并不是真正從0000H開始(例如,中斷入口地址顯然不能存放主程序,主程序的入口地址應(yīng)該跳過這一區(qū)域),為此就必須在0000H開始的單元中存放一條無條件轉(zhuǎn)移指令,以便跳轉(zhuǎn)到實際主程序的入口去執(zhí)行。
1082.6.3低功耗方式圖2-11PCON的格式80C5l系列MCU有兩種低功耗方式,即空閑方式(IdleMode)和掉電方式(PowerDownMode)??臻e方式和掉電方式都是由電源控制寄存器(PCON)的有關(guān)位來控制的。電源控制寄存器是一個逐位定義的8位寄存器,其格式如圖2-11所示。
1091.空閑方式如果使用指令使PCON寄存器IDL位置1,則MCU進入空閑方式。在空閑方式下,若引入一個外中斷請求信號,在MCU響應(yīng)中斷的同時,IDL位被硬件自動清零,MCU就退出空閑方式而進入正常工作方式。中斷服務(wù)程序結(jié)束后,通過RETI指令,就可以使MCU恢復(fù)正常工作后,返回斷點繼續(xù)執(zhí)行程序。
1102.掉電方式PD位控制MCU進入掉電方式。當(dāng)把PD位置1時,MCU便進入掉電方式。80C51系列MCU退出掉電方式的唯一方法是硬件復(fù)位。只要硬件復(fù)位信號出現(xiàn),就能使MCU退出掉電方式。
1112.6.4編程方式80C51系列MCU一般具有兩種編程方式:并行編程方式和串行編程方式。對于并行編程方式,一般使用編程器(Programmer)將程序?qū)懭隡CU。對于串行編程方式,各公司有不同的編程方法及接口,但它們都支持在系統(tǒng)編程(InSystemProgramming,ISP)。112例如,Atmel公司89S51系列MCU使用SPI接口將程序?qū)懭隖lashROM;STC公司及NXP公司的MCU則使用UART接口將程序?qū)懭隖lashROM;而SiliconLabs公司則使用JTAG接口或C2接口將程序?qū)懭隖lashROM。STC公司MCU已經(jīng)固化有ISP引導(dǎo)碼,并設(shè)置為上電復(fù)位進入ISP。下面我們以STC公司MCU為例介紹串行編程方式。STC公司的MCU在線編程典型電路如圖2-12所示。113圖2-12STC公司的MCU在線編程典型電路114STC公司的MCU串行編程步驟如下。(1)下載并安裝STC公司提供的ISP工具STC-ISP.EXE。(2)使用串行線將計算機的串口與編程電路的串口連接起來。(3)運行STC-ISP,編程界面如圖2-13所示。
115圖2-13STC-ISP編程界面116(4)
STC-ISP設(shè)置步驟如下。Step1/步驟1:選擇你所使用的MCU型號,如STC89C52RC、STC89LE516AD等。Step2/步驟2:按下按鈕“打開程序文件”以打開文件。Step3/步驟
3:選擇串行口,如串行口1—COM1,串行口2—COM2,…。有些新式筆記本電腦沒有RS232串行口,可買一條USB-RS232轉(zhuǎn)接器。117Step4/步驟
4:Doublespeed/雙倍速設(shè)置。設(shè)置是否雙倍速,一般標(biāo)準(zhǔn)89C51時鐘選擇12T/單倍速;如需提高MCU的工作速度,可選擇6T/雙倍速。STC89C51RC/RD+系列可以反復(fù)設(shè)置雙倍速/單倍速,新的設(shè)置停電后重新冷啟動后才能生效。Step5/步驟
5:選擇“Download/下載”按鈕將用戶的程序?qū)懭隡CU內(nèi)部,可重復(fù)執(zhí)行Step5/步驟5,也可選擇“Re-Download/重復(fù)下載”。按鈕下載時注意看提示,主要看是否要給MCU上電或復(fù)位,下載速度比一般通用編程器快。一般先選擇按下“Download/下載”按鈕,然后再給MCU上電復(fù)位(即按下“Download/下載”按鈕前,電源是斷開的)。
118所有步驟中,除以上選項外,其余選項可使用默認狀態(tài)。但需要特別注意的是,如果在Step5/步驟5中選項“當(dāng)目標(biāo)代碼發(fā)生變化后自動調(diào)入文件,并立即發(fā)送下載命令”處于未選中狀態(tài)(軟件默認狀態(tài))時,源程序一旦發(fā)生變化并再次編譯,就需要再次執(zhí)行Step2/步驟2。微控制器
——原理及應(yīng)用——120第三章80C51系列微控制器的指令系統(tǒng)及程序設(shè)計指令是微處理器控制計算機進行某種操作的命令,而指令系統(tǒng)則是全部指令的集合。計算機的功能是由其指令系統(tǒng)來實現(xiàn)的。一般來說,指令系統(tǒng)越豐富,計算機的功能也就越強。3.1概述121
3.1.1指令分類80C51系列單片機共有111條指令,按其功能可分為5大類:數(shù)據(jù)傳送類指令(28條)、算術(shù)運算類指令(24條)、邏輯運算類指令(25條)、控制轉(zhuǎn)移類指令(17條)、布爾操作類指令(17條)。按指令代碼的字節(jié)數(shù)可分為3大類:單字節(jié)指令(49條)、雙字節(jié)指令(45條)、三字節(jié)指令(17條)。按指令的執(zhí)行時間可分為3大類:單機器周期指令(64條)、雙機器周期指令(45條)、四機器周期指令(2條)。1223.1.2指令格式[標(biāo)號:]操作碼[操作數(shù)1][,操作數(shù)2][,操作數(shù)3][;注釋][]表示其中內(nèi)容是可選項。(1)標(biāo)號是一條指令的標(biāo)志,是可選項,與操作碼之間用“:”隔開。(2)操作碼指出了CPU應(yīng)執(zhí)行的操作類型,即操作性質(zhì)。(3)操作數(shù)指出了參加操作的數(shù)據(jù)或數(shù)據(jù)的存放地址。它以一個或幾個空格與操作碼隔開。
(4)注釋不屬于指令執(zhí)行部分,即不會被編譯系統(tǒng)轉(zhuǎn)換為機器碼。用“;”作為指令與注釋的分隔符。1233.1.3指令中的符號在說明和使用80C51系列MCU指令系統(tǒng)的功能時,經(jīng)常使用一些符號,其意義如下。A 累加器(ACC)。通常用ACC表示累加器的地址,用A表示它的名稱。B 寄存器??梢詫⒘⒓磾?shù)直接送給直接地址。AB 累加器(ACC)和寄存器(B)組成的寄存器對。Direct8 位片內(nèi)RAM的存儲單元地址。#data 位立即數(shù)。
#datal6 16位立即數(shù)。124Addr16 16位的地址碼。Addr1l 11位的地址碼。Rel 以補碼表示的8位偏移量,其值為?128~+127。Bit 片內(nèi)RAM中可直接尋址的位地址。Rn 工作寄存器,其中n=0~7。Ri 工作寄存器,其中i=0~1。@ 間接尋址符號。+ 加。?
減。*
乘。/ 除。125∧ 與?!?/p>
或。
異或。= 等于。< 小于。> 大于。<> 不等于?!?→) 表示數(shù)據(jù)傳輸方向。(X) X(寄存器或RAM地址)單元的內(nèi)容。((X)) 以X單元的內(nèi)容為地址的存儲器單元內(nèi)容。(X) 寄存器的內(nèi)容取反。126Rrr 指令代碼中rrr三位的值由寄存器Rn確定,R7~R0對應(yīng)的rrr為11l~000。$ 本條指令的起始地址。指令的一個重要組成部分是操作數(shù),有些操作數(shù)不能直接給出,但可以給出操作數(shù)所存放的地址。指令給出尋找操作數(shù)的方式稱為尋址方式。根據(jù)指令操作的需要,計算機有多種尋址方式。80C51系列MCU指令系統(tǒng)的尋址方式共有7種。3.2尋址方式1273.2.1立即尋址這種尋址方式在指令中直接給出參與操作的常數(shù)(稱為立即數(shù))。立即數(shù)有1字節(jié)和2字節(jié)兩種。例如指令:MOV A,#5AH ;A←5AH其功能是將立即數(shù)5AH送入累加器A中。又如指令:MOV DPTR,#2100H ;DPTR←2100H其功能是將16位立即數(shù)2100H送入16位寄存器DPTR中。1283.2.2直接尋址直接尋址是指在指令中給出操作數(shù)的直接地址,該地址指出了操作數(shù)所在的字節(jié)單元地址。直接尋址方式可訪問以下兩種存儲空間。(1)特殊功能寄存器(SFR)空間。SFR只能用直接尋址方式訪問。(2)片內(nèi)RAM的低128B空間(00H~7FH)。例如指令:MOV 30H,60H;30H←(60H)1293.2.3寄存器尋址寄存器尋址是由指令給出某一寄存器的內(nèi)容作為操作數(shù)。寄存器尋址對所選的工作寄存器區(qū)中R7~R0進行操作。累加器A、寄存器對AB和DPTR也可用寄存器尋址方式訪問。例如指令:INC R0 ;R0←(R0)+1,其功能是對R0進行操作,使
其內(nèi)容加1MOV DPL,A ;DPL←(A),將A的內(nèi)容傳輸?shù)郊拇嫫鱀PL 中MOV A,P1 ;此指令還可以寫成“MOVA,90H”,90H 是P1口的直接地址1303.2.4寄存器間接尋址寄存器間接尋址是由指令指出某一寄存器的內(nèi)容作為操作數(shù)的地址。80C51系列MCU中可作為間接尋址的寄存器有:(1)片內(nèi)RAM低128B單元。(2)用堆棧指針SP來尋址的堆棧單元,即堆棧操作指令(PUSH和POP)的尋址方式。(3)用R0、R1或數(shù)據(jù)指針DPTR來尋址片外擴展的數(shù)據(jù)存儲器。131例如指令:MOVA,@R0;A←((R0))其功能是把指定的R0內(nèi)容作為參與操作的數(shù)據(jù)的地址,把此地址單元的內(nèi)容傳至累加器A中,寄存器間接尋址用符號“@”表示,以區(qū)別于寄存器尋址。例如,將外部存儲單元2010H中的內(nèi)容傳輸?shù)嚼奂悠鰽中,則指令為:MOV DPTR,#2010H
;DPTR中的內(nèi)容為2010HMOVXA,@DPTR ;將XRAM的2010H單元的內(nèi)容傳
輸?shù)紸中1323.2.5變址尋址(基址寄存器+變址寄存器間接尋址)變址尋址方式以16位的程序計數(shù)器PC(當(dāng)前地址)或數(shù)據(jù)指針DPTR作為基址寄存器,以8位的累加器A作為變址寄存器,基址寄存器內(nèi)容和變址寄存器內(nèi)容相加,其和形成16位的地址。80C51系列MCU共有3條變址尋址的指令:MOVC
A,@A+PC ;A←((A)+(PC))MOVC A,@A+DPTR ;A←((A)+(DPTR))JMP@A+DPTR ;PC←(A)+(DPTR)1333.2.6相對尋址相對尋址是把指令中規(guī)定的地址作為偏移量與PC的當(dāng)前值相加,得到參與操作的數(shù)據(jù)的地址。相對尋址中的偏移量是有符號數(shù),并以補碼形式給出,所以轉(zhuǎn)移的目標(biāo)地址是在PC當(dāng)前值的基礎(chǔ)上加偏移量。例如指令:JC #80H ;若(CY)=1,則跳轉(zhuǎn)若轉(zhuǎn)移指令存放在1005H單元中(即PC=1007H),則當(dāng)前PC值與80H(即-128)相加,就形成了目標(biāo)地址,所以
目標(biāo)地址=PC當(dāng)前值+偏移量=1007H+0FF80H=0F87H即程序?qū)⑻D(zhuǎn)到0F87H處執(zhí)行。1343.2.7位尋址80C51系列MCU有位處理功能,可以對數(shù)據(jù)位進行操作,因此就有相應(yīng)的位尋址方式。位尋址的尋址范圍如下。1)片內(nèi)RAM中的位尋址區(qū)2)可位尋址的特殊功能寄存器位對這些尋址位在指令中有4種表示方法。我們以PSW(字節(jié)地址0D0H)中的位5(位名稱F0)為例加以介紹。135
①直接使用位地址表示方法。例如:MOV C,0D5H ;將位地址為0D5H的內(nèi)容送入位累加器②存儲單元地址加位的表示方法。例如:MOV C,0D0H.5 ;將字節(jié)地址為0D0H的位5的內(nèi)容送入位
累加器③特殊功能寄存器符號加位的表示方法。例如:MOV C,PSW.5 ;將特殊功能寄存器PSW的位5的內(nèi)容送
入位累加器④位名稱表示方法,特殊功能寄存器中的一些尋址位是有名稱的。例如:MOV C,F0 ;將用戶標(biāo)志位F0的內(nèi)容送位累加器136對于指令中的操作數(shù),因為指令操作常伴有從右向左傳送數(shù)據(jù)的內(nèi)容,所以常把左邊操作數(shù)稱為目的操作數(shù),而右邊操作數(shù)稱為源操作數(shù)。上面所講的各種尋址方式都是針對源操作數(shù)的,實際上,目的操作數(shù)也有尋址的問題??偟膩碚f,源操作數(shù)的尋址方式多,而目的操作數(shù)的尋址方式較少,只有寄存器尋址、直接尋址、寄存器間接尋址和位尋址4種方式。因此,知道了源操作數(shù)的尋址方式,也就不難了解目的操作數(shù)的尋址問題了。137表3-17種基本尋址方式及其相應(yīng)的操作數(shù)尋址空間總以上介紹了80C51系列MCU指令系統(tǒng)的7種尋址方式,概括起來見表3-1。1383.3.1數(shù)據(jù)傳輸類指令3.3指令系統(tǒng)數(shù)據(jù)傳輸操作是CPU最基本、最重要的操作之一。在程序中,數(shù)據(jù)傳輸指令占有相當(dāng)大的比重。數(shù)據(jù)傳輸是否靈活、快速,對程序的編寫和執(zhí)行速度會產(chǎn)生很大影響。1.通用傳輸指令指令格式:MOV<目的操作數(shù)>,<源操作數(shù)>功能:把源操作數(shù)指定的內(nèi)容傳輸?shù)侥康牟僮鲾?shù)指定的存儲器單元中,指令不改變源操作數(shù)。139
1)以累加器A為目的地址的指令指令 操作MOV A,Rn ;A←(Rn)MOV A,direct ;A←(direct)MOV A,@Ri ;A←((Ri))MOV A,#data ;A←data功能是把源操作數(shù)指定的內(nèi)容送入累加器A中。例如:MOV A,R7 ;A←(R7)MOV A,70H ;A←(70H)MOV A,@R0 ;A←((R0))MOV A,#80H ;A←80H140
2)以Rn為目的地址的指令指令 操作
MOV Rn,A ;Rn←(A)MOV Rn,direct ;Rn←(direct)MOV Rn,#data ;Rn←data這組指令的功能是把源操作數(shù)指定的內(nèi)容送入工作寄存器區(qū)R7~R0中的某一寄存器中。例如:
MOV R3,A ;R3←(A)MOV R7,70H ;R7←(70H)MOV R5,#0FAH ;R5←0FAH141
3)以直接地址為目的地址的指令指令 操作
MOV direct,A ;direct←(A)MOV direct,Rn ;direct←(Rn)MOV direct,@Ri ;direct←((Ri))MOV direct1,direct2 ;direct1←(direct2)MOV direct,#data ;direct←data這組指令的功能是將源操作數(shù)指定的內(nèi)容送入由直接地址給出的內(nèi)部RAM存儲單元中。142例如:
MOV Pl,A ;P1←(A),等價于MOV90H,AMOV 70H,R3 ;70H←(R3)MOV 30H,@R0 ;30H←((R0))MOV 0E0H,78H ;0E0H←(78H)MOV 01H,#50H ;01H←50H,等價于MOVR1,#50H1434)以寄存器間接地址為目的地址的指令指令 操作
MOV @Ri,A Ri)←(A)MOV @Ri,direct ;(Ri)←(direct)MOV @Ri,#data ;(Ri)←data
這組指令的功能是把源操作數(shù)指定的內(nèi)容送入R0或R1指出的片內(nèi)RAM存儲單元中。例如:
MOV @R1,A ;R1←(A)MOV @R0,70H ;R0←(70H)MOV @R1,#78H ;R1←78H1445)
16位數(shù)據(jù)傳輸指令指令 操作
MOV DPTR,#data16 ;DPTR←data16這條指令的功能是把一個16位的立即數(shù)送入DPTR中。16位的數(shù)據(jù)指針DPTR由DPH和DPL組成。這條指令把立即數(shù)的高8位送DPH,低8位送DPL。145例3.1設(shè)(70H)=60H,(60H)=20H,P1口為輸入口,當(dāng)前的輸入狀態(tài)為0B7H,執(zhí)行下面程序:MOV R0,#70H ;R0←70HMOV A,@R0 ;A←60HMOV R1,A ;R1←60HMOV A,@R1 ;A←20HMOV @R0,P1 ;(70H)←0B7H結(jié)果為:(70H)=0B7H,(A)=20H,(R1)=60H,(R0)=70H。146
2.片外數(shù)據(jù)存儲器(或擴展I/O口)的傳輸指令指令格式:MOVX<目的操作數(shù)>,<源操作數(shù)>功能:實現(xiàn)片外數(shù)據(jù)存儲器(或擴展I/O口)與累加器A之間的數(shù)據(jù)傳輸。尋址方式只能用間接尋址。這組指令有:指令 操作
MOVX A,@DPTR ;A←((DPTR))MOVX A,@Ri ;A←((Ri))MOVX @DPTR,A ;(DPTR)←(A)MOVX @Ri,A ;(Ri)←(A)147例如,若要把片外RAM的2010H單元的內(nèi)容傳輸?shù)嚼奂悠鰽中,則可采用以下指令:
MOV P2,#20H ;P2←20H,得到頁地址MOV R0,#10H ;R0←10H,得到頁內(nèi)地址MOVX A,@R0 ;A←(2010H)當(dāng)然,也可使用DPTR進行間接尋址,完成上述功能的指令為:MOV DPTR,#2010H ;DPTR←2010H,得到片外 RAM的地址MOVX A,@DPTR ;A←(2010H)1483.程序存儲器向累加器A傳輸指令指令格式:MOVCA,<源操作數(shù)>功能:從程序存儲器中讀取源操作數(shù)指定的內(nèi)容送入累加器A中。尋址方式只能采用變址尋址。這組指令包括以下兩條指令。
指令 操作MOVC A,@A+PC ;A←((A)+(PC))MOVC A,@A+DPTR ;A←((A)+(DPTR))149例3.2編寫根據(jù)累加器A中的數(shù)(0~9)查平方表的程序。解:把平方表用偽指令DB存放在程序存儲器中,把表的首地址置入DPTR中,把數(shù)0~9存放在累加器A中,程序如下:MOV DPTR,#TABLE ;TABLE表示表首地址MOVC A,@A+DPTRTABLE:DB 00H,01H,04H,09H,10H,19H,24H,31H,40H,51H
這組指令常用于程序存儲器中的查表操作,故也稱作查表指令,是80C51系列MCU的特色指令之一。其中,“MOVCA,@A+PC”指令稱為近程查表指令(因為它只能在以PC當(dāng)前值為基準(zhǔn)的+256B范圍內(nèi)查表),而“MOVCA,
@A+DPTR”稱為遠程查表指令(它可以在64KB范圍內(nèi)查表)。1504.?dāng)?shù)據(jù)交換指令1)字節(jié)交換指令XCH
指令
操作XCH A,Rn ;(A)←→(Rn)XCH A,direct ;(A)←→(direct)XCH A,@Ri ;(A)←→((Ri))
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電視安裝質(zhì)量保證協(xié)議
- 2024專業(yè)版商業(yè)合作合同書
- 房屋建筑工程清包合同格式
- 集資房指標(biāo)轉(zhuǎn)讓協(xié)議書
- 婚前購房協(xié)議書范本
- 技術(shù)合作三方協(xié)議
- 國際快遞服務(wù)協(xié)議范本
- 2024年購車借款協(xié)議書范本
- 股權(quán)分紅協(xié)議書模板
- 二手購房合同協(xié)議范本
- 坐標(biāo)紙(網(wǎng)格型坐標(biāo)紙-直接打印即可)
- 占比分析類PPT模板
- GB/T 21633-2020摻混肥料(BB肥)
- GB/T 21435-2008相變加熱爐
- 河南省洛陽市《綜合能力測試》事業(yè)單位國考真題
- 智慧消防整體解決方案消防大數(shù)據(jù)一體化管理平臺解課件
- 《推窗風(fēng)來》中考語文作文優(yōu)秀6篇
- 腹部血管疾病的超聲診斷課件整理
- 《客源國概論》期末考試題
- 公司吸煙管理規(guī)定范文
- 《江蘇省建筑業(yè)10項新技術(shù)(2021)》
評論
0/150
提交評論