單片機(jī)原理及應(yīng)用課件_第1頁(yè)
單片機(jī)原理及應(yīng)用課件_第2頁(yè)
單片機(jī)原理及應(yīng)用課件_第3頁(yè)
單片機(jī)原理及應(yīng)用課件_第4頁(yè)
單片機(jī)原理及應(yīng)用課件_第5頁(yè)
已閱讀5頁(yè),還剩236頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

單片機(jī)原理及應(yīng)用第1章

單片機(jī)概述本章主要介紹單片機(jī)的發(fā)展,基本的結(jié)構(gòu)和特點(diǎn),單片機(jī)的應(yīng)用模式和領(lǐng)域,單片機(jī)的供應(yīng)狀態(tài)等。單片微型計(jì)算機(jī)就是將CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器和多種接口都集成到一塊集成電路芯片上的微型計(jì)算機(jī)。因此,一塊芯片就構(gòu)成了一臺(tái)計(jì)算機(jī)。它已成為工業(yè)控制領(lǐng)域、智能儀器儀表、尖端武器、日常生活中最廣泛使用的計(jì)算機(jī)。課程目的 本課程為電子類專業(yè)的主干課程,必修課,從理論和實(shí)踐兩方面解決計(jì)算機(jī)應(yīng)用中的多種問題。本課程是在學(xué)生學(xué)完電子技術(shù)類基礎(chǔ)課程之后,為加強(qiáng)對(duì)學(xué)生技術(shù)應(yīng)用能力的培養(yǎng)而開設(shè)的體現(xiàn)電子技術(shù)、計(jì)算機(jī)技術(shù)綜合應(yīng)用的綜合性課程。 本課程的任務(wù)是使學(xué)生獲得單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本理論、基本知識(shí)與基本技能,掌握單片機(jī)應(yīng)用系統(tǒng)各主要環(huán)節(jié)的設(shè)計(jì)、調(diào)試方法,并了解單片機(jī)在測(cè)量、控制等電子技術(shù)應(yīng)用領(lǐng)域的應(yīng)用。初步具備應(yīng)用單片機(jī)進(jìn)行設(shè)備技術(shù)改造、產(chǎn)品開發(fā)的能力。課程的先修課程數(shù)字電路、模擬電子技術(shù)。后期訓(xùn)練單片機(jī)課程設(shè)計(jì)、電子系統(tǒng)設(shè)計(jì)。深入應(yīng)用電子設(shè)計(jì)競(jìng)賽、畢業(yè)設(shè)計(jì)。工程應(yīng)用企業(yè)電子產(chǎn)品開發(fā)。

1.1單片微機(jī)的發(fā)展

1.1.1單片微機(jī)的概念

單片微機(jī)是單片微型計(jì)算機(jī)SCMC(SingleChipMicroComputer)的譯名簡(jiǎn)稱,在國(guó)內(nèi)也常簡(jiǎn)稱為“單片微機(jī)”或“單片機(jī)”。它包括中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器、串行口和I/O等等。 除了工業(yè)控制領(lǐng)域,單片微機(jī)在家用電器、電子玩具、通信、高級(jí)音響、圖形處理、語(yǔ)言設(shè)備、機(jī)器人、計(jì)算機(jī)等各個(gè)領(lǐng)域迅速發(fā)展。目前單片微機(jī)的世界年產(chǎn)量已達(dá)100億片,而在中國(guó)大陸地區(qū)單片微機(jī)的年應(yīng)用量已達(dá)6億片左右,截止2001年4月,由中國(guó)大陸地區(qū)自行設(shè)計(jì)和生產(chǎn)的單片微機(jī)也已達(dá)到2000萬片。 我們可以把單片機(jī)的發(fā)展歷史劃分為四階段:第一階段(1976~1978年):低性能單片機(jī)的探索階段。以Intel公司的MCS-48為代表,采用了單片結(jié)構(gòu),即在一塊芯片內(nèi)含有8位CPU、定時(shí)/計(jì)數(shù)器、并行I/O口、RAM和ROM等。主要用于工業(yè)領(lǐng)域。第二階段(1978~1982年):高性能單片機(jī)階段,這一類單片機(jī)帶有串行I/O口,8位數(shù)據(jù)線、16位地址線可以尋址的范圍達(dá)到64K字節(jié)、控制總線、較豐富的指令系統(tǒng)等。這類單片機(jī)的應(yīng)用范圍較廣,并在不斷的改進(jìn)和發(fā)展。第三階段(1982~1990年):16位單片機(jī)階段。16位單片機(jī)除CPU為16位外,片內(nèi)RAM和ROM容量進(jìn)一步增大,實(shí)時(shí)處理能力更強(qiáng),體現(xiàn)了微控制器的特征。例如Intel公司的MCS-96主振頻率為12M,片內(nèi)RAM為232字節(jié),ROM為8K字節(jié),中斷處理能力為8級(jí),片內(nèi)帶有10位A/D轉(zhuǎn)換器和高速輸入/輸出部件等。第四階段(1990年~):微控制器的全面發(fā)展階段,各公司的產(chǎn)品在盡量兼容的同時(shí),向高速、強(qiáng)運(yùn)算能力、尋址范圍大以及小型廉價(jià)方面發(fā)展。

1970年微型計(jì)算機(jī)研制成功之后,隨著大規(guī)模集成電路的發(fā)展又出現(xiàn)了單片微機(jī)。美國(guó)Intel公司1971年生產(chǎn)的4位單片微機(jī)4004和1972年生產(chǎn)的8位單片微機(jī)8008,特別是1976年MCS-48單片微機(jī)問世以來,在短短的二十幾年間,經(jīng)歷了四次更新?lián)Q代,其發(fā)展速度大約每二三年要更新一代、集成度增加一倍、功能翻一番。發(fā)展速度之快、應(yīng)用范圍之廣,已達(dá)到了驚人的地步。它已滲透到生產(chǎn)和生活的諸領(lǐng)域,可謂“無孔不入”。 1976年Intel公司首先推出MCS-48系列單片微型計(jì)算機(jī)。它包括計(jì)算機(jī)的三個(gè)基本單元,已成為真正意義的單片微機(jī),為單片微機(jī)的發(fā)展奠定了基礎(chǔ),成為單片微機(jī)發(fā)展進(jìn)程中的一個(gè)重要階段。

許多半導(dǎo)體公司和計(jì)算機(jī)公司爭(zhēng)相研制和發(fā)展自己的單片微機(jī)系列,有Motorola公司的6801、6802,Zilog公司的Z-8系列,Rockwell公司的6501、6502等,此外,日本的NEC公司、日立公司及EPSON公司等,也都相繼推出了各具特色的單片微機(jī)品種。 最具典型性的屬Intel公司的MCS-51系列單片微機(jī),它具有品種全、兼容性強(qiáng)、軟硬件資料豐富等特點(diǎn)。直到現(xiàn)在MCS-51仍不失為單片微機(jī)中的主流機(jī)型。由于8位單片微機(jī)的高性能價(jià)格比,已成為單片微機(jī)中的主流機(jī)型。

