版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章緒論
1.1單片微機(jī)概述1.280C51系列單片微機(jī)1.3單片微機(jī)的應(yīng)用1.4本教程的教學(xué)安排1.1單片微機(jī)概述單片微機(jī)是單片微型計(jì)算機(jī)SCMC(SingleChipMicroComputer)的譯名簡稱,在國內(nèi)也常簡稱為“單片微機(jī)”或“單片機(jī)”。它包括中央處理器CPU、隨機(jī)存儲器RAM、只讀存儲器ROM、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器、串行口和I/O等等。除了工業(yè)控制領(lǐng)域,單片微機(jī)在家用電器、電子玩具、通信、高級音響、圖形處理、語言設(shè)備、機(jī)器人、計(jì)算機(jī)等各個(gè)領(lǐng)域迅速發(fā)展。目前單片微機(jī)的世界年產(chǎn)量已達(dá)100億片,而在中國大陸地區(qū)單片微機(jī)的年應(yīng)用量已達(dá)6億片左右,截止2001年4月,由中國大陸地區(qū)自行設(shè)計(jì)和生產(chǎn)的單片微機(jī)也已達(dá)到2000萬片。由此可見單片微機(jī)的廣泛用途和發(fā)展前景!
1.1.1單片微機(jī)概述1970年微型計(jì)算機(jī)研制成功之后,隨著大規(guī)模集成電路的發(fā)展又出現(xiàn)了單片微機(jī),并且按照不同的發(fā)展要求,形成了二個(gè)獨(dú)立發(fā)展的分支。美國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ī),贏得了廣泛的應(yīng)用,為單片微機(jī)的發(fā)展奠定了基礎(chǔ),成為單片微機(jī)發(fā)展進(jìn)程中的一個(gè)重要階段。
在MCS-48單片微機(jī)成功的刺激下,許多半導(dǎo)體公司和計(jì)算機(jī)公司爭相研制和發(fā)展自己的單片微機(jī)系列,有Motorola公司的6801、6802,Zilog公司的Z-8系列,Rockwell公司的6501、6502等,此外,日本的NEC公司、日立公司及EPSON公司等,也都相繼推出了各具特色的單片微機(jī)品種。 對工業(yè)控制、智能儀表等諸多較高層次的應(yīng)用領(lǐng)域,8位單片微機(jī)系列在性能、價(jià)格兩方面有較好的兼顧。 盡管目前單片微機(jī)的品種很多,但其中最具典型性的當(dāng)屬Intel公司的MCS-51系列單片微機(jī)。此外,它還具有品種全、兼容性強(qiáng)、軟硬件資料豐富等特點(diǎn)。直到現(xiàn)在MCS-51仍不失為單片微機(jī)中的主流機(jī)型。由于8位單片微機(jī)的高性能價(jià)格比,估計(jì)近十年內(nèi),8位單片微機(jī)將仍是單片微機(jī)中的主流機(jī)型。
在8位單片微機(jī)之后,16位單片微機(jī)也有很大發(fā)展。例如,1983年Intel公司推出的MCS-96系列單片微機(jī)。與MCS-51相比,MCS-96不但字長增加一倍,而且還具有4路或8路的10位A/D轉(zhuǎn)換功能,此外,在其它性能方面也有一定的提高。飛利浦公司推出了與80C51在源碼級兼容性的16位單片微機(jī),即80C51XA(每一條80C51指令可以1∶1地被翻譯成一條XA指令,僅XCHD指令除外),用戶不需投入很大的軟件開銷和人員就能較大的提高產(chǎn)品性能。80C51XA具有的高性能包括:執(zhí)行速度快、支持高級語言(比如C語言)、支持實(shí)時(shí)多任務(wù)執(zhí)行、易于形成派生系列產(chǎn)品、地址寬度可變(用戶可以方便地將外部地址線寬度選定為12位、16位、20位、24位等等。在工業(yè)控制產(chǎn)品、高檔智能儀表、彩色復(fù)印機(jī)、錄像機(jī)等應(yīng)用領(lǐng)域,
單片微機(jī)正朝多功能、多選擇、高速度、低功耗、低價(jià)格、擴(kuò)大存儲容量和加強(qiáng)I/O功能及結(jié)構(gòu)兼容方向發(fā)展。今后的發(fā)展趨勢不外乎在以下幾個(gè)方面:
⑴多功能在單片微機(jī)中盡可能多的把應(yīng)用系統(tǒng)中所需要的存儲器、各種功能的I/O口都集成在一塊芯片內(nèi),即外圍器件內(nèi)裝化,如把LED、LCD或VFD顯示驅(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)于同類型的微處理器。1.1.2單片微機(jī)的發(fā)展趨勢⑶全盤CMOS化趨勢單片微機(jī)采用二種半導(dǎo)體工藝生產(chǎn),HMOS工藝即高密度短溝道MOS工藝,具有高速度和高密度;CHMOS工藝即互補(bǔ)金屬氧化物的HMOS工藝,除具有HMOS的優(yōu)點(diǎn)外,還具有CMOS工藝的低功耗特點(diǎn)。如8051的功耗為630mw,而80C51的功耗僅120mw。從第三代單片微機(jī)起開始淘汰非CMOS工藝。目前,數(shù)字邏輯電路和外圍器件等都已普遍CMOS化。
⑷推行串行擴(kuò)展總線
推行串行擴(kuò)展總線可以顯著減少引腳數(shù)量,簡化系統(tǒng)結(jié)構(gòu)。隨著外圍器件串行接口的發(fā)展,單片微機(jī)的串行接口的普遍化、高速化,使得并行擴(kuò)展接口技術(shù)日漸衰退。
許多公司都推出了刪去了并行總線的非總線單片微機(jī),需要外擴(kuò)器件(存儲器、I/O等)時(shí),采用串行擴(kuò)展總線,甚至用軟件虛擬串行總線來實(shí)現(xiàn)。由于集成度的進(jìn)一步提高,有的單片微機(jī)的尋址能力已突破64KB的限制,8位、16位的單片微機(jī)有的尋址能力已達(dá)到IMB和16MB。片內(nèi)ROM的容量可達(dá)62KB,RAM的容量可達(dá)2KB。1.280C51系列單片微機(jī)
8051單片微機(jī)是美INTEL公司在1980年推出的MCS-51系列單片微機(jī)的第一個(gè)成員,MCS是INTEL公司的注冊商標(biāo)。凡INTEL公司生產(chǎn)的以8051為核心單元的其它派生單片微機(jī)都可稱為MCS-51系列,有時(shí)簡稱為51系列。其它公司生產(chǎn)的以8051為核心單元的其它派生單片微機(jī)卻不能稱為MCS-51系列,只能稱為8051系列。8051系列泛指所有公司(也包括INTEL公司)生產(chǎn)的以8051為核心單元的所有單片微機(jī)。80C51系列單片微機(jī)包括Intel公司的MCS-51單片微機(jī),又包括了以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ī)為代表。可以看出,這一代單片微機(jī)主要的技術(shù)特征是為單片微機(jī)配置了完善的外部并行總線(AB、DB、CB)和具有多機(jī)識別功能的串行通信接口(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石XC451、8XC452,還包括了Phlips、Siemens、ADM、Fujutsu、OKI、ATMEL等公司以80C51為核心推出的大量各具特色、與MCS-51兼容的單片微機(jī)。 80C51系列單片微機(jī)是在MCS-51的HMOS基礎(chǔ)上發(fā)展起來的,它們具有CHMOS結(jié)構(gòu)。部分廠家所生產(chǎn)的80C51系列或與之相兼容的單片微機(jī)的特點(diǎn)列于表1-l、表1一2及表1一3中。 從表中可以看出,80C51系列單片微機(jī)保留了MCS-51單片微機(jī)的所有特性,內(nèi)部組成基本相同。80C51系列單片微機(jī)增設(shè)了兩種可以用軟件進(jìn)行選擇的低功耗工作方式:空閑方式和掉電方式。
87C51單片微機(jī)是80C51含EPROM的產(chǎn)品,89C51單片微機(jī)是80C51含EEPROM的產(chǎn)品。新一代的80C51系列單片微機(jī)除了上述的結(jié)構(gòu)特性外,還向外部電路擴(kuò)展,有的公司型號配備了串行擴(kuò)展線,比如芯片間的總線(飛利浦公司的I2C總線)、設(shè)備間網(wǎng)絡(luò)系統(tǒng)總線(CAN總線)等,為外部提供了完善的總線結(jié)構(gòu)。采用總線方式的應(yīng)用系統(tǒng)多屬較復(fù)雜的工控系統(tǒng)、智能儀表、監(jiān)測系統(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)品對總線結(jié)構(gòu)作了重大改進(jìn),推出了非總線型單片微機(jī),其對外部不存在并行三總線(AB、DB、CB),必要時(shí)可以通過串行總線進(jìn)行擴(kuò)展。1.3單片微機(jī)的應(yī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è)接口等。采用總線方式的應(yīng)用系統(tǒng)多屬較復(fù)雜的工控系統(tǒng)、智能儀表、監(jiān)測系統(tǒng),或滿足這些應(yīng)用而構(gòu)成的多機(jī)與網(wǎng)絡(luò)系統(tǒng)??偩€方式的單片微機(jī)在不使用外部并行總線時(shí),外部并行總線引腳可作為I/O口用。在掩膜用戶程序時(shí),還可要求將這些I/O口改造成具有各種驅(qū)動(dòng)能力的I/O口。非總線方式的應(yīng)用系統(tǒng)(如80C51系列中的83C751、87C751,83C752、WC752,Motorola的MC68HC05系列中的許多產(chǎn)品)省去了外部并行總線,可構(gòu)成各種小封裝芯片,有限的引腳可提供更多的用戶I/O口,以使應(yīng)用系統(tǒng)的芯片數(shù)量最少。采用非總線方式的應(yīng)用系統(tǒng)多屬小型控制器、測控單元、單元儀表等。以下大致介紹一些典型的應(yīng)用領(lǐng)域和應(yīng)用特點(diǎn)。l.家用電器領(lǐng)域國內(nèi)各種家用電器已普遍采用單片微機(jī)控制取代傳統(tǒng)的控制電路,做成單片微機(jī)控制系統(tǒng),如洗衣機(jī)、電冰箱、空調(diào)機(jī)、微波爐、電飯堡、電視機(jī)、錄像機(jī)及其它視頻音像設(shè)備的控制器。2.辦公自動(dòng)化領(lǐng)域比如一臺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)測、工業(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ī)來對傳統(tǒng)的儀器儀表行業(yè)的產(chǎn)品進(jìn)行“更新?lián)Q代”,提供了非常理想的的條件。目前各種變送器、電氣測量儀表普遍采用單片微機(jī)應(yīng)用系統(tǒng)替代傳統(tǒng)的測量系統(tǒng),使測量系統(tǒng)具有各種智能化功能,如存儲、數(shù)據(jù)處理、查找、判斷、聯(lián)網(wǎng)和語音功能等。5.汽車電子與航空航天電子系統(tǒng) 通常在這些電子系統(tǒng)中的集中顯示系統(tǒng)、動(dòng)力監(jiān)測控制系統(tǒng)、自動(dòng)駕馭系統(tǒng)、通信系統(tǒng)以及運(yùn)行監(jiān)視器(黑匣子)等,都要構(gòu)成冗余的網(wǎng)絡(luò)系統(tǒng)。比如一臺RMW-7系列寶馬轎車就用了63個(gè)單片微機(jī),大部分還是16位單片微機(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)志著一種全新概念的建立。1.4本教程的教學(xué)安排
MCS-5l系列和80C51系列單片微機(jī),硬件結(jié)構(gòu)簡潔明了、特殊功能寄存器功能規(guī)范、軟件指令系統(tǒng)易于掌握,是一種既便于講授又便于學(xué)習(xí)、理解和掌握的單片微機(jī)。本課程以80C51系列為典型,來介紹單片微機(jī)硬件結(jié)構(gòu)和軟件知識。硬件知識則是指80C51的硬件資源,如I/O口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等。軟件知識是指80C51的尋址方式、指令系統(tǒng)以及程序設(shè)計(jì)等。在本教材中有較多的例子,敘述比較詳細(xì),也適合于初學(xué)者自學(xué)??紤]到同學(xué)們已經(jīng)學(xué)過數(shù)字電路、模擬電路等基礎(chǔ)課程,本教程總的參考教學(xué)時(shí)數(shù)為70學(xué)時(shí)左右,其中上課時(shí)間為50~60學(xué)時(shí),實(shí)驗(yàn)上機(jī)時(shí)間為12~18學(xué)時(shí)。表1–1Philips公司80C51系列的部分單片微機(jī)表1–2ATMEL公司89C51系列的部分單片微機(jī)
表1–3華邦公司W(wǎng)78C51和W77C51系列的部分單片微機(jī)
第2章MCS-51單片機(jī)的硬件結(jié)構(gòu)2.1MCS-51單片機(jī)的硬件結(jié)構(gòu)概述2.2中央處理器CPU2.3MCS-51單片機(jī)的存儲器2.4MCS-51單片機(jī)并行輸入/輸出口2.5MCS-51單片機(jī)的復(fù)位2.6單片機(jī)的幾種工作方式2.1MCS-51單片機(jī)的硬件結(jié)構(gòu)概述2.1.1MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)框圖單片機(jī)主要部件有8個(gè),通過片內(nèi)總線連接而成:中央處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、并行輸入/輸出口(P0口-P3口)、串行口、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器。2.1.2MCS-51單片機(jī)的引腳及片外總線結(jié)構(gòu)
1.MCS-51單片機(jī)的引腳
MCS-51單片機(jī)的封裝有兩種形式:一種是雙列直插式PDIP(PLASTICDIP)封裝的形式,另一種是方形封裝形式PLCC(PLASTICLEADEDCHIPCARRIED),方形封裝有44引腳,其中4個(gè)NC為空引腳。HMOS工藝的80C51單片機(jī)采用40引腳的PDIP封裝,CHMOS工藝的單片機(jī)80C51除采用PDIP封裝外,還采用PLCC封裝形式。
40引腳PDIP封裝的80C51單片機(jī)引腳排列圖如圖2.2所示。2.1MCS-51單片機(jī)的硬件結(jié)構(gòu)概述P0口的P0.0~P0.7引腳(39~32腳)P1口的P1.0~P1.7引腳(1~8腳)P2口的P2.0~P2.7引腳(28~21腳)P3口的P3.0~P3.7引腳(10~17腳)Vcc(40腳):電源端,接+5V;Vss(20腳):接地端;XTAL1(19腳)、XTAL2(18腳):外接石英晶體、微調(diào)電容或振蕩信號輸入引腳。RST/VPD(9腳):復(fù)位信號輸入端引腳。第二功能為備用電源輸入端。
/Vpp(31腳):讀片內(nèi)或片外程序存儲器選擇端引腳。第二功能為編程電壓輸入端。:低8位地址鎖存允許信號輸出引腳。第二功能為編程脈沖輸入引腳;(29引腳):讀片外程序存儲器選通信號輸出端引腳。2.1.2MCS-51單片機(jī)的引腳及片外總線結(jié)構(gòu)⑴地址總線(AddressBus,簡寫AB)地址線A0~A15共16位,P2口提供高8位地址A8~A15,P0口經(jīng)地址鎖存器提供低8位地址A0~A7。片外存儲器可尋址范圍達(dá)64KB(即=65536個(gè)字節(jié))。⑵數(shù)據(jù)總線(DataBus,簡寫DB)
地址線D0-D7共8位,由P0口提供,分時(shí)輸送低8位地址(通過地址鎖存器鎖存)和8位數(shù)據(jù)信息。⑶控制總線(ControlBus,簡寫CB)
控制總線由P3口的第二功能(P3.6)、(P3.7)和3根獨(dú)立的控制線、ALE和組成。
2.MCS-51單片機(jī)的片外三總線結(jié)構(gòu)所謂總線,就是連接單片機(jī)與系統(tǒng)中各部件的一組公共的信號線?;厣蠈幽夸?.1.2MCS-51單片機(jī)的引腳及片外總線結(jié)構(gòu)2.2中央處理器CPU2.2.1CPU的組成
CPU由運(yùn)算器、控制器和若干特殊功能寄存器(如累加器A、B寄存器、程序狀態(tài)字寄存器PSW、堆棧指針寄存器SP、數(shù)據(jù)指針寄存DPTR等)組成。
1.運(yùn)算器具有一般微機(jī)所不具備的位處理功能。
2.控制器以主振頻率為基準(zhǔn)產(chǎn)生時(shí)鐘信號,控制取指令、執(zhí)行指令、存取操作數(shù)或運(yùn)算結(jié)果等操作,并向其它部件發(fā)出各種微控制信號,保證單片機(jī)各部分能自動(dòng)協(xié)調(diào)地工作。
2.2.2指令執(zhí)行的基本過程
1.單片機(jī)在工作前,首先必須在存儲器中裝入程序。所謂程序,就是為了完成某項(xiàng)工作,將一系列指令有序地組合,而指令則是要求單片機(jī)執(zhí)行某種操作的命令。
2.指令分為操作碼和地址碼兩個(gè)部分,操作碼部分規(guī)定了單片機(jī)操作類型,而地址碼部分一般是直接或間接地給出了參與操作的數(shù)據(jù)的存放地址,所以地址碼也可以直接稱為操作數(shù)。
3.單片機(jī)完成每項(xiàng)工作,必須有序地執(zhí)行一系列指令。單片機(jī)執(zhí)行一條指令一般分為取指令和執(zhí)行指令兩個(gè)階段。從存儲器中取出指令,并且對指令進(jìn)行譯碼,以明確該指令執(zhí)行何種操作,以及操作數(shù)的存放地址(即操作數(shù)存放在哪一個(gè)單元中),再根據(jù)這個(gè)地址獲取操作數(shù),這是取指令階段。按操作碼指明的操作類型對獲取的操作數(shù)進(jìn)行操作(也可稱為運(yùn)算),這是執(zhí)行指令階段。
2.2.2指令執(zhí)行的基本過程
4.程序計(jì)數(shù)器(ProgramCounter簡稱PC)是一個(gè)16位的有自動(dòng)加1功能的計(jì)數(shù)器。PC沒有地址,是不可尋址的,因此用戶不能對它進(jìn)行讀寫。
16位PC中的內(nèi)容總是CPU將要執(zhí)行的那條指令所存放的存儲單元的首地址。在單片機(jī)復(fù)位時(shí),PC中的內(nèi)容為0000H,指向第1條要執(zhí)行的指令的首地址,在CPU從存儲單元取指令的過程中,每取1個(gè)字節(jié)的內(nèi)容,程序計(jì)數(shù)器PC就自動(dòng)加1,在取完這條指令后,PC中的內(nèi)容就是下一條要執(zhí)行的指令所存放的存儲單元的首地址。
5.在實(shí)際應(yīng)用中,有時(shí)CPU還要執(zhí)行程序的轉(zhuǎn)移、子程序的調(diào)用和中斷響應(yīng)等操作,那時(shí)PC中的內(nèi)容不再是上述情況中簡單的加1,而是根據(jù)不同的情況自動(dòng)地被置入或修改成新的目的地址,從而改變程序的執(zhí)行順序。
2.2.3時(shí)鐘電路與時(shí)序
時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號。時(shí)鐘電路框圖如圖2.4所示。單片機(jī)芯片內(nèi)部有一個(gè)高增益反向放大器,其輸入引腳為XTAL1,輸出引腳為XTAL2,芯片外部通過這兩個(gè)引腳接晶體振蕩器CYS和微調(diào)電容器C1、C2形成反饋電路(通常取值在20~30pF),構(gòu)成穩(wěn)定的自激振蕩器,振蕩頻率范圍通常是1.2MHz~12MHz。振蕩脈沖經(jīng)分頻后再為系統(tǒng)所用。
PD是PCON中的控制位,當(dāng)PD=1時(shí),振蕩器停止工作,系統(tǒng)進(jìn)入低功耗工作態(tài)。時(shí)鐘發(fā)生器實(shí)質(zhì)上是一個(gè)2分頻的觸發(fā)器,其輸入來自振蕩器,輸出為2相時(shí)鐘信號,即狀態(tài)時(shí)鐘信號,其頻率為fosc/2;狀態(tài)時(shí)鐘3分頻后為ALE信號,其頻率為fosc/6;狀態(tài)時(shí)鐘6分頻后為機(jī)器周期,其頻率為fosc/12(OSC是osillator的縮寫)。
我們也可以引入外部脈沖信號作為單片機(jī)的振蕩脈沖,對于80C51單片機(jī)而言,這時(shí)外部脈沖信號是經(jīng)XTAL1引腳注入,而XTAL2引腳懸空,對外部信號的占空比沒有要求,但高低電平持續(xù)的時(shí)間不就短于20ns。這種方式常用于多塊芯片同時(shí)工作,這樣便于同步,如圖2.5所示。2.2.3時(shí)鐘電路與時(shí)序2.2.4時(shí)序與時(shí)序定時(shí)單位所謂時(shí)序,是指在執(zhí)行指令過程中,CPU的控制器所發(fā)出的一系列特定的控制信號在時(shí)間上的相互關(guān)系。
1.拍節(jié):振蕩脈沖的周期(晶振周期)定義為拍節(jié)(用“P”表示)。
2.狀態(tài):振蕩脈沖經(jīng)過兩分頻后,就是單片機(jī)的時(shí)鐘信號,把時(shí)鐘信號的周期定義為狀態(tài)(用“S”來表示)。這樣,一個(gè)狀態(tài)包含兩個(gè)拍節(jié),前半周期為拍節(jié)1(P1),后半周期為拍節(jié)2(P2)。
3.機(jī)器周期:規(guī)定一個(gè)機(jī)器周期為6個(gè)狀態(tài),相當(dāng)于12個(gè)拍節(jié),即12個(gè)振蕩脈沖的周期,可分別用S1~S6來表示狀態(tài),S1P1、S1P2、S2P1、S2P2……S6P2來表示拍節(jié)。
4.指令周期:執(zhí)行一條指令所需要的時(shí)間稱之為指令周期,指令周期以機(jī)器周期的數(shù)目來表示。2.3MCS-51單片機(jī)的存儲器
2.3.1MCS-51單片機(jī)存儲器結(jié)構(gòu)概述
與微機(jī)中不同,MCS-51單片機(jī)中存放程序的程序存儲器和存放數(shù)據(jù)的數(shù)據(jù)存儲器,在物理空間上是相互獨(dú)立哈佛結(jié)構(gòu)。
MCS-51單片機(jī)的存儲器在物理結(jié)構(gòu)上可以分為片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。而對這些空間的管理,是分為3個(gè)的邏輯地址空間進(jìn)行的:片內(nèi)片外統(tǒng)一編址的64KB程序存儲器地址空間;片內(nèi)獨(dú)立編址的256B數(shù)據(jù)存儲器地址空間;片外獨(dú)立編址的64KB數(shù)據(jù)存儲器地址空間。即訪問這3個(gè)不同的邏輯空間,要采用不同形式的指令。如圖2.7圖2.78051單片機(jī)存儲器地址空間2.3.2程序存儲器1.8051單片機(jī)系列有片內(nèi)有程序存儲器和片內(nèi)無程序存儲器之分,片內(nèi)存儲器的容量大小也有所不同。8051單片機(jī)片內(nèi)設(shè)置有4K字節(jié)的掩膜型ROM,其地址范圍為0000H~0FFFH,若片外擴(kuò)展程序存儲器,其地址范圍為1000H~FFFFH。程序存儲器的0000H~002AH共43個(gè)單元用作存儲特定程序的入口地址。0000H~0002H這3個(gè)單元是系統(tǒng)的啟動(dòng)單元;0003H~002AH共40個(gè)單元是中斷服務(wù)程序地址區(qū),它被分為五段,每段8個(gè)單元,分別分配給5個(gè)中斷源:0003H~000AH
外部中斷0中斷服務(wù)程序地址區(qū);000BH~OO12H
定時(shí)/計(jì)數(shù)器0中斷服務(wù)程序地址區(qū);0013H~001AH
外部中斷1中斷服務(wù)程序地址區(qū);001BH~0022H
定時(shí)/計(jì)數(shù)器1中斷服務(wù)程序地址區(qū);0023H~002AH
串行口中斷服務(wù)程序地址區(qū)。
2.3.3MCS-51單片機(jī)的數(shù)據(jù)存儲器
MCS-51單片機(jī)數(shù)據(jù)存儲器是RAM型存儲器,用于暫存數(shù)據(jù)和運(yùn)算結(jié)果等。
MCS-51單片機(jī)數(shù)據(jù)存儲器也可以分為片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。當(dāng)片內(nèi)數(shù)據(jù)存儲器不夠用時(shí),可擴(kuò)展片外數(shù)據(jù)存儲器。一般情況下,片外數(shù)據(jù)存儲器的容量不超過64KB。與內(nèi)、外部的程序存儲器不同,內(nèi)部和外部數(shù)據(jù)存儲器空間存在重疊(內(nèi)部RAM的地址范圍為00H~0FFH,外部RAM的地址范圍為0000H~0FFFFH),通過不同指令來區(qū)別。當(dāng)訪問內(nèi)部RAM時(shí),用MOV類指令;當(dāng)訪問外部RAM時(shí),則用MOVX類指令,所以地址重疊不會(huì)造成操作混亂。一、片內(nèi)數(shù)據(jù)存儲器二、片外數(shù)據(jù)存儲器一、MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲器
MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲器空間共計(jì)256字節(jié),在功能上有具體分為片內(nèi)數(shù)據(jù)存儲器與特殊功能寄存器區(qū),它們統(tǒng)一編址,其中片內(nèi)數(shù)據(jù)存儲器共有128個(gè)字節(jié),占用00H~7FH地址范圍,特殊功能寄存器區(qū)占用80H~0FFH這段空間。片內(nèi)數(shù)據(jù)存儲器分成:
1、工作寄存器區(qū)
2、可位尋址區(qū)
3、通用RAM區(qū)三部分。
4、特殊功能寄存器區(qū)如圖2.8
00H20H2FH7FH1FH30H80H0FFH特殊功能寄存器區(qū)
普通RAM區(qū)位尋址區(qū)
工作寄存器區(qū)圖2.8MCS-51單片機(jī)的內(nèi)部數(shù)據(jù)存儲器空間返回1.片內(nèi)數(shù)據(jù)存儲器——工作寄存器區(qū)
地址范圍在00H~1FH的32個(gè)字節(jié),可分成4個(gè)工作寄存器組,每組占8個(gè)字節(jié)。具體劃分如下:
第0組工作寄存器:地址范圍為00H~07H
第1組工作寄存器:地址范圍為08H~0FH
第2組工作寄存器:地址范圍為10H~17H
第3組工作寄存器:地址范圍為18H~1FH
每個(gè)工作寄存器組都有8個(gè)寄存器,它們分別稱為R0、R1、R2、R3、R4、R5、R6、R7。但在程序運(yùn)行時(shí),只允許有一個(gè)工作寄存器組工作,把這組工作寄存器稱為當(dāng)前工作寄存器組,所以每組之間不會(huì)因?yàn)槊Q相同而混淆出錯(cuò)。
可通過對特殊功能寄存器中的程序狀態(tài)字寄存器PSW的RS1、RS0的狀態(tài)設(shè)置,來選擇哪一組工作寄存器作為當(dāng)前工作寄存器組。單片機(jī)復(fù)位時(shí),當(dāng)前工作寄存器默認(rèn)為0組。
2.片內(nèi)數(shù)據(jù)存儲器——位尋址區(qū)
單片機(jī)片內(nèi)RAM中20H~2FH地址范圍中共16個(gè)字節(jié)單元稱為位尋址區(qū)。該區(qū)的16個(gè)字節(jié)單元,既可作為一般的RAM使用,進(jìn)行字節(jié)操作,也可以對單元中的每一位進(jìn)行位操作。
16個(gè)字節(jié)單元共128位,每位有位地址,地址范圍是00H~07H。位尋址區(qū)中的每一位地址有兩種表示形式:一是表中位地址形式,另一種是單元地址?位序形式。
3.片內(nèi)RAM數(shù)據(jù)——通用RAM區(qū)
單片機(jī)片內(nèi)RAM中,30H-7FH的80個(gè)單元只能以存儲單元的形式來使用沒有其它任何規(guī)定或限制,用戶可以根據(jù)需要自由安排所以稱它為通用RAM區(qū)。該區(qū)域中的單元只能用直接尋址、寄存器間接尋址等方式按字節(jié)訪問。
堆棧就是設(shè)在單片機(jī)內(nèi)部RAM中。堆棧及其存儲特性堆棧的概念堆棧是在單片機(jī)內(nèi)部RAM中從某個(gè)選定的存儲單元開始劃定的一個(gè)地址連續(xù)的區(qū)域,這個(gè)區(qū)域本身沒有任何特殊之處,它就是內(nèi)部RAM的一部份,不同的是這個(gè)區(qū)域以選定的某個(gè)存儲單元作為棧底,只允許向一個(gè)方向?qū)懭霐?shù)據(jù),最后一個(gè)寫入數(shù)據(jù)的存儲單元稱為棧頂。堆棧的生成有兩種情況,向高地址方向?qū)懭霐?shù)據(jù)生成的堆棧稱為向上生長型堆棧,反之稱為向下生長型堆棧,MCS-51單片機(jī)屬于向上生長型堆棧(即向高地址方向生成)。數(shù)據(jù)寫入堆棧為插入運(yùn)算(PUSH),通常稱為入棧,數(shù)據(jù)從堆棧中讀出為刪除運(yùn)算(POP),通常稱為出棧,按堆棧的規(guī)定,入棧和出棧只能在棧頂一端進(jìn)行。MCS-51單片機(jī)中,用一個(gè)稱為堆棧指針SP(StackPointer)的特殊功能寄存器來給出棧頂存儲單元的地址,堆棧指針SP中存儲的總是堆棧棧頂存儲單元的地址,即堆棧指針SP總是指向堆棧棧頂。向上生長型堆棧出棧入棧的操作原則是“先進(jìn)后出”或“后進(jìn)先出”。入棧操作規(guī)則為:先SP中的內(nèi)容加1,后寫入數(shù)據(jù);出棧操作規(guī)則為:先讀出數(shù)據(jù),后SP中的內(nèi)容減1。系統(tǒng)復(fù)位后,SP中的內(nèi)容為07H,在程序設(shè)計(jì)中,常用指令對SP的復(fù)位值進(jìn)行修改,將堆棧開辟在通用RAM區(qū)。
00H20H2FH7FH1FH30H80H0FFH特殊功能寄存器區(qū)普通RAM區(qū)位尋址區(qū)
工作寄存器區(qū)初始SPSP棧頂數(shù)據(jù)出棧SP-1指向新的棧頂,即下一個(gè)要出棧的數(shù)據(jù)特殊功能寄存器(SpecialFunctionRegisters簡稱SFR)
1.在8051單片機(jī)中設(shè)置了21個(gè)特殊功能寄存器,它們不連續(xù)地分布在地址為80H-FFH的128個(gè)字節(jié)的存儲空間中。
2.在這21個(gè)SFR中,凡是字節(jié)地址能被8整除(即16進(jìn)制的地址碼尾數(shù)為0或8)的11個(gè)單元均具有位尋址能力,有效的位地址共有82個(gè)。
3.82個(gè)有效位地址可用位地址、位符號、單元地址.位序和寄存器名.位序四種方法來表示,但一般是用位符號或寄存器名.位序來表示的。表2.3各特殊功能寄存器的符號及地址表續(xù)前表21個(gè)特殊功能寄存器在各功能機(jī)構(gòu)的分布:中央處理器(CPU):A、B、PSW、SP、DPTR(DPH、DPL);并行口:P0、P1、P2、P3;串行口:SCON、SBUF、PCON;中斷系統(tǒng):IE、IP;定時(shí)/計(jì)數(shù)器:TMOD、TCON、TH0、TL0、TH1、TL1。
5.特殊功能寄存器A、B、PSW、DPTR(DPH、DPL)介紹。
PSW的各位的位符號及其意義:
二、片外數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器一般用來存放相對來講是用不太頻繁的數(shù)據(jù),其中的數(shù)據(jù)不能直接進(jìn)行處理,要進(jìn)行處理前必須提前從外部數(shù)據(jù)存儲器送到單片機(jī)內(nèi)部。外部數(shù)據(jù)存儲器地址空間尋址范圍為64K字節(jié),采用R0、R1或DPTR寄存器間址方式訪問。當(dāng)采用R0、R1間址時(shí)只能訪問00H~0FFH的低256字節(jié),采用DPTR間址可訪問整個(gè)64K字節(jié)空間。
2.4MCS-51單片機(jī)并行輸入/輸出口
2.4.1端口的功能
80C51單片機(jī)有4個(gè)8位的雙向并行輸入/輸出(I/O)端口,稱為P0口、P1口、P2口和P3口。
1.P0口是一個(gè)雙功能的8位并行I/O口,字節(jié)地址為80H,位地址為80H~87H??勺鬏斎?輸出端口使用,又可作地址/數(shù)據(jù)總線分時(shí)傳輸?shù)?位地址和8位數(shù)據(jù)。
2.P1口是單一功能的并行I/O口,字節(jié)地址為90H,位地址為90H~97H。它只用作通用的數(shù)據(jù)輸入/輸出口。
3.P2口是一個(gè)雙功能的8位并行I/O口,字節(jié)地址為80H,位地址為A0H~A7H??勺魍ㄓ玫妮斎?輸出口用,又可用作高8位地址總線。
4.P3口是一個(gè)雙功能的8位并行I/O口,字節(jié)地址為B0H,位地址為B0H~B7H,它的第一功能是通用輸入/輸出口,作第二功能用時(shí),各引腳定義如下:P3.0:RXD(串行口輸入);P3.1:TXD(串行口輸出)P3.2:(外部中斷0輸入)P3.3:(外部中斷1輸入)P3.4:T0(定時(shí)/計(jì)數(shù)器0外部計(jì)數(shù)脈沖輸入)P3.5:T1(定時(shí)/計(jì)數(shù)器1外部計(jì)數(shù)脈沖輸入)P3.6:(片外數(shù)據(jù)存儲器寫選通信號輸出)P3.7:(片外數(shù)據(jù)存儲器讀選通信號輸出)。2.4.2端口的內(nèi)部結(jié)構(gòu)與運(yùn)作1.P0口2.P1口3.P2口4.P3口⑴結(jié)構(gòu)與運(yùn)作圖2.10畫出了P0口的某位P0.X(X=0、1…6、7)的結(jié)構(gòu)圖。
P0口的位電路結(jié)構(gòu)由以下幾個(gè)部分組成:1個(gè)輸出鎖存器,用于進(jìn)行輸出數(shù)據(jù)的鎖存;2個(gè)三態(tài)輸入緩沖器,分別用于鎖存器和引腳數(shù)據(jù)的輸入緩沖;1個(gè)多路開關(guān)MUX,它的一個(gè)輸入來自鎖存器,另一個(gè)輸入是地址/數(shù)據(jù)信號的反相輸出。在控制信號的的控制下能實(shí)現(xiàn)對鎖存器輸出端和地址/數(shù)據(jù)線之間的切換;由兩只場效應(yīng)管組成的輸出驅(qū)動(dòng)電路。⑵P0口的特點(diǎn)P0口是一個(gè)雙功能的端口:地址/數(shù)據(jù)分時(shí)復(fù)用口和通用I/O口;具有高電平、低電平和高阻抗3種狀態(tài)的I/O端口稱為雙向I/O端口。P0口作地址/數(shù)據(jù)總線復(fù)用口時(shí),相當(dāng)于一個(gè)真正的雙向I/O口。而用作通用I/O口時(shí),由于引腳上需要外接上拉電阻,端口不存在高阻(懸空)狀態(tài),此時(shí)P0口只是一個(gè)準(zhǔn)雙向口;為保證引腳上的信號能正確讀入,在讀入操作前應(yīng)首先向鎖存器寫1;單片機(jī)復(fù)位后,鎖存器自動(dòng)被置1;一般情況下,如果P0口已作為地址/數(shù)據(jù)復(fù)用口時(shí),就不能再用作通用I/O口使用;P0口能驅(qū)動(dòng)8個(gè)TTL負(fù)載。
⑴結(jié)構(gòu)與運(yùn)作
P1口的位結(jié)構(gòu)如圖2.11所示。P1口是一個(gè)準(zhǔn)雙向口,只作通用輸入/輸出口使用。除了無多路開關(guān)MUX之外,其輸出驅(qū)動(dòng)部分也與P0口不同
P1口的位電路結(jié)構(gòu)由以下幾個(gè)部分組成:一個(gè)數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)的鎖存;兩個(gè)三態(tài)輸入緩沖器,BUF1用于讀鎖存器,BUF2用于讀引腳;數(shù)據(jù)輸出驅(qū)動(dòng)電路,由場效應(yīng)管VT和片內(nèi)上拉電阻R組成。
⑵P1口的特點(diǎn)
P1口由于有內(nèi)部上拉電阻,沒有高阻抗輸入狀態(tài),所以稱為準(zhǔn)雙向口。作為輸出口時(shí),不需要再在片外拉接上拉電阻;
P1口讀引腳輸入時(shí),必須先向鎖存器寫入1,其原理與P0口相同;
P1口能驅(qū)動(dòng)4個(gè)TTL負(fù)載。
⑴結(jié)構(gòu)與運(yùn)作從圖2.12中可見,P2口的位結(jié)構(gòu)比P1口多了一個(gè)多路開關(guān)MUX。
P2口的位電路結(jié)構(gòu)由以下幾個(gè)部分組成:一個(gè)數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)的鎖存;兩個(gè)三態(tài)輸入緩沖器,BUF1用于讀鎖存器,BUF2用于讀引腳;一個(gè)多路開關(guān)MUX,它的一個(gè)輸入來自鎖存器的Q端,另一個(gè)輸入來自內(nèi)部地址的高8位;數(shù)據(jù)輸出驅(qū)動(dòng)電路由非門M,場效應(yīng)管VT和片內(nèi)上拉電阻R組成。⑵P2口的特點(diǎn)
P2口用作高8位地址輸出線應(yīng)用時(shí),與P0口輸出的低8位地址一起構(gòu)成16位的地址總線,可以尋址64KB地址空間。當(dāng)P2口作高8位地址輸出口時(shí),其輸出鎖存器原鎖存的內(nèi)容保持不變。作為通用I/O口使用時(shí),P2口為準(zhǔn)雙向口,功能與P1口一樣。
P2口能驅(qū)動(dòng)4個(gè)TTL負(fù)載。⑴結(jié)構(gòu)組成
P3口是雙功能8位輸入/輸出口,內(nèi)部結(jié)構(gòu)中增加了第二輸入/輸出功能,如圖2.13所示。
P3口的位電路結(jié)構(gòu)由以下幾個(gè)部分組成:一個(gè)數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)的鎖存;
3個(gè)三態(tài)輸入緩沖器,BUF1用于讀鎖存器,BUF2、BUF3用于讀引腳和第二功能數(shù)據(jù)的緩沖輸入;數(shù)據(jù)輸出驅(qū)動(dòng)電路,由與非門M,場效應(yīng)管VT和片內(nèi)上拉電阻R組成。
⑵P3口的特點(diǎn)P3口內(nèi)部有上拉電阻,不存在高阻輸入狀態(tài),是一個(gè)準(zhǔn)雙向口;P3口作第二功能的輸出/輸入或作通用輸入時(shí),均需將相應(yīng)的鎖存器置1。實(shí)際應(yīng)用中,由于復(fù)位后P3口鎖存器自動(dòng)置1,已滿足第二功能運(yùn)作條件,所以可以直接進(jìn)行第二功能操作;P3口的某位不作為第二功能使用時(shí),則自動(dòng)處于通用輸出/輸入口功能,可作為通用輸出/輸入口使用;作通用輸出/輸入口使用時(shí),輸入信號取自緩沖器BUF2的輸出端,作第二功能使用時(shí),輸入信號取自緩沖器BUF3的輸出端;P3口能驅(qū)動(dòng)4個(gè)TTL負(fù)載。2.5MCS-51單片機(jī)的復(fù)位2.5.1復(fù)位電路復(fù)位操作通常有兩種基本形式:上電自動(dòng)復(fù)位、手動(dòng)按鍵復(fù)位,如圖2.14所示。上電自動(dòng)復(fù)位操作要求接通電源后自動(dòng)實(shí)現(xiàn)復(fù)位操作。如下左圖所示。手動(dòng)按鍵復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,用按鈕開關(guān)操作使單片機(jī)復(fù)位,如下右圖所示。在8C051單片機(jī)的RST引腳上輸入高電平并至少保持兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)以上時(shí),復(fù)位過程即可完成。如果RST引腳持續(xù)保持高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位電路2.5.2單片機(jī)的復(fù)位狀態(tài)1.程序計(jì)數(shù)器PC初始化為0000H,使單片機(jī)從OOOOH單元開始執(zhí)行程序。在運(yùn)行中,當(dāng)單片機(jī)的程序受外界因素干擾陷入死循環(huán)或跑飛時(shí),為擺脫困境,可將單片機(jī)復(fù)位,重新啟動(dòng)。2.復(fù)位也可使單片機(jī)退出低功耗工作方式而進(jìn)入正常工作狀態(tài)。
3.單片機(jī)復(fù)位后:P0~P3的端口鎖存器被設(shè)置成FFH;堆棧指針SP設(shè)置成07H;串行口的SBUF無確定值;其它各專用寄存器包括程序計(jì)數(shù)器PC均被設(shè)置成00H;片內(nèi)RAM不受復(fù)位的影響,上電后RAM中的內(nèi)容隨機(jī)。2.6單片機(jī)的幾種工作方式2.6.1程序執(zhí)行方式
單片機(jī)上電復(fù)位后,從程序存儲器的OOOOH單元開始執(zhí)行程序,程序執(zhí)行方式是單片機(jī)的基本工作方式。2.6.2掉電保護(hù)方式
MCS-51單片機(jī)設(shè)置有掉電保護(hù)措施,其保護(hù)措施是:單片機(jī)系統(tǒng)在運(yùn)行中突然掉電故障時(shí),先保存重要的數(shù)據(jù),然后啟用備用電源維持供電。
2.6.3低功耗方式
80C51單片機(jī)有兩種功耗節(jié)電方式:空閑方式(idlemode)和掉電方式(powerdownmode)??臻e方式和掉電方式都是由特殊功能寄存器中的電源控制寄存器PCON的有關(guān)控制位來控制的,圖2.15為為兩種節(jié)電方式的工作原理圖。電源控制寄器PCON不可位尋址,字節(jié)地址為87H,其每位的定義如下:SMOD波特率倍增位,在串行通信中應(yīng)用。/保留位。GF1用戶通用標(biāo)志在1。GF0用戶通用標(biāo)志在0。PD掉電方式控制位,PD=1,單片機(jī)進(jìn)入掉電方式。IDL空閑方式控制位,IDP=1,單片機(jī)進(jìn)入空閑方式。1.空閑方式
使PCON中的IDL置1,單片機(jī)系統(tǒng)就可進(jìn)入空閑方式。在空閑方式下,振蕩器仍然運(yùn)行,CPU進(jìn)入睡眠狀態(tài),所有外圍電路(中斷系統(tǒng)、串行口和定時(shí)/計(jì)數(shù)器)仍繼續(xù)工作,但內(nèi)部RAM和特殊功能寄存器中的數(shù)據(jù)保持在原狀態(tài)不變??臻e方式的退出可采用兩種方式:中斷方式和硬件復(fù)位方式。2.掉電方式
使PCON中的PD位置1(是運(yùn)行程序中最后執(zhí)行的指令),單片機(jī)系統(tǒng)就可進(jìn)入掉電方式。在掉電方式下,振蕩器停止運(yùn)行,但內(nèi)部RAM和特殊功能寄存器中的數(shù)據(jù)保持在原狀態(tài)不變,直到退出掉電方式。退出掉電方式的惟一方法是硬件復(fù)位,復(fù)位要重新定義特殊功能寄存器,但不改變單片機(jī)片內(nèi)RAM的內(nèi)容。在恢復(fù)正常工作水平后,才能啟動(dòng)硬件復(fù)位,而且復(fù)位信號必需維持足夠的時(shí)間,允許振蕩器重新啟動(dòng)并達(dá)到穩(wěn)定。71
第三章MCS-51指令系統(tǒng)3.1指令系統(tǒng)概述3.2尋址方式3.3指令系統(tǒng)72MCS-51系列單片機(jī)指令基本情況51系列單片機(jī)指令集含有111條指令每條指令在程序存儲器ROM中占據(jù)一定空間,以字節(jié)為單位按指令所占字節(jié)數(shù)分類:
單字節(jié)(49條);雙字節(jié)(46條);3字節(jié)(16條)
每條指令在執(zhí)行時(shí)要花去一定的時(shí)間,以機(jī)器周期為單位按指令執(zhí)行時(shí)間分類:單周期(64條);雙周期(45條);4周期(2條)按指令的功能分類,可分為5大類:
數(shù)據(jù)傳送類(29條);算術(shù)運(yùn)算類(24條)
邏輯運(yùn)算及移位類(24);控制轉(zhuǎn)移類(17條)
位操作類(17條)
第三章節(jié)MCS-51指令系統(tǒng)73ASM-51指令格式51系列單片機(jī)采用ASM-51指令格式,格式如下:[標(biāo)號:]操作碼
[目的操作數(shù)][,源操作數(shù)][;注釋]其中包含:方括符[]表示可選項(xiàng)標(biāo)號代表指令所在地址,1-8個(gè)字母/數(shù)字,“:”結(jié)尾操作碼就是指令功能助記符,指令實(shí)體目的操作數(shù)源操作數(shù)注釋,以“;”開頭74第一節(jié)MCS-51系列單片機(jī)尋址方式尋址方式:計(jì)算機(jī)指令中操作數(shù)(按地址)獲取的方式MCS-51系列單片機(jī)提供了7種尋址方式,如果一條指令中包含多個(gè)操作數(shù),就可能用到一種以上的尋址方式1、立即尋址2、直接尋址3、寄存器尋址4、寄存器間接尋址5、變址尋址6、相對尋址7、位尋址751、立即尋址(一)在指令中直接給出操作數(shù)的尋址方式稱為立即尋址。這個(gè)操作數(shù)叫立即數(shù),如指令:
MOVA,#3AH該指令是將立即數(shù)3AH送累加器,由于MCS-51單片機(jī)的片內(nèi)存儲器是8位存儲器,因此立即數(shù)一般為8位二進(jìn)制數(shù)。在MCS-51的指令系統(tǒng)中,用#來識別立即數(shù)。74HA
操作碼立即數(shù)程序存儲器PCPC+13AH3AH761、立即尋址(二)在有的指令中,也會(huì)用到16位立即數(shù),如:MOVDPTR,#0123H該指令是將16位立即數(shù)0123H送數(shù)據(jù)指針DPTR(用于對16位地址的存儲器尋址),DPTR由兩個(gè)特殊功能寄存器DPH和DPL組成,在后面的尋址方式中會(huì)使用到DPTR。90H01H23H01H23HPCPC+1PC+2操作碼高位立即數(shù)低位立即數(shù)程序存儲器SFRDPHDPL772、直接尋址在指令中直接給出操作數(shù)地址的尋址方式稱為直接尋址,直接尋址何以尋址特殊功能寄存器、內(nèi)部RAM(128字節(jié))和位地址,如:MOVA,70H;A←(70H)該指令是將RAM單元70H(地址)的內(nèi)容送累加器。74H70HPCPC+1操作碼直接地址程序存儲器內(nèi)部RAM70HAXXXX783、寄存器尋址在指令的操作碼中包含了某一工作寄存器的地址(Rn:R0—R7),而操作數(shù)則存放在該寄存器中,如:MOVA,R5;A←(R5)該指令是將R5的內(nèi)容送累加器。101PC操作碼程序存儲器內(nèi)部RAMR5AXXXXR6R71101794、寄存器間接尋址在指令的操作碼中包含了某一工作寄存器的地址(可用作地址指針的工作寄存器是@Ri:R0、R1),而操作數(shù)地址則存放在該寄存器中,如:MOVA,@R1;A←((R1))該指令是將R1的內(nèi)容送作為地址,將該地址所對應(yīng)的RAM單元的內(nèi)容送累加器。1PC操作碼程序存儲器內(nèi)部RAMR1AXX68H111001XX68H805、變址尋址將PC或DPTR的值作為基地址,將Acc的值作為變址地址,二者向加得到的值作為操作數(shù)的地址,如:MOVA,@A+DPTR;A←((A)+(DPTR))這種尋址方式一般用于常數(shù)表,DPTR的內(nèi)容為表頭地址,Acc的內(nèi)容就是數(shù)據(jù)在表中的位置。PC操作碼程序存儲器SFRA100100111EH02HALU030FHXXDPHDPLF1H02F1H02F1H+1EH=030FHXX816、相對尋址(一)相對尋址以PC當(dāng)前值(PC當(dāng)前值是執(zhí)行完指令后的值,也就是當(dāng)前指令的PC值+指令所占的字節(jié)數(shù))作為基地址,與指令中給定的偏移量rel相加,所得的結(jié)果作為程序的轉(zhuǎn)移地址,指令中的偏移量rel是一個(gè)用補(bǔ)碼表示的8位帶符號數(shù)。相對尋址用于相對轉(zhuǎn)移指令中,如:
JZ30H;當(dāng)A=0時(shí),PC←PC+2+rel
當(dāng)A≠0時(shí),PC←PC+2//程序順序執(zhí)行該指令以累加器Acc的值是否為0為轉(zhuǎn)移條件,如果為Acc的值0則轉(zhuǎn)移,如果Acc的值不為0則程序順序執(zhí)行。程序的執(zhí)行過程見相對尋址(二)。在MCS-51的指令系統(tǒng)中,相對轉(zhuǎn)移指令多為2字節(jié)指令,因此目的地址一般是PC+2+rel;如果是3字節(jié)指令,目的地址是PC+3+rel。偏移量rel是一個(gè)8位帶符號數(shù),因此程序轉(zhuǎn)移的范圍在PC當(dāng)前值的+127—-128之間。826、相對尋址(二)60HPC操作碼程序存儲器PC0102HALU30HXX0100HPC+10101HPC+20102HPC0123H偏移量0102H+30H=0132Hrel=30H0132H837、位尋址MCS-51系列單片機(jī)中有專用的位運(yùn)算指令,可以對位尋址區(qū)的每一個(gè)位進(jìn)行數(shù)據(jù)傳送、邏輯運(yùn)算等操作,如:MOVC,07H;C←(07H)該指令屬于位操作指令,作用是將位地址為70H的位單元(字節(jié)地址20H單元的D7位)傳送到位累加器C中。PC操作碼程序存儲器C20HA2H00PC+107HPSWX07SFRX84MCS-51指令集(包含5大類功能)1、數(shù)據(jù)傳送類指令:(29條)2、算術(shù)運(yùn)算類指令:(24條)3、邏輯運(yùn)算及移位類指令:(24條)4、控制轉(zhuǎn)移類指令:(17條)5、位操作指令:(17條)851、數(shù)據(jù)傳送類指令(一)片內(nèi)數(shù)據(jù)存儲器間傳送:(MOV—16條)片外數(shù)據(jù)存儲器送累加器:(MOVX—4條)程序存儲器送累加器:(MOVC—2條)數(shù)據(jù)交換:(XCH,XCHD,SWAP—5條)數(shù)據(jù)交換:(PUSH,POP—2條)861、數(shù)據(jù)傳送類指令(二)片內(nèi)數(shù)據(jù)存儲器間傳送:(MOV—16條)MOV類指令帶有兩個(gè)操作數(shù),前一個(gè)是目的地址,后一個(gè)是源操作數(shù)。作用是將源操作數(shù)送目的地址,如:MOVA,30H;A←(70H)
AccDirect直接尋址@Ri間接尋址Rn寄存器尋址#data立即數(shù)871、數(shù)據(jù)傳送類指令(三)片外數(shù)據(jù)存儲器數(shù)據(jù)送累加器:(MOVX—4條)MOVX類指令可以在累加器和@Ri或@DPTR(@Ri為8位地址;@DPTR為16位地址)所指向的外部數(shù)據(jù)存儲器間相互傳送數(shù)據(jù),具體指令有:MOVXA,@Ri;A←((Ri))MOVXA,@DPTR;A←((DPTR))MOVX@Ri,A;((Ri))←AMOVX@DPTR,A;((DPTR))←A
881、數(shù)據(jù)傳送類指令(四)程序存儲器數(shù)據(jù)送累加器:(MOVC—2條)MOVX類指令采用變址尋址方式進(jìn)行尋址。該類指令通常稱為查表指令,送入累加器Acc的數(shù)據(jù)是事先寫入的表格數(shù)據(jù),通常使用偽指令DB或DW預(yù)先定義在程序存儲器中,具體指令有:MOVCA,A+@DPTR;MOVXA,A+@PC;891、數(shù)據(jù)傳送類指令(五)數(shù)據(jù)交換指令:(5條)XCHA,direct(字節(jié)互換)XCHA,@Ri(字節(jié)互換)XCHA,Rn(字節(jié)互換)XCHDA,@Ri
累加器Acc的低4位與((Ri))的低4位互換,各自的高4位不變SWAPA
累加器Acc的高低4位互換901、數(shù)據(jù)傳送類指令(六)堆棧操作指令:(2條)PUSH壓棧指令POP彈棧指令
堆棧由特殊功能寄存器SP(堆棧指針)進(jìn)行管理
理論上堆棧在存儲器中可以放在任意位置,但為了不和工作寄存器沖突,一般將堆棧放在存儲器靠后的位置堆棧指針SP總是指向棧頂(自動(dòng)變化,見第二章相關(guān)內(nèi)容)PUSH和POP一般是成對使用的912、算術(shù)運(yùn)算類指令(一)加法運(yùn)算:
(ADD—4條)帶進(jìn)位加法運(yùn)算:(ADDC—4條)帶借位減法運(yùn)算:(SUBB—4條)加1/減1操作:
(INC,DEC—9條)單字節(jié)乘/除法運(yùn)算:
(MUL,DIV—2條)算術(shù)運(yùn)算類指令共有6種24條十進(jìn)制調(diào)整:
(DAA—1條)922、算術(shù)運(yùn)算類指令(二)加法運(yùn)算:
(ADD—4條)帶進(jìn)位加法運(yùn)算:(ADDC—4條)帶借位減法運(yùn)算:(SUBB—4條)所有的加法(ADD)、帶進(jìn)位加法(ADDC)、帶借位減法(SUBB)運(yùn)算都是以Acc為一個(gè)加數(shù)或被減數(shù),最終結(jié)果也存進(jìn)Acc
加法(ADD)、帶進(jìn)位加法(ADDC)以及帶借位減法(SUBB)運(yùn)算中,如果產(chǎn)生了進(jìn)位或借位,將自動(dòng)對PSW中的Cy標(biāo)志位置“1”帶進(jìn)位加法(ADDC):(A)←
(A)+(Cy)+(第二操作數(shù))帶借位減法(SUBB):(A)
←
(A)-
(Cy)-
(第二操作數(shù))932、算術(shù)運(yùn)算類指令(三)加1/減1操作:(INC,DEC—9條)INC,DEC與用加/減法指令做加1/減1操作不同之處在于INC、DEC不影響標(biāo)志位。單字節(jié)乘/除運(yùn)算:(MUL,DIV—2條)兩個(gè)單字節(jié)數(shù)的乘/除法運(yùn)算只在A與B之間進(jìn)行。MULAB:(A)與(B)相乘,積為16位數(shù),(A)←積的高8位;(B)←積的低8位DIVAB:(A)除以(B),結(jié)果用2字節(jié)表示,(A)←商的整數(shù)部分;(B)←余數(shù)942、算術(shù)運(yùn)算類指令(四)十進(jìn)制調(diào)整:(DAA—1條)用于兩個(gè)BCD碼之間的相加,這條指令只能跟在
ADD或ADDC之后BCD碼是指“用二進(jìn)制表達(dá)的十進(jìn)制數(shù)”。如:十進(jìn)制數(shù)20可以用二進(jìn)制數(shù)00010100B表示;也可以用十六進(jìn)制數(shù)14H表示;還可以用BCD碼00100000B或20H表示。4個(gè)二進(jìn)制位就可以表示一位BCD碼:0000~1001可表示十進(jìn)制數(shù)(BCD數(shù))0~9;8個(gè)二進(jìn)制位就可以表示兩位壓縮的BCD碼:00000000~10011001表示00~99。952、算術(shù)運(yùn)算類指令(五)DAA指令的執(zhí)行過程若(A)3~0>9或(AC)=1則(A)3~0
←(A)3~0+6;若(A)7~4>9或(CY)=1則(A)7~4
←(A)7~4+6;如:兩個(gè)十進(jìn)制數(shù)“65”與“58”相加,根據(jù)常識,顯然其和應(yīng)當(dāng)為“123”。MOVA,#65HADDA,#58HDAA結(jié)果:(A)=23H(Cy)=1
6501100101
5801011000
+)6601100110+)191800113200101963、邏輯運(yùn)算及移位類指令(一)該類指令共有5種24條邏輯與運(yùn)算:(ANL—6條)邏輯或運(yùn)算:(ORL—6條)邏輯異或運(yùn)算:(XRL—6條)累加器清零/取反:(CLR,CPL—2條)累加器移位操作:(RL,RLC,RR,RRC—4條)973、邏輯運(yùn)算及移位類指令(二)邏輯與(ANL),邏輯或(ORL),邏輯異或(XRL):指令形式ByteTmANL(ORL,XRL)direct,A21ANL(ORL,XRL)direct,#data32ANL(ORL,XRL)A,#data21ANL(ORL,XRL)A,direct21ANL(ORL,XRL)A,@Ri11ANL(ORL,XRL)A,Rn11累加器清零/取反操作(CLR,CPL—2條)CLRA—對累加器清零
1Byte1TmCPLA——對累加器按位取非
1Byte1Tm983、邏輯運(yùn)算及移位類指令(三)邏輯運(yùn)算指令在程序中的應(yīng)用(下面的例子認(rèn)為Acc的內(nèi)容為9AH)邏輯與ANL運(yùn)算用于對某些位進(jìn)行清0或者保留:例:ANLA,#0FH;則(A)=0AH邏輯或ORL運(yùn)算用于對某些位進(jìn)行置1或者保留:例:ORLA,#0FH;則(A)=9FH邏輯異或XRL運(yùn)算用于對某些位進(jìn)行取反或者保留:例:XRLA,#0FH;則(A)=95H(A)
10011010#0FH
00001111
95H
1001010199RRCA
帶進(jìn)位循環(huán)左移3、邏輯運(yùn)算及移位類指令(四)累加器移位操作:(RL,RLC,RR,RRC—4條)RLA
循環(huán)右移CyRRA
循環(huán)左移RLCA
帶進(jìn)位循環(huán)右移累加器Acc累加器Acc累加器Acc累加器AccCy1004、控制轉(zhuǎn)移類指令(一)控制轉(zhuǎn)移類指令用于對程序的執(zhí)行順序進(jìn)行控制(即改變PC指針的當(dāng)前值),該類指令共有4種17條無條件轉(zhuǎn)移:(LJMP,AJMP,SJMP,JMP—4條)條件轉(zhuǎn)移(判斷跳轉(zhuǎn)):(JZ,JNZ,CJNE,DJNZ—8條)子程序調(diào)用及返回:(LCALL,ACALL,RET,RETI—4條)空操作:(NOP—1條)“消耗”一個(gè)機(jī)器周期1014、控制轉(zhuǎn)移類指令(二)無條件轉(zhuǎn)移:(LJMP,AJMP,SJMP,JMP—4條)LJMPaddr16
長跳轉(zhuǎn)指令
——可在64K范圍內(nèi)跳轉(zhuǎn)AJMPaddr11絕對跳轉(zhuǎn)指令
——可在指令所在的2K范圍內(nèi)跳轉(zhuǎn)
SJMPrel相對跳轉(zhuǎn)指令
——可在當(dāng)前PC-128與+127范圍內(nèi)跳轉(zhuǎn)
JMP@A+DPTR間接長跳轉(zhuǎn)指令
——可在以DPTR為基址+A為偏移量
之和所指向的64K程序范圍內(nèi)跳轉(zhuǎn)1024、控制轉(zhuǎn)移類指令(三)條件轉(zhuǎn)移:(JZ,JNZ,CJNE,DJNZ—8條)JZrelJNZrel
——根據(jù)Acc的內(nèi)容是否為0決定是否跳轉(zhuǎn)
DJNZdirect,relDJNZRn,rel
——將direct(或Rn)里的內(nèi)容減1,結(jié)果不
等于0就跳轉(zhuǎn);等于0則不跳轉(zhuǎn)繼續(xù)執(zhí)行程序1034、控制轉(zhuǎn)移類指令(四)條件轉(zhuǎn)移:CJNEA,
#data,relCJNEA,
direct,
relCJNE@Ri,
#data,relCJNERn,
#data,rel
——將A(或@Ri,或Rn)與#data(或direct)相比
較,其值不相等就跳轉(zhuǎn);相等則不跳轉(zhuǎn),繼
續(xù)執(zhí)行程序1044、控制轉(zhuǎn)移類指令(五)子程序調(diào)用及返回:(LCALL,ACALL,RET,RETI—4條)LCALLaddr16子程序長調(diào)用指令——可在64K范圍內(nèi)調(diào)用子程序ACALLaddr11子程序絕對調(diào)用指令——可在指令所在的2K范圍內(nèi)調(diào)用子程序RET
子程序返回指令——子程序結(jié)束并返回調(diào)用的下一條指令RETI
中斷服務(wù)子程序返回指令——中斷結(jié)束/返回被打斷處的下一條指令1055、位操作指令(一)該類指令共有17條位傳送:
(MOV—2條)位清零/置位:
(CLR,SETB—4條)位邏輯與/或/非運(yùn)算:(ANL,ORL,CPL—6條)位條件轉(zhuǎn)移:
(JC,JNC,JB,JNB,JBC—5條)1065、位操作指令(二)位傳送指令(2條):
MOVC,bit
——(C)
(bit)
MOVbit,C
——(bit)
(C)
注:bit表示位地址位清零/置位指令(4條):
CLRbit(或C)——(bit或C)“0”
SETBbit(或C)——(bit或C)“1”
位邏輯與/或/非指令(6條):
ANLC,bit(或/bit)
ORLC,bit(或/bit)
CPLbit(或C)
注:“/bit”表示對bit位先取反然后再參加運(yùn)算1075、位操作指令(三)判位條件轉(zhuǎn)移指令(5條):JCrel——(Cy)=“1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)JNCrel——(Cy)≠“1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)JBbit,rel——(bit)=“1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)JNBbit,rel——(bit)≠“1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)JBCbit,rel——(bit)=“1”就先將其清零再跳轉(zhuǎn);否則不動(dòng)此位也不跳轉(zhuǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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年增資協(xié)議合同簽訂流程
- 2025年倉儲貨物出借協(xié)議
- 2025年圣誕節(jié)裝飾協(xié)議
- 2025年商業(yè)責(zé)任不足額保險(xiǎn)條款設(shè)定
- 二零二五版木屑生物質(zhì)顆粒燃料研發(fā)與推廣合同4篇
- 二零二五年度木工行業(yè)技術(shù)標(biāo)準(zhǔn)制定合作協(xié)議3篇
- 二零二五年度汽車抵押貸款購車二手車過戶合同
- 二零二五年度科技創(chuàng)業(yè)項(xiàng)目股權(quán)眾籌委托投資合同
- 二零二五年度車輛綠色出行補(bǔ)貼購買合同
- 二零二五年度經(jīng)典實(shí)習(xí)合同(法律事務(wù)實(shí)習(xí))
- 機(jī)電安裝工程安全培訓(xùn)
- 洗浴部前臺收銀員崗位職責(zé)
- 2024年輔警考試公基常識300題(附解析)
- GB/T 43650-2024野生動(dòng)物及其制品DNA物種鑒定技術(shù)規(guī)程
- 暴發(fā)性心肌炎查房
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動(dòng)自行車項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
評論
0/150
提交評論