在8位單片微機(jī)之后,16位單片微機(jī)也有很大發(fā)展。1983年Intel公司推出的MCS-96系列單片微機(jī)。與MCS-51相比,MCS-96不但字長(zhǎng)增加一倍,而且還具有4路或8路的10位A/D轉(zhuǎn)換功能,此外,在其它性能方面也有一定的提高。飛利浦公司推出了與80C51在源碼級(jí)兼容性的16位單片微機(jī),即80C51XA(每一條80C51指令可以1∶1地被翻譯成一條XA指令,僅XCHD指令除外),用戶不需投入很大的軟件開銷和人員就能較大的提高產(chǎn)品性能。80C51XA具有的高性能包括:執(zhí)行速度快、支持高級(jí)語(yǔ)言(比如C語(yǔ)言)、支持實(shí)時(shí)多任務(wù)執(zhí)行、易于形成派生系列產(chǎn)品、地址寬度可變(用戶可以方便地將外部地址線寬度選定為12位、16位、20位、24位等等。在工業(yè)控制產(chǎn)品、高檔智能儀表、彩色復(fù)印機(jī)、錄像機(jī)等應(yīng)用領(lǐng)域,

單片微機(jī)正朝多功能、多選擇、高速度、低功耗、低價(jià)格、擴(kuò)大存儲(chǔ)容量和加強(qiáng)I/O功能及結(jié)構(gòu)兼容方向發(fā)展。 ⑴多功能 在單片微機(jī)中盡可能多的把應(yīng)用系統(tǒng)中所需要的存儲(chǔ)器、各種功能的I/O口都集成在一塊芯片內(nèi),即外圍器件內(nèi)裝化,如把LED、LCD顯示驅(qū)動(dòng)器集成在8位單片微機(jī)中,如把A/D、D/A、乃至多路模擬開關(guān)和采樣/保持器也集成在單片微機(jī)芯片中,從而成為名副其實(shí)的單片微機(jī)。 ⑵高性能 為了提高速度和執(zhí)行效率,在單片微機(jī)中開始使用RISC體系結(jié)構(gòu)、并行流水線操作和DSP等的設(shè)計(jì)技術(shù),使單片微機(jī)的指令運(yùn)行速度得到大大提高,其電磁兼容等性能明顯地優(yōu)于同類型的微處理器。 ⑶全盤CMOS化趨勢(shì) 單片微機(jī)采用二種半導(dǎo)體工藝生產(chǎn),HMOS工藝即高密度短溝道MOS工藝,具有高速度和高密度;CHMOS工藝即互補(bǔ)金屬氧化物的HMOS工藝,除具有HMOS的優(yōu)點(diǎn)外,還具有CMOS工藝的低功耗特點(diǎn)。如8051的功耗為630mw,而80C51的功耗僅120mw。 從第三代單片微機(jī)起開始淘汰非CMOS工藝。 ⑷推行串行擴(kuò)展總線 推行串行擴(kuò)展總線可以顯著減少引腳數(shù)量,簡(jiǎn)化系統(tǒng)結(jié)構(gòu)。隨著外圍器件串行接口的發(fā)展,單片微機(jī)的串行接口的普遍化、高速化,使得并行擴(kuò)展接口技術(shù)日漸衰退。

推出了刪去了并行總線的非總線單片微機(jī),需要外擴(kuò)器件(存儲(chǔ)器、I/O等)時(shí),采用串行擴(kuò)展總線,甚至用軟件虛擬串行總線來實(shí)現(xiàn)。 由于集成度的進(jìn)一步提高,有的單片微機(jī)的尋址能力已突破64KB的限制,8位、16位的單片微機(jī)有的尋址能力已達(dá)到1MB和16MB。片內(nèi)ROM的容量可達(dá)62KB,RAM的容量可達(dá)2KB。1.280C51系列單片微機(jī)

8051是美國(guó)INTEL公司在1980年推出的MCS-51系列的第一個(gè)成員,MCS是INTEL公司的注冊(cè)商標(biāo)。其它公司生產(chǎn)的以8051為核心單元的其它派生單片微機(jī)卻不能稱為MCS-51系列,只能稱為8051系列。8051系列泛指所有公司(也包括INTEL公司)生產(chǎn)的以8051為核心單元的所有單片微機(jī)。 80C51系列包括Intel公司的MCS-51,又包括了以8051為核心單元的世界許多公司生產(chǎn)的單片微機(jī),比如PHILIPS(飛利浦公司)的83C552及51LPC系列等、SIEMENS(西門子公司)的SAB80512等、AMD(先進(jìn)微器件公司)的8053等、OKI(日本沖電氣公司)的MSM80C154等、ATMEL公司的Flash單片微機(jī)89C51等、DALLAS公司的DS5000/DS5001等、華邦公司的W78C51及W77C51等。

從MCS-48單片微機(jī)發(fā)展到如今的新一代單片微機(jī),大致經(jīng)歷了三代。如以Intel8位單片微機(jī)為例, 第一代:以MCS-48系列單片微機(jī)為代表。屬于低性能單片微機(jī)階段。 第二代:以MCS-5l系列的8051、8052單片微機(jī)為代表。 主要的技術(shù)特征是為單片微機(jī)配置了完善的外部并行總線(AB、DB、CB)和具有多機(jī)識(shí)別功能的串行通信接口(UART),規(guī)范了功能單元的特殊功能寄存器(SFR)控制模式及適應(yīng)控制器特點(diǎn)的布爾處理系統(tǒng)和指令系統(tǒng),為發(fā)展具有良好兼容性的新一代單片微機(jī)奠定了良好的基礎(chǔ)。

第三代:以80C51系列單片微機(jī)為代表。 它包括了Intel公司發(fā)展MCS-51系列的新一代產(chǎn)品,如8XC152、80C51FA/FB、80C5lGA/GB,還包括了Phlips、Siemens、ADM、OKI、ATMEL等公司以80C51為核心推出的大量各具特色、與MCS-51兼容的單片微機(jī)。 部分廠家所生產(chǎn)的80C51系列或與之相兼容的單片微機(jī)的特點(diǎn)列于表1-l、表1一2及表1一3中。 80C51系列單片微機(jī)保留了MCS-51的所有特性,內(nèi)部組成基本相同。80C51系列增設(shè)了兩種可以用軟件進(jìn)行選擇的低功耗工作方式:空閑方式和掉電方式。 87C51是80C51含EPROM的產(chǎn)品,89C51是80C51含EEPROM的產(chǎn)品。新一代的80C51系列除了上述的結(jié)構(gòu)特性外,還向外部電路擴(kuò)展,有的公司型號(hào)配備了串行擴(kuò)展線,比如芯片間的總線(飛利浦公司的I2C總線)、設(shè)備間網(wǎng)絡(luò)系統(tǒng)總線(CAN總線)等,為外部提供了完善的總線結(jié)構(gòu)。采用總線方式的應(yīng)用系統(tǒng)多屬較復(fù)雜的工控系統(tǒng)、智能儀表、監(jiān)測(cè)系統(tǒng),或滿足這些應(yīng)用而構(gòu)成的多機(jī)與網(wǎng)絡(luò)系統(tǒng)。總線方式的單片微機(jī)在不使用外部并行總線時(shí),外部并行總線引腳可作為I/O口用。在掩膜用戶程序時(shí),還可要求將這些I/O口改造成具有各種驅(qū)動(dòng)能力的I/O口。根據(jù)應(yīng)用的需要,部分產(chǎn)品對(duì)總線結(jié)構(gòu)作了重大改進(jìn),推出了非總線型單片微機(jī),其對(duì)外部不存在并行三總線(AB、DB、CB),必要時(shí)可以通過串行總線進(jìn)行擴(kuò)展。

1.3單片微機(jī)的應(yīng)用

單片機(jī)最主要的應(yīng)用就是構(gòu)成智能系統(tǒng),智能系統(tǒng)應(yīng)具備數(shù)據(jù)采集、處理、判斷、分析和控制、輸出能力。在智能化程度較高的電子系統(tǒng)中,還應(yīng)具備預(yù)測(cè)、自診斷、自適應(yīng)、自組織和自學(xué)習(xí)功能。智能系統(tǒng)的組成:軟件和硬件;硬件:模擬電路、數(shù)字電路、微處理器單片機(jī)系統(tǒng)DSP系統(tǒng)嵌入式系統(tǒng)PC機(jī)系統(tǒng)

按照所使用單片微機(jī)的類型不同,單片微機(jī)應(yīng)用系統(tǒng)結(jié)構(gòu)可分成總線方式和非總線方式。 在總線方式的應(yīng)用系統(tǒng)中,單片微機(jī)具有完善的外部擴(kuò)展總線,如并行總線(AB、DB、CB)、串行通信總線(如UART),通過這些總線可方便地?cái)U(kuò)展外圍單元、外設(shè)接口等??偩€方式的單片微機(jī)在不使用外部并行總線時(shí),外部并行總線引腳可作為I/O口用。 非總線方式的應(yīng)用系統(tǒng)(如80C51系列中的83C751、87C751,83C752、WC752,Motorola的MC68HC05系列中的許多產(chǎn)品)省去了外部并行總線,可構(gòu)成各種小封裝芯片,有限的引腳可提供更多的用戶I/O口。

l.家用電器領(lǐng)域國(guó)內(nèi)各種家用電器已普遍采用單片微機(jī)控制取代傳統(tǒng)的控制電路,做成單片微機(jī)控制系統(tǒng),如洗衣機(jī)、電冰箱、空調(diào)機(jī)、微波爐、電飯堡、電視機(jī)、錄像機(jī)及其它視頻音像設(shè)備的控制器。2.辦公自動(dòng)化領(lǐng)域 比如一臺(tái)PC機(jī)可能嵌入了10個(gè)單片微機(jī),如控制鍵盤、鼠標(biāo)、顯示器、CD-ROM、聲卡、打印機(jī)、軟/硬盤驅(qū)動(dòng)器、調(diào)制解調(diào)器等。 現(xiàn)代辦公室中所使用的大量通信、信息產(chǎn)品,如繪圖儀、復(fù)印機(jī)、電話、傳真機(jī)等,多數(shù)都采用了單片微機(jī)。

3.工業(yè)自動(dòng)化領(lǐng)域的在線應(yīng)用 如工業(yè)過程控制、過程監(jiān)測(cè)、工業(yè)控制器及機(jī)電一體化控制系統(tǒng)等,許多都是以單片微機(jī)為核心的單機(jī)或多機(jī)網(wǎng)絡(luò)系統(tǒng)。如工業(yè)機(jī)器人的控制系統(tǒng)是由中央控制器、感覺系統(tǒng)、行走系統(tǒng)、擒拿系統(tǒng)等節(jié)點(diǎn)構(gòu)成的多機(jī)網(wǎng)絡(luò)系統(tǒng)。而其中每一個(gè)小系統(tǒng)都是由單片微機(jī)進(jìn)行控制的。4.智能儀器儀表與集成智能傳感器領(lǐng)域 應(yīng)用單片微機(jī)來對(duì)傳統(tǒng)的儀器儀表行業(yè)的產(chǎn)品進(jìn)行“更新?lián)Q代”,提供了非常理想的的條件。目前各種變送器、電氣測(cè)量?jī)x表普遍采用單片微機(jī)應(yīng)用系統(tǒng)替代傳統(tǒng)的測(cè)量系統(tǒng),使測(cè)量系統(tǒng)具有各種智能化功能,如存儲(chǔ)、數(shù)據(jù)處理、查找、判斷、聯(lián)網(wǎng)和語(yǔ)音功能等。5.汽車電子與航空航天電子系統(tǒng)

通常在這些電子系統(tǒng)中的集中顯示系統(tǒng)、動(dòng)力監(jiān)測(cè)控制系統(tǒng)、自動(dòng)駕馭系統(tǒng)、通信系統(tǒng)以及運(yùn)行監(jiān)視器(黑匣子)等,都要構(gòu)成冗余的網(wǎng)絡(luò)系統(tǒng)。比如一臺(tái)RMW-7系列寶馬轎車就用了63個(gè)單片微機(jī)。 單片微機(jī)的應(yīng)用正從根本上改變著傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分控制功能,現(xiàn)在已能使用單片微機(jī)通過軟件方法實(shí)現(xiàn)了。這種以軟件取代硬件,并能提高系統(tǒng)性能的控制技術(shù),稱之為微控制技術(shù)。這標(biāo)志著一種全新概念的建立。03級(jí)單片機(jī)實(shí)踐題目列表:專題一:液體點(diǎn)滴速度監(jiān)控裝置

專題二:電子秤的設(shè)計(jì)與制作

專題三:智能電梯控制系統(tǒng)

專題四:水溫控制系統(tǒng)

專題五:數(shù)字式液量測(cè)量系統(tǒng)

專題六:脈搏測(cè)量?jī)x的制作

專題七:直流數(shù)控穩(wěn)壓源

專題八:轉(zhuǎn)速控制測(cè)量?jī)x

專題九:數(shù)據(jù)采集系統(tǒng)

1.4單片機(jī)系統(tǒng)的開發(fā)實(shí)例介紹題目名稱:三路數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)。1、輸入要求:第一路信號(hào)為單次阻尼振蕩信號(hào),持續(xù)時(shí)間為0.4~1S,阻尼振蕩頻率為500HZ,輸出振幅峰峰值小于0.5V;第二路為熱電偶輸出,溫度范圍0~400。C,相應(yīng)輸出數(shù)值0~25mv,溫度最小區(qū)分度為0.2。C,工作環(huán)境下有0.2V共模噪聲.第三路為0~5V可調(diào)直流電源的輸出.

輸出要求:對(duì)第一路信號(hào),從示波器上顯示出振蕩波形,顯示精度達(dá)到5%;對(duì)第二路信號(hào),用十進(jìn)制數(shù)碼管顯示實(shí)測(cè)溫度值;對(duì)第三路信號(hào),用十進(jìn)制數(shù)碼管顯示實(shí)測(cè)電壓值;對(duì)三個(gè)通道,通過發(fā)光管指示通道。系統(tǒng)組成以51系列單片機(jī)作為微處理器;三路A/D,或采用多路開關(guān);需要外部數(shù)據(jù)存儲(chǔ)器10K;不需要外部程序存儲(chǔ)器;需要采樣保持器;需要鍵盤,用于設(shè)置功能;需要4位LED;需要三路開關(guān)量輸出;一路D/A。系統(tǒng)結(jié)構(gòu)框圖放大S/H放大程控放大多路開關(guān)A/D51單片機(jī)D/A數(shù)碼顯示鍵盤RAM電源第一路信號(hào)第二路信號(hào)第三路信號(hào)示波器發(fā)光管驅(qū)動(dòng)邏輯電路1.5教學(xué)安排

80C51硬件結(jié)構(gòu)簡(jiǎn)潔明了、特殊功能寄存器功能規(guī)范、軟件指令系統(tǒng)易于掌握,是一種既便于講授又便于學(xué)習(xí)、理解和掌握的單片微機(jī)。以80C51系列為典型,來介紹單片微機(jī)硬件結(jié)構(gòu)和軟件知識(shí)。硬件知識(shí)則是指80C51的硬件資源,如I/O口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等。軟件知識(shí)是指80C51的尋址方式、指令系統(tǒng)以及程序設(shè)計(jì)等。 總的教學(xué)時(shí)數(shù)為72學(xué)時(shí),其中上課時(shí)間為54學(xué)時(shí),實(shí)驗(yàn)上機(jī)時(shí)間為18學(xué)時(shí)。表1–1Philips公司80C51系列的部分單片微機(jī)

表1–2ATMEL公司89C51系列的部分單片微機(jī)

表1–3華邦公司W(wǎng)78C51和W77C51系列的部分單片微機(jī)

第2章單片機(jī)的硬件結(jié)構(gòu)和原理2.1MCS-51單片機(jī)硬件結(jié)構(gòu)2.1.1MCS-51系列單片機(jī)的分類MCS-51系列單片機(jī)配置一覽表2.1.2MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)MCS-51單片機(jī)結(jié)構(gòu)框圖2.1.3中央處理器CPU一、運(yùn)算器算術(shù)邏輯單元ALU2.累加器ACC(Accumulator)3.寄存器B4.程序狀態(tài)字PSW(ProgrameStateWord)CyACF0RS1RS0OV…PD7D6D5D4D3D2D1D0PSW

程序狀態(tài)字PSW

D7D6D5D4D3D2D1D0CyACF0RS1RS0OV_PCy(Carry):進(jìn)位AC(AuxiliaryCarry):輔助進(jìn)位F0(Flag):用戶標(biāo)志RS1、RS0:寄存器組選擇控制位OV(Overflow):溢出P(Parity):奇偶標(biāo)志RS1、RS0與片內(nèi)工作寄存器組的對(duì)應(yīng)關(guān)系RS1RS0寄存器組片內(nèi)PAM地址通用寄存器名稱000組00H~07HR0~R7011組08H~0FHR0~R7102組10H~17HR0~R7013組18H~1FHR0~R7二、控制器控制電路完成指揮控制工作,協(xié)調(diào)單片機(jī)各部分正常工作??刂破麟娐钒ǎ撼绦蛴?jì)數(shù)器PC;PC加1寄存器;指令寄存器;指令譯碼器;數(shù)據(jù)指針DPTR;堆棧指針SP;緩沖器以及定時(shí)與控制電路等。1、指令寄存器和指令譯碼器指令寄存器中存放指令代碼。CPU執(zhí)行指令時(shí),由程序存儲(chǔ)器中讀取的指令代碼送入指令存儲(chǔ)器,經(jīng)譯碼器譯碼后由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令所指定的操作。2.程序計(jì)數(shù)器PC(ProgramCounter)

PC用于存放CPU下一條要執(zhí)行的指令地址,是一個(gè)16位的專用寄存器,可尋址范圍是0000H~0FFFFH共64KB。程序中的每條指令存放在ROM區(qū)的某一單元,并都有自己的存放地址。CPU要執(zhí)行哪條指令時(shí),就把該條指令所在的單元的地址送上地址總線。在順序執(zhí)行程序中,當(dāng)PC的內(nèi)容被送到地址總線后,會(huì)自動(dòng)加1,即(PC)←(PC)+1,又指向CPU下一條要執(zhí)行的指令地址。3.堆棧指針SP(StackPointer)堆棧操作是在內(nèi)存RAM區(qū)專門開辟出來的按照“先進(jìn)后出”原則進(jìn)行數(shù)據(jù)存取的一種工作方式,主要用于子程序調(diào)用及返回和中斷處理斷點(diǎn)的保護(hù)及返回,它在完成子程序嵌套和多重中斷處理中是必不可少的。為保證逐級(jí)正確返回,進(jìn)入棧區(qū)的“斷點(diǎn)”數(shù)據(jù)應(yīng)遵循“先進(jìn)后出”的原則。SP用來指示堆棧所處的位置,在進(jìn)行操作之前,先用指令給SP賦值,以規(guī)定棧區(qū)在RAM區(qū)的起始地址(棧底層)。當(dāng)數(shù)據(jù)推入棧區(qū)后,SP的值也自動(dòng)隨之變化。MCS-51系統(tǒng)復(fù)位后,SP初始化為07H。4.數(shù)據(jù)指針寄存器DPTR

數(shù)據(jù)指針DPTR是一個(gè)16位的專用寄存器,其高位字節(jié)寄存器用DPH表示,低位字節(jié)寄存器用DPL表示。既可作為一個(gè)16位寄存器DPTR來處理,也可作為兩個(gè)獨(dú)立的8位寄存器DPH和DPL來處理。

DPTR主要用來存放16位地址,當(dāng)對(duì)64KB外部數(shù)據(jù)存儲(chǔ)器空間尋址時(shí),作為間址寄存器用。在訪問程序存儲(chǔ)器時(shí),用作基址寄存器。2.1.4定時(shí)器/計(jì)數(shù)器

MCS-51單片機(jī)片內(nèi)有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,即定時(shí)器0和定時(shí)器1。它們可以用于定時(shí)控制、延時(shí)以及對(duì)外部事件的計(jì)數(shù)和檢測(cè)等。2.1.5存儲(chǔ)器

MCS-51系列單片機(jī)的存儲(chǔ)器包括數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,其主要特點(diǎn)是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的尋址空間是相互獨(dú)立的,物理結(jié)構(gòu)也不相同。2.1.6并行I/O口

MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2和P3),每一條I/O線都能獨(dú)立地用作輸入或輸出。P0口為三態(tài)雙向口,能帶8個(gè)TTL門電路,P1、P2和P3口為準(zhǔn)雙向口,負(fù)載能力為4個(gè)TTL門電路。

2.1.7.串行I/O口

MCS-51單片機(jī)具有一個(gè)采用通用異步工作方式的全雙工串行通信接口,可以同時(shí)發(fā)送和接收數(shù)據(jù)。2.1.8中斷控制系統(tǒng)

8051共有5個(gè)中斷源,即外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè)。2.1.9時(shí)鐘電路

MCS-51芯片內(nèi)部有時(shí)鐘電路,但晶體振蕩器和微調(diào)電容必須外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,振蕩器的頻率范圍為1.2MHz~12MHz,典型取值為6MHz。2.1.10總線以上所有組成部分都是通過總線連接起來,從而構(gòu)成一個(gè)完整的單片機(jī)。系統(tǒng)的地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)都是通過總線傳送的,總線結(jié)構(gòu)減少了單片機(jī)的連線和引腳,提高了集成度和可靠性。MCS-51單片機(jī)芯片內(nèi)部結(jié)構(gòu)框圖2.2單片機(jī)的引腳及其功能MCS-51單片機(jī)引腳及總線結(jié)構(gòu)(a)管腳圖;(b)8031引腳功能分類

電源引腳Vcc和VssVcc:電源端,接+5V。

Vss:接地端。時(shí)鐘電路引腳XTAL1和XTAL2XTAL1:接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,若使用外部TTL時(shí)鐘時(shí),該引腳必須接地。

XTAL2:接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出,若使用外部TTL時(shí)鐘時(shí),該引腳為外部時(shí)鐘的輸入端。地址鎖存允許ALE

系統(tǒng)擴(kuò)展時(shí),ALE用于控制地址鎖存器鎖存P0口輸出的低8位地址,從而實(shí)現(xiàn)數(shù)據(jù)與低位地址的復(fù)用。

外部程序存儲(chǔ)器讀選通信號(hào)PSEN

是讀外部程序存儲(chǔ)器的選通信號(hào),低電平有效。程序存儲(chǔ)器地址允許輸入端EA/VPP

當(dāng)為高電平時(shí),CPU執(zhí)行片內(nèi)程序存儲(chǔ)器指令,但當(dāng)PC中的值超過0FFFH時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外程序存儲(chǔ)器指令。當(dāng)為低電平時(shí),CPU只執(zhí)行片外程序存儲(chǔ)器指令。復(fù)位信號(hào)RST

該信號(hào)高電平有效,在輸入端保持兩個(gè)機(jī)器周期的高電平后,就可以完成復(fù)位操作。1.

輸入/輸出口引腳P0、P1、P2和P3P0口(P0.0~P0.7):該端口為漏極開路的8位準(zhǔn)雙向口,負(fù)載能力為8高LSTTL負(fù)載,它為8位地址線和8位數(shù)據(jù)線的復(fù)用端口。

P1口(P1.0~P1.7):它是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P1口的驅(qū)動(dòng)能力為4個(gè)LSTTL負(fù)載。

P2口(P2.0~P2.7):它為一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P2口的驅(qū)動(dòng)能力也為4個(gè)LSTTL負(fù)載。在訪問外部程序存儲(chǔ)器時(shí),它作存儲(chǔ)器的高8位地址線。

P3口(P3.0~P3.7):P3口同樣是內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口,P3口除了作為一般的I/O口使用之外,其還具有特殊功能。2.3存儲(chǔ)器的結(jié)構(gòu)MCS-51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)2.4并行輸入/輸出接口1.P0口P0口地址為80H,各位口線具有完全相同但又相互獨(dú)立的邏輯電路。2.P1、P2和P3口P1、P2和P3口為準(zhǔn)雙向口,在內(nèi)部差別不大,但使用功能有所不同。

P1口是用戶專用8位準(zhǔn)雙向I/O口,具有通用輸入/輸出功能,每一位都能獨(dú)立地設(shè)定為輸入或輸出。當(dāng)有輸出方式變?yōu)檩斎敕绞綍r(shí),該位的鎖存器必須寫入“1”,然后才能進(jìn)入輸入操作。

P2口是8位準(zhǔn)雙向I/O口。外接I/O設(shè)備時(shí),可作為擴(kuò)展系統(tǒng)的地址總線,輸出高8位地址,與P0口一起組成16位地址總線。對(duì)于8031而言,P2口一般只作為地址總線使用,而不作為I/O線直接與外部設(shè)備相連。P1口P1口的口線邏輯電路圖P2口P2口的口線邏輯電路圖P3口P3口的口線邏輯電路圖8051單片機(jī)I/0口的應(yīng)用A+5VBCP10P1400電機(jī)轉(zhuǎn)01故障10維持11電機(jī)停2.5單片機(jī)的時(shí)鐘與定時(shí)2.5.1時(shí)鐘電路

1、根據(jù)硬件電路的不同,單片機(jī)的時(shí)鐘連接方式可分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式80C51的外部時(shí)鐘輸入是不同的。2、分頻電路2.5.2定時(shí)單位

——振蕩周期、時(shí)鐘周期、機(jī)器周期和指令周期P1P2S1P2振蕩周期時(shí)鐘周期機(jī)器周期機(jī)器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2(1)振蕩周期——振蕩周期指為單片機(jī)提供定時(shí)信號(hào)的振蕩源的周期或外部輸入時(shí)鐘的周期。(2)時(shí)鐘周期——時(shí)鐘周期又稱作狀態(tài)周期或狀態(tài)時(shí)間S,它是振蕩周期的兩倍,它分為P1節(jié)拍和P2節(jié)拍,通常在P1節(jié)拍完成算術(shù)邏輯操作,在P2節(jié)拍完成內(nèi)部寄存器之間的傳送操作。(3)機(jī)器周期——一個(gè)機(jī)器周期由6個(gè)狀態(tài)組成,如果把一條指令的執(zhí)行過程分作幾個(gè)基本操作,則將完成一個(gè)基本操作所需的時(shí)間稱作機(jī)器周期。單片機(jī)的單周期指令執(zhí)行時(shí)間就為一個(gè)機(jī)器周期。(4).指令周期——指CPU執(zhí)行一條指令所需要的時(shí)間。一個(gè)指令周期通常含有1~4個(gè)機(jī)器周期。若MCS-51單片機(jī)外接晶振為12MHz時(shí),則單片機(jī)的四個(gè)周期的具體值為:振蕩周期=1/12MHz=1/12μs=0.0833μs時(shí)鐘周期=1/6μs=0.167μs機(jī)器周期=1μs指令周期=1~4μs2.6單片機(jī)的系統(tǒng)復(fù)位

1.復(fù)位方式及復(fù)位電路

MCS-51單片機(jī)通常采用上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種方式。

22μFC1

RSTR11KΩ+5V22μFC1

RST+5VR2200Ω

RSTR1

+5V

C222μF

803180518751803180518751803180518751(a)上電復(fù)位電路(c)按鍵脈沖復(fù)位電路(b)按鍵電平復(fù)位電路R11KΩ22μFC11KΩR21KΩ特殊功能寄存器初始狀態(tài)特殊功能寄存器初始狀態(tài)A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0~P3FFHSBUF××××××××BIP×××00000BSCON00HIE0×000000BPCON0×××××××B單片機(jī)復(fù)位后特殊功能寄存器的狀態(tài)2.7低功耗工作方式2.7.1低功耗的意義便攜式的實(shí)現(xiàn)(使用電池供電);微型化(發(fā)熱量小,使集成化提高);可靠性(溫度低)。低功耗的措施:改進(jìn)電路和工藝(8051功耗630MW,80C51功耗為120MW);配備高低速時(shí)鐘;低電壓供電;低功耗方式。2.7.3兩種低功耗工作模式80C51有兩種低功耗方式,即待機(jī)方式和掉電保護(hù)方式。待機(jī)方式和掉電保護(hù)方式都是由電源控制寄存器(PCON)的有關(guān)位來控制的。2.7.2單片機(jī)的兩種工作模式常規(guī)運(yùn)行模式:所有部件均處于加電正常工作狀態(tài)。低功耗模式:暫時(shí)不使用的部件停止供電,系統(tǒng)處于等待狀態(tài)。

其中:

SMOD:波特率倍增位,在串行通訊時(shí)使用。

GF1、GF0:通信標(biāo)志位1、0。

PD:掉電方位式,PD=1,則進(jìn)入掉電方式。

IDL:待機(jī)方式位,IDL=1,則進(jìn)入待機(jī)方式。若PD和IDL同時(shí)為1,則先激活掉電方式。SMOD

---GF1GF0PDIDL電源控制寄存器(PCON)格式如下:⒈待機(jī)方式

⑴使用指令使PCON寄存器IDL位置1,則80C51進(jìn)入待機(jī)方式這時(shí)振蕩器仍然運(yùn)行,并向中斷邏輯、串行口和定時(shí)器/計(jì)數(shù)器電路提供時(shí)鐘,中斷功能繼續(xù)存在

向CPU提供時(shí)鐘的電路被阻斷,因此CPU不能工作,與CPU有關(guān)的如SP、PC、PSW、ACC以及全部通用寄存器都被凍結(jié)在原狀態(tài)。⑵可以采用中斷方式或硬件復(fù)位來退出待機(jī)方式。 在待機(jī)方式下,若產(chǎn)生一個(gè)外部中斷請(qǐng)求信號(hào),在單片微機(jī)響應(yīng)中斷的同時(shí),PCON.0位(IDL位)被硬件自動(dòng)清‘0’,單片微機(jī)就退出待機(jī)方式而進(jìn)入正常工作方式。在中斷服務(wù)程序中安排一條RETI指令,就可以使單片微機(jī)恢復(fù)正常工作,從設(shè)置待機(jī)方式指令的下一條指令開始繼續(xù)執(zhí)行程序。⒉掉

電保護(hù)方式

⑴PCON寄存器的PD位控制單片微機(jī)進(jìn)入掉電保護(hù)方式。 當(dāng)80C51檢測(cè)到電源故障時(shí),除進(jìn)行信息保護(hù)外,還應(yīng)把PCON.1位置‘1’,使之進(jìn)入掉電保護(hù)方式。此時(shí)單片微機(jī)一切工作都停止,只有內(nèi)部RAM單元的內(nèi)容被保護(hù)。

⑵只能依靠復(fù)位退出掉電保護(hù)方式。

80C51備用電源由Vcc端引入。當(dāng)Vcc恢復(fù)正常后,只要硬件復(fù)位信號(hào)維持10ms,就能使單片微機(jī)退出掉電保護(hù)方式,CPU則從進(jìn)入待機(jī)方式的下一條指令開始重新執(zhí)行程序。實(shí)例介紹題目名稱:三路數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)。1、輸入要求:第一路信號(hào)為單次阻尼振蕩信號(hào),持續(xù)時(shí)間為0.4~1S,阻尼振蕩頻率為500HZ,輸出振幅峰峰值小于0.5V;第二路為熱電偶輸出,溫度范圍0~400。C,相應(yīng)輸出數(shù)值0~25mv,溫度最小區(qū)分度為0.2。C,工作環(huán)境下有0.2V共模噪聲.第三路為0~5V可調(diào)直流電源的輸出.

輸出要求:對(duì)第一路信號(hào),從示波器上顯示出振蕩波形,顯示精度達(dá)到5%;對(duì)第二路信號(hào),用十進(jìn)制數(shù)碼管顯示實(shí)測(cè)溫度值;對(duì)第三路信號(hào),用十進(jìn)制數(shù)碼管顯示實(shí)測(cè)電壓值;對(duì)三個(gè)通道,通過發(fā)光管指示通道。

系統(tǒng)組成以51系列單片機(jī)作為微處理器;三路A/D,或采用多路開關(guān);需要外部數(shù)據(jù)存儲(chǔ)器10K;不需要外部程序存儲(chǔ)器;需要采樣保持器;需要鍵盤,用于設(shè)置功能;需要4位LED;需要三路開關(guān)量輸出;一路D/A。系統(tǒng)結(jié)構(gòu)框圖放大S/H放大程控放大多路開關(guān)A/D51單片機(jī)D/A數(shù)碼顯示鍵盤RAM電源第一路信號(hào)第二路信號(hào)第三路信號(hào)示波器發(fā)光管驅(qū)動(dòng)邏輯電路第3章MCS-51單片機(jī)指令系統(tǒng)3.1單片機(jī)指令系統(tǒng)概述3.2尋址方式3.3分類指令MCS-51單片機(jī)指令系統(tǒng)的特點(diǎn):(1)指令執(zhí)行快。(2)指令短,約有一半的指令為單字節(jié)指令。(3)用一條指令即可實(shí)現(xiàn)2個(gè)一字節(jié)的相乘或相除。(4)具有豐富的位操作指令。(5)可直接用傳送指令實(shí)現(xiàn)端口的輸入輸出操作。3.1單片機(jī)指令系統(tǒng)概述在MCS-51指令中,一般指令主要由操作碼、操作數(shù)組成。指令應(yīng)具有以下功能:(1)操作碼指明執(zhí)行什么性質(zhì)和類型的操作。例如,數(shù)的傳送、加法、減法等。(2)操作數(shù)指明操作的數(shù)本身或者是操作數(shù)所在的地址。(3)指定操作結(jié)果存放的地址。指令格式1.單字節(jié)指令單字節(jié)指令格式由8位二進(jìn)制編碼表示,例如:CLRA→E4H

2.雙字節(jié)指令

雙字節(jié)指令格式由兩個(gè)字節(jié)組成,操作碼和操作數(shù),例如: MOVA,#10H→74H10H3.三字節(jié)指令

三字節(jié)指令格式中,第一個(gè)字節(jié)為操作碼,后兩個(gè)字節(jié)為操作數(shù),例如: MOV40H,#30H→75H40H30H

一條匯編語(yǔ)言指令中最多包含4個(gè)區(qū)段,如下所示:

[標(biāo)號(hào):]操作碼[操作數(shù)][;注釋]

4個(gè)區(qū)段之間要用分隔符分開:標(biāo)號(hào)與操作碼之間用“:”隔開,操作碼與操作數(shù)之間用空格隔開,操作數(shù)與注釋之間用“;”隔開,如果操作數(shù)有兩個(gè)以上,則在操作數(shù)之間要用逗號(hào)“,”隔開(乘法指令和除法指令除外)。

指令描述符號(hào)介紹Rn——當(dāng)前選中的寄存器區(qū)中的8個(gè)工作寄存器R0~R7(n=0~7)。Ri——當(dāng)前選中的寄存器區(qū)中的2個(gè)工作寄存器R0、R1(i=0,1)。direct—8位的內(nèi)部數(shù)據(jù)存儲(chǔ)器單元中的地址。#data——包含在指令中的8位常數(shù)。#data16——包含在指令中的16位常數(shù)。addr16——16位目的地址。addr11——11位目的地址。rel——8位帶符號(hào)的偏移字節(jié),簡(jiǎn)稱偏移量。DPTR——數(shù)據(jù)指針,可用作16位地址寄存器。bit——內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺?。A——累加器。B——專用寄存器,用于乘法和除法指令中。C——進(jìn)位標(biāo)志或進(jìn)位位,或布爾處理機(jī)中的累加器。@——間址寄存器或基址寄存器的前綴,如@Ri,@DPTR。/——位操作數(shù)的前綴,表示對(duì)該位操作數(shù)取反,如/bit?!痢瑑?nèi)RAM的直接地址或寄存器。(×)——由×尋址的單元中的內(nèi)容。

——箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所代替。3.2尋址方式

所謂尋址方式,就是尋找操作數(shù)地址的方式,在用匯編語(yǔ)言編程時(shí),數(shù)據(jù)的存放、傳送、運(yùn)算都要通過指令來完成。編程者必須自始至終都要十分清楚操作數(shù)的位置,以及如何將它們傳送到適當(dāng)?shù)募拇嫫魅⑴c運(yùn)算。每一種計(jì)算機(jī)都具有多種尋址方式。尋址方式的多少是反映指令系統(tǒng)優(yōu)劣的主要指標(biāo)之一。

在MCS-51單片機(jī)指令系統(tǒng)中,有以下7種尋址方式:

(1)立即尋址;

(2)直接尋址;

(3)寄存器尋址;

(4)寄存器間接尋址;

(5)基址寄存器加變址寄存器間接尋址;

(6)相對(duì)尋址;

(7)位尋址。1.立即尋址立即尋址方式是指操作數(shù)包含在指令字節(jié)中。跟在指令操作碼后面的數(shù)就是參加運(yùn)算的數(shù),該操作數(shù)稱為立即數(shù)。立即數(shù)有一字節(jié)和二字節(jié)兩種可能,例如指令:MOVA,#3AHMOVDPTR,#0DFFFH

2.直接尋址在指令中直接給出操作數(shù)的地址,這種尋址方式就屬于直接尋址方式。在這種方式中,指令的操作數(shù)部分直接是操作數(shù)的地址。在MCS-51單片機(jī)指令系統(tǒng)中,直接尋址方式中可以訪問3種存儲(chǔ)器空間:(1)內(nèi)部數(shù)據(jù)存儲(chǔ)器的低128個(gè)字節(jié)單元(00H~7FH)。(2)特殊功能寄存器。特殊功能寄存器只能用直接尋址方式進(jìn)行訪問。

(3)位地址空間。MOVA,52H;把片內(nèi)RAM字節(jié)地址52H單元的內(nèi) 容送累加器A中。

MOV52H,A;把A的內(nèi)容傳送給片內(nèi)RAM的52H 單元中。

MOV50H,60H;把片內(nèi)RAM字節(jié)地址60H單元的內(nèi) 容送到50H單元中。

MOVIE,#40H;把立即數(shù)40H送到中斷允許寄存器 IE。IE為專用功能寄存器,其字節(jié) 地址為0A8H。該指令等價(jià)于

MOV 0A8H,#40H。

INC60H;將地址60H單元中的內(nèi)容自加1。

3.寄存器尋址

在該尋址方式中,參加操作的數(shù)存放在寄存器里。寄存器包括8個(gè)工作寄存器R0~R7,累加器A,寄存器B、數(shù)據(jù)指針DPTR和布爾處理器的位累加器C。MOVA,Rn;A

(Rn)其中n為0~7之一, Rn是工作寄存器。MOVRn,A;Rn

(A)MOVB,A;B

(A)

4.寄存器間接尋址

在這種尋址方式中,寄存器的內(nèi)容為操作數(shù)的地址。寄存器間接尋址只能使用寄存器R0、R1作為地址指針,尋址內(nèi)部RAM區(qū)的數(shù)據(jù);當(dāng)訪問外部RAM時(shí),可使用R0、R1及DPTR作為地址指針。寄存器間接尋址符號(hào)為“@”,例如:例如:

MOVR0,#60H;R0

60HMOVA,@R0;A

((R0))MOVA,@R1;A

((R1))

例如:MOVDPTR,#3456H;DPTR

3456HMOVXA,@DPTR;A

((DPTR))是把DPTR寄存器所指的那個(gè)外部數(shù)據(jù)存儲(chǔ)器(RAM)的內(nèi)容傳送給A,假設(shè)(3456H)=99H,指令運(yùn)行后(A)=99H。5.基址寄存器加變址寄存器間接尋址這種尋址方式用于訪問程序存儲(chǔ)器中的數(shù)據(jù)表格,它以基址寄存器DPTR或PC的內(nèi)容為基本地址,加上變址寄存器A的內(nèi)容作為操作數(shù)的地址,例如:MOVCA,@DPTR+AJMP@A+DPTRMOVCA,@PC+A6.相對(duì)尋址

在MCS-51指令系統(tǒng)中設(shè)有轉(zhuǎn)移指令,分為直接轉(zhuǎn)移和相對(duì)轉(zhuǎn)移指令,在相對(duì)轉(zhuǎn)移指令中采用相對(duì)尋址方式。這種尋址方式是以PC的內(nèi)容為基本地址,加上指令中給定的偏移量作為轉(zhuǎn)移地址。指令中給出的偏移量是一個(gè)8位帶符號(hào)的常數(shù),可正可負(fù),其范圍為-128~+127。SJMP08H;PC←轉(zhuǎn)移指令地址+2+08H

7.位尋址

該種尋址方式中,操作數(shù)是內(nèi)部RAM單元中某一位的信息。

SETBTR0;TR0

1 CLR00H;(00H)

0 MOVC,57H;將57H位地址的內(nèi)容傳送到 位累加器C中

ANLC,5FH;將5FH位狀態(tài)與進(jìn)位位C相與, 結(jié)果在C中3.3指令系統(tǒng)3.3.1指令分類

MCS-51指令系統(tǒng)有42種助記符,代表了33種功能,指令助記符與各種可能的尋址方式相結(jié)合,共構(gòu)成111條指令。 按指令的功能,MCS-51指令系統(tǒng)可分為下列5類: (1)數(shù)據(jù)傳送類指令(29條) (2)算術(shù)運(yùn)算類指令(24條) (3)邏輯運(yùn)算及移位類指令(24條) (4)位操作類指令(17條) (5)控制轉(zhuǎn)移類指令(17條)

3.3.2數(shù)據(jù)傳送類指令

數(shù)據(jù)傳送類指令一般的操作是把源操作數(shù)傳送到指令所指定的目標(biāo)地址。指令執(zhí)行后,源操作數(shù)保持不變,目的操作數(shù)為原操作數(shù)所替代數(shù)據(jù)傳送類指令用到的助記符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP,SWAP。 格式:MOV[目的操作數(shù)],[源操作數(shù)]

功能:目的操作數(shù)

(源操作數(shù)中的數(shù)據(jù)) 源操作數(shù)可以是:A、Rn、direct、@Ri、#data

目的操作數(shù)可以是:A、Rn、direct、@Ri

1.以累加器為目的操作數(shù)的內(nèi)部數(shù)據(jù)傳送指令MOVA,Rn;A

(Rn)MOVA,direct;A

(direct)MOVA,@Ri;A

((Ri))MOVA,#data;A

data2.?dāng)?shù)據(jù)傳送到工作寄存器Rn的指令MOVRn,A;Rn

(A)MOVRn,direct;Rn

(direct)MOVRn,#data;Rn

data3.?dāng)?shù)據(jù)傳送到內(nèi)部RAM單元或特殊功能寄存器SFR的指令MOVdirect,A;direct

(A)MOVdirect,Rn ;direct

(Rn)MOVdirect1,direct2 ;direct1

(direct2)MOVdirect,@Ri;direct

((Ri))MOVdirect,#data ;direct

#dataMOV@Ri,A ;(Ri

(A)MOV@Ri,direct ;(Ri)

(direct)MOV@Ri,#data ;(Ri)

dataMOVDPTR,#data16 ;DPTR

data16

片內(nèi)數(shù)據(jù)RAM及寄存器的數(shù)據(jù)傳送指令MOV、PUSH和POP共18條。4.累加器A與外部數(shù)據(jù)存儲(chǔ)器之間的傳送指令片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送指令MOVX共4條。MOVXA,@DPTR;A

(DPTR)MOVXA,@Ri ;A

((Ri))MOVX@DPTR,A;(DPTR)

AMOVX@Ri,A;(Ri)

A5.程序存儲(chǔ)器內(nèi)容送累加器

MOVCA,@A+PC MOVCA,@A+DPTR

程序存儲(chǔ)器查表指令MOVC共2條6.堆棧操作所謂堆棧是在片內(nèi)RAM中按“先進(jìn)后出,后進(jìn)先出”原則設(shè)置的專用存儲(chǔ)區(qū)。數(shù)據(jù)的進(jìn)棧出棧由指針SP統(tǒng)一管理。堆棧的操作有如下兩條專用指令:

PUSHdirect;SP←(SP+1),(SP)←(direct)

POP direct ;(direct)←(SP),SP←SP-1PUSH是進(jìn)棧(或稱為壓入操作)指令。POP是出棧(或稱為彈出操作)指令。7.字節(jié)交換指令數(shù)據(jù)交換主要是在內(nèi)部RAM單元與累加器A之間進(jìn)行,有整字節(jié)和半字節(jié)兩種交換。 (1)整字節(jié)交換指令XCHA,Rn;A<=>RnXCHA,direct ;A<=>(direct)XCHA,@Ri ;A<=>(Ri)XCHDA,@Ri ;A0~3<=>(Ri)0~3SWAPA ;A0~3<=>A4~7(2)半字節(jié)交換指令【例】將片內(nèi)RAM30H單元與40H單元中的內(nèi)容互換。方法1(直接地址傳送法):

MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2(間接地址傳送法):

MOV R0,#40HMOV R1,#30HMOV A,@R0MOV B,@R1MOV @R1,AMOV @R0,BSJMP $方法3(字節(jié)交換傳送法):

MOV A,30HXCH A,40HMOV 30H,ASJMP $方法4(堆棧傳送法):

PUSH 30HPUSH 40HPOP 30HPOP 40HSJMP $3.3.3算術(shù)運(yùn)算類指令算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令影響標(biāo)志位的指令

影響標(biāo)志位的指令一、加法指令1.普通加法指令

ADDA,RnADDA,directADDA,@RiADDA,#data例寫出以下一段程序各條指令執(zhí)行的結(jié)果

MOVA,#0B3H;

MOV20H,#10H;

MOVR0,#20H;

ADDA,@R0;

ADDA,R0;

ADDA,#10H;例如:120和100之和為220,顯然大于127,相加時(shí)011110001200110010010011011100220+符號(hào)位(最高位)由0變1,兩個(gè)正數(shù)相加結(jié)果變負(fù),實(shí)際上它是和數(shù)的最高位,符號(hào)位移入了進(jìn)位標(biāo)志,此時(shí)位6有進(jìn)位而位7無進(jìn)位,置位溢出標(biāo)志OV,結(jié)果溢出。

程序狀態(tài)字PSW

D7D6D5D4D3D2D1D0CyACF0RS1RS0OV_PCy(Carry):進(jìn)位AC(AuxiliaryCarry):輔助進(jìn)位F0(Flag):用戶標(biāo)志RS1、RS0:寄存器組選擇控制位OV(Overflow):溢出P(Parity):奇偶標(biāo)志

同樣,-120和-100相加,結(jié)果應(yīng)為-220,顯然小于-128,相加時(shí)10001000-12010011100-100+100100100-220

符號(hào)位由1變?yōu)?,兩個(gè)負(fù)數(shù)相加結(jié)果變?yōu)檎龜?shù),這是因?yàn)榉?hào)位移入進(jìn)位標(biāo)志,位6無進(jìn)位而位7有進(jìn)位,置位溢出標(biāo)志OV,由此可判斷結(jié)果溢出。2.帶進(jìn)位加法指令

ADDCA,RnADDCA,directADDCA,@RiADDCA,#data

這組指令的功能與普通加法指令類似,唯一的不同之處是,在執(zhí)行加法時(shí),還要將上一次進(jìn)位標(biāo)志Cy的內(nèi)容也一起加進(jìn)去,對(duì)于標(biāo)志位的影響也與普通加法指令相同。例有兩個(gè)16位數(shù)。低8位分別存于20H和30H之中。高八位分別存于21H和31H中。求他們的和,和的低八位送40H,高8位送41H。

MOVA,20HADDA,30H;低8位相加

MOV40HA;有和的低8位

MOVA,21HADDCA,31H;高8位相加,帶低八位相加的進(jìn)位

MOV41H,A;存和的高8位

3.增量指令

INCAINCRnINCdirectINC@RiINCDPTR

這組指令的功能是:將指令中所指出操作數(shù)的內(nèi)容加1。若原來的內(nèi)容為0FFH,則加1后將產(chǎn)生溢出,使操作數(shù)的內(nèi)容變成00H,但不影響任何標(biāo)志。最后一條指令是對(duì)16位的數(shù)據(jù)指針寄存器DPTR執(zhí)行加1操作,指令執(zhí)行時(shí),先對(duì)低8位指針DPL的內(nèi)容加1,當(dāng)產(chǎn)生溢出時(shí)就對(duì)高8位指針DPH加1,但不影響任何標(biāo)志。4.十進(jìn)制調(diào)整指令

DAA

這條指令對(duì)累加器A參與的BCD碼加法運(yùn)算所獲得的8位結(jié)果進(jìn)行十進(jìn)制調(diào)整,使累加器A中的內(nèi)容調(diào)整為二位壓縮型BCD碼的數(shù)。使用時(shí)必須注意,它只能跟在加法指令之后,不能對(duì)減法指令的結(jié)果進(jìn)行調(diào)整,且其結(jié)果不影響溢出標(biāo)志位。執(zhí)行該指令時(shí),判斷A中的低4位是否大于9和輔助進(jìn)位標(biāo)志AC是否為“1”,若兩者有一個(gè)條件滿足,則低4位加6操作;同樣,A中的高4位大于9或進(jìn)位標(biāo)志Cy為“1”兩者有一個(gè)條件滿足時(shí),高4位加6操作。例如:有兩個(gè)BCD數(shù)36與45相加,結(jié)果應(yīng)為BCD碼81,程序如下:MOVA,#36HADDA,#45HDAA

這段程序中,第一條指令將立即數(shù)36H(BCD碼36)送入累加器A;第二條指令進(jìn)行如下加法:00110110360100010145011110117B0000011006++1000000181得結(jié)果7BH;第三條指令對(duì)累加器A進(jìn)行十進(jìn)制調(diào)整,低4位(為0BH)大于9,因此要加6,得調(diào)整的BCD碼81。

例:二個(gè)多字節(jié)無符號(hào)數(shù)相加設(shè)有兩個(gè)四位BCD碼分別存在內(nèi)部RAM的50H、51H和60H、61H單元中,試編寫程序,求兩個(gè)BCD碼數(shù)之和,結(jié)果存入內(nèi)部40H、41H單元。

MOVR0,#50H ;被加數(shù)首址

MOVR1,#60H ;加數(shù)首址

MOVA,@R0 ;取被加數(shù)

ADDA,@R1 ;與加數(shù)相加

DAA ;二-十進(jìn)制調(diào)整

MOV40H,A ;存和

二、減法指令

1.帶進(jìn)位減法指令

SUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#data

功能:將累加器A的內(nèi)容與第二操作數(shù)及進(jìn)位標(biāo)志相減,結(jié)果送回到累加器A中。在執(zhí)行減法過程中,如果位7(D7)有借位,則進(jìn)位標(biāo)志Cy置“1”,否則清“0”;如果位3(D3)有借位,則輔助進(jìn)位標(biāo)志AC置“1”,否則清“0”;如位6有借位而位7沒有借位,或位7有借位而位6沒有借位,則溢出標(biāo)志OV置“1”,否則清“0”。若要進(jìn)行不帶借位的減法操作,則必須先將Cy清“0”。

2.減1指令

DECADECRnDECdirectDEC@Ri

這組指令的功能是:將指出的操作數(shù)內(nèi)容減1。如果原來的操作數(shù)為00H,則減1后將產(chǎn)生下溢出,使操作數(shù)變成0FFH,但不影響任何標(biāo)志。

三、乘法指令乘法指令完成單字節(jié)的乘法,只有一條指令:MULAB

這條指令的功能是:將累加器A的內(nèi)容與寄存器B的內(nèi)容相乘,乘積的低8位存放在累加器A中,高8位存放于寄存器B中。如果乘積超過0FFH,則溢出標(biāo)志OV置“1”,否則清“0”。進(jìn)位標(biāo)志Cy總是被清“0”。

四、除法指令

除法指令完成單字節(jié)的除法,只有一條指令:DIVAB

這條指令的功能是:將累加器A中的內(nèi)容除以寄存器B中的8位無符號(hào)整數(shù),所得商的整數(shù)部分存放在累加器A中,余數(shù)部分存放在寄存器B中,清“0”進(jìn)位標(biāo)志Cy和溢出標(biāo)志OV。若原來B中的內(nèi)容為0,則執(zhí)行該指令后A與B中的內(nèi)容不定,并將溢出標(biāo)志OV置“1”,在任何情況下,進(jìn)位標(biāo)志Cy總是被清“0”。例:數(shù)的碼制轉(zhuǎn)換。把累加器A中無符號(hào)二進(jìn)制整數(shù)(00-FFH)轉(zhuǎn)換為三位壓縮BCD碼(0~255),并存入內(nèi)存30H和31H單元。BINBCD:MOVB,#100 DIVAB;A÷100 百位數(shù)在A,余數(shù)在B MOV30H,A ;百位數(shù)送30HMOVA,B MOVB,#0AH DIVAB ;余數(shù)÷10,十位數(shù)在A低四位, ;個(gè)位數(shù)在B SWAPA ;十位數(shù)放A的高四位

ADDA,B ;十位數(shù)和個(gè)位數(shù)組合后送31H MOV31H,A RET3.3.4邏輯運(yùn)算類指令

邏輯運(yùn)算指令

一、簡(jiǎn)單邏輯操作指令

CLRA;對(duì)累加器A清“0”

CPLA;對(duì)累加器A按位取反

RLA;累加器A的內(nèi)容向左環(huán)移1位

RLCA;累加器A的內(nèi)容帶進(jìn)位標(biāo)志位向左環(huán)移1位

RRA;累加器A的內(nèi)容向右環(huán)移1位

RRCA;累加器A的內(nèi)容帶進(jìn)位標(biāo)志位向右環(huán)移1位這組指令的功能是:對(duì)累加器A的內(nèi)容進(jìn)行簡(jiǎn)單的邏輯操作。除了帶進(jìn)位標(biāo)志位的移位指令外,其它都不影響Cy,AC,OV等標(biāo)志。

二、邏輯與指令

ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#data

這組指令的功能是:將兩個(gè)操作數(shù)的內(nèi)容按位進(jìn)行邏輯與操作,并將結(jié)果送回目的操作數(shù)的單元中。

三、邏輯或指令ORLA,RnORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data

這組指令的功能是:將兩個(gè)操作數(shù)的內(nèi)容按位進(jìn)行邏輯或操作,并將結(jié)果送回目的操作數(shù)的單元中。

四、邏輯異或指令

XRLA,RnXRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data

這組指令的功能是:將兩個(gè)操作數(shù)的內(nèi)容按位進(jìn)行邏輯異或操作,并將結(jié)果送回到目的操作數(shù)的單元中。3.3.5控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令共有17條,不包括按布爾變量控制程序轉(zhuǎn)移指令。其中有64KB范圍內(nèi)的長(zhǎng)調(diào)用、長(zhǎng)轉(zhuǎn)移指令;有2KB范圍內(nèi)的絕對(duì)調(diào)用和絕對(duì)轉(zhuǎn)移指令;有全空間的長(zhǎng)相對(duì)轉(zhuǎn)移及一頁(yè)范圍內(nèi)的短相對(duì)轉(zhuǎn)移指令;還有多種條件轉(zhuǎn)移指令。由于MCS-51提供了較豐富的控制轉(zhuǎn)移指令,因此在編程上相當(dāng)靈活方便。這類指令用到的助記符共有10種:AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。

控制轉(zhuǎn)移指令一、無條件轉(zhuǎn)移指令1.絕對(duì)轉(zhuǎn)移指令

AJMPaddr11

這是2KB范圍內(nèi)的無條件跳轉(zhuǎn)指令,執(zhí)行該指令時(shí),先將PC+2,然后將addr11送入PC10~PC0,而PC15~PC11保持不變。這樣得到跳轉(zhuǎn)的目的地址。需要注意的是,目標(biāo)地址與AJMP后面一條指令的第一個(gè)字節(jié)必須在同一個(gè)2KB區(qū)域的存儲(chǔ)器區(qū)內(nèi)。

2.(短)相對(duì)轉(zhuǎn)移指令

SJMPrel

執(zhí)行該指令時(shí),先將PC+2,再把指令中帶符號(hào)的偏移量加到PC上,得到跳轉(zhuǎn)的目標(biāo)地址送入PC。rel為有符號(hào)8位二進(jìn)制數(shù)。

3.長(zhǎng)跳轉(zhuǎn)指令

LJMPaddr16

執(zhí)行該指令時(shí),將16位目標(biāo)地址addr16

裝入PC,程序無條件轉(zhuǎn)向指定的目標(biāo)地址。轉(zhuǎn)移的目標(biāo)地址可以在64KB程序存儲(chǔ)器地址空間的任何地方,不影響任何標(biāo)志。4.散轉(zhuǎn)指令

JMP@A+DPTR

執(zhí)行該指令時(shí),把累加器A中的8位無符號(hào)數(shù)與數(shù)據(jù)指針中的16位數(shù)相加,結(jié)果作為下條指令的地址送入PC,不改變累加器A和數(shù)據(jù)指針DPTR的內(nèi)容,也不影響標(biāo)志。利用這條指令能實(shí)現(xiàn)程序的散轉(zhuǎn)。

例:散轉(zhuǎn)程序設(shè)計(jì),根據(jù)A中的數(shù)值實(shí)現(xiàn)程序散轉(zhuǎn)

MOV R1,A;(A)×3 RL A ADD A,R1 MOVDPTR,#TABLE;散轉(zhuǎn)表首地址送DPTR JMP @A+DPTRTABLE:LJMPPM0 ;轉(zhuǎn)程序PM0TABLE+3:LJMPPM1 ;轉(zhuǎn)程序PM1 ------PM0:-----LJMP是一個(gè)三字節(jié)指令,因此轉(zhuǎn)移指令入口地址相隔3個(gè)字節(jié),A中內(nèi)容需是3的倍數(shù)。

二、條件轉(zhuǎn)移指令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論