單片機基礎(chǔ)_80C51_第1頁
單片機基礎(chǔ)_80C51_第2頁
單片機基礎(chǔ)_80C51_第3頁
單片機基礎(chǔ)_80C51_第4頁
單片機基礎(chǔ)_80C51_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Part 1 80C51 單片機單片機 80C5180C51單片機部分推薦教材單片機部分推薦教材單片機基礎(chǔ)單片機基礎(chǔ)( (修訂本修訂本/ /第第3 3版版),),李廣弟等編李廣弟等編, ,北京航空航天大學出版北京航空航天大學出版社社,2001/2007,2001/2007( (可在圖書館借閱到可在圖書館借閱到) ) 介紹其中的兩章介紹其中的兩章:Ch2 單片機芯片的硬件結(jié)構(gòu)單片機芯片的硬件結(jié)構(gòu)Ch5 單片機存儲器的擴展單片機存儲器的擴展Ch2 單片機芯片的硬件結(jié)構(gòu)單片機芯片的硬件結(jié)構(gòu)2.1 80C51單片機邏輯結(jié)構(gòu)及信號引腳單片機邏輯結(jié)構(gòu)及信號引腳2.1.1 80C51結(jié)構(gòu)框圖結(jié)構(gòu)框圖圖圖 2

2、.1 80C51單片機基本結(jié)構(gòu)框圖單片機基本結(jié)構(gòu)框圖內(nèi)部總線時鐘電路CPUINT0T1T0并行接口串行接口P0 P1 P2 P3TXD RXD中斷系統(tǒng)ROMRAM定時/計數(shù)器INT1 我們要從計算機五個基本組成部分的觀點來理解單片機的系統(tǒng)結(jié)構(gòu)。微型計算機的基本組成可概括為三個部分,即中央處理器中央處理器CPU (通常包括運算器和控制器)+存儲器存儲器+輸入輸入/輸出輸出 (I/O) 接口接口。若將組成計算機的基本部件集成在一塊芯片上,則俗稱為單片機單片機/MCU。 以80C51為例,單片機系統(tǒng)結(jié)構(gòu)框圖(或見教材圖2.1)。(1)一個8位微處理器CPU。(2)數(shù)據(jù)存儲器RAM和特殊功能寄存器SF

3、R(128B)。(3)內(nèi)部程序存儲器ROM(4KB)。(4)兩個定時/計數(shù)器T0和 T1 ,用以對外部事件進行計數(shù),也可用作定時器。(5)四個8位可編程的I/O(輸入/輸出)并行端口P0P3,每個端口既可做輸入,也可做輸出。(6)一個串行端口,用于數(shù)據(jù)的串行通信。(7)中斷控制系統(tǒng)。(8)內(nèi)部時鐘電路。2.1.2 80C51單片機的內(nèi)部結(jié)構(gòu)圖 2.2 80C51的內(nèi)部結(jié)構(gòu)框圖通道0驅(qū)動器通道2驅(qū)動器RAM地址鎖存器RAM通道0鎖存器通 道 2 鎖存器ROM/EPROMB寄存器程序地址寄存器緩沖器PC遞增器程序計數(shù)器PCDPTR指針VCCGNDP1.0P1.7堆棧指針SPACCTMP2PSW通道

4、3鎖存器通道1鎖存器通道1驅(qū)動器通道3驅(qū)動器TMP1SCON TMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中斷、串行口和定時器邏輯振蕩器P3.0P3.7RST EAALEPSENXTAL2XTAL1ALU(+5V)指令寄存器定時和控制邏輯指令譯碼器P0.0P0.7P2.0P2.7 80C51單片機的內(nèi)部結(jié)構(gòu)框圖如圖 2.2 所示(或見教材P12), 主要包括中央處理器CPU (算術(shù)邏輯部件 ALU、控制器等) 、只讀存儲器 ROM、 隨機存取存儲器RAM、定時器定時器/計數(shù)器計數(shù)器、并行并行 I/O口口 P0P3、串行口串行口、中斷系統(tǒng)中斷系統(tǒng)以及定時控制邏輯

5、定時控制邏輯電路等。 這些部件通過內(nèi)部總線連接起來,基本結(jié)構(gòu)仍然是通用CPU加上外圍芯片的結(jié)構(gòu)模式,但功能單元上的控制與先前相比有重大變化,采用了特殊功能寄存器(SFR:Special Function Registers) 進行集中控制集中控制的方法。1.中央處理器中央處理器 單片機中的中央處理器(CPU)是單片機的核心,主要完成運算和控制功能,又增設(shè)了“面向控制”的處理功能,增強了實時性。 按其功能,中央處理器包括運算器和控制器兩部分電路。(1)運算器電路)運算器電路 運算電路是單片機的運算部件,用于實現(xiàn)算術(shù)和邏輯運算。 運算器電路包括:ALU(Arithmetic Logic Unit)

6、、ACC(累加器)、B寄存器、程序狀態(tài)字PSW(Program Status Word)、TEMP1和TEMP2兩個暫存器等。 運算電路以ALU為核心,基本的算術(shù)和邏輯運算均在其中進行,運算和操作的狀態(tài)由PSW狀態(tài)寄存器保存。(2)控制器電路)控制器電路 控制電路是單片機的指揮控制部件,保證單片機各部分能自動而協(xié)調(diào)地工作。 控制器電路包括:PC(Program Counter)、PC遞增器、指令寄存器、指令譯碼器、定時與控制邏輯等。 單片機執(zhí)行指令是在控制電路的控制下進行的。 執(zhí)行一條指令的大致過程:讀出指令-指令寄存器-指令譯碼器(譯碼)-定時與控制邏輯電路(由控制定時邏輯電路產(chǎn)生各種定時信

7、和控制信號,然后送往系統(tǒng)各部件去進行相應(yīng)的操作)。2. 程序存儲器程序存儲器 根據(jù)內(nèi)部是否帶有程序存儲器而形成三種型號:內(nèi)部沒有程序存儲器的稱80C31,內(nèi)部帶ROM的稱80C51,內(nèi)部以EPROM代替ROM的稱87C51。 目前單片機的程序存儲器有以下幾種結(jié)構(gòu)形式: 片內(nèi)只讀存儲器片內(nèi)只讀存儲器 片內(nèi)掩膜ROM的特點是程序必須在制作單片機時寫入。 片內(nèi)可編程的片內(nèi)可編程的ROM 可直接由用戶進行編程。 紫外線可擦除型ROMEPROM型單片機 (如87C51)。EPROM需用紫外線擦除,必須脫機固化,不能在線改寫。 電可擦除型ROMEEPROM,稱為Flash單片機 (如89C51)。EPRO

8、M和EEPROM都是可以多次擦除和編程的,或稱MTP的ROM(MTP:Multiple Time Programmable)。OTP的 ROM,僅允許用戶一次編程(OTP:Only Time Programmable)。 片外只讀存儲器片外只讀存儲器 利用單片機的并行擴展技術(shù)可以外擴片外只讀存儲器。3. 數(shù)據(jù)存儲器(數(shù)據(jù)存儲器(RAM) 在單片機中,用隨機存取存儲器(RAM)來存儲程序在運行期間的工作變量和數(shù)據(jù),所以稱為數(shù)據(jù)存儲器。一般在單片機內(nèi)部設(shè)置一定容量(64B至384B)的RAM。這樣,小容量的數(shù)據(jù)存儲器以高速RAM的形式集成在單片機內(nèi),以加快單片機運行的速度,還可以使存儲器的功耗下降

9、很多。 在單片機中,常把寄存器(如工作寄存器、特殊功能寄存器、堆棧等)在邏輯上劃分在片內(nèi)RAM空間中,所以可將單片機內(nèi)部RAM看成是寄存器堆,有利于提高運行速度。 當內(nèi)部RAM容量不夠時,還可通過串行總線或并行總線外擴數(shù)據(jù)存儲器。 4. 并行并行I/O口口 單片機往往提供了許多功能強、使用靈活的并行輸入/輸出引腳,用于檢測與控制。有些I/O引腳還具有多種功能,比如可以作為數(shù)據(jù)總線的數(shù)據(jù)線、地址總線的地址線、控制總線的控制線等。單片機I/O引腳的驅(qū)動能力也逐漸增大,甚至可以直接驅(qū)動外擴的LED顯示器。 80C51有四個有四個8位的位的I/O口(口(P0、P1、P2、P3) ,以實,以實現(xiàn)數(shù)據(jù)的并

10、行輸入輸出?,F(xiàn)數(shù)據(jù)的并行輸入輸出。5. 串行串行I/O口口 目前高檔8位單片機均設(shè)置了全雙工串行全雙工串行I/O口口,用以實現(xiàn)與某些終端設(shè)備進行串行通信,或者和一些特殊功能的器件相連接的能力,甚至用多個單片機相連構(gòu)成多機系統(tǒng)。隨著應(yīng)用的拓寬,有些型號的單片機內(nèi)部還包含有二個串行I/O口。 6. 定時器定時器/計數(shù)器計數(shù)器 在單片機的實際應(yīng)用中,往往需要精確的定時,或者需對外部事件進行計數(shù)。為了減少軟件開銷和提高單片機的實時控制能力,因而均在單片機內(nèi)部設(shè)置定時器/計數(shù)器電路。80C51共有二個共有二個16位的定時器位的定時器/計數(shù)器計數(shù)器,80C52則有有三個三個16位的定時器位的定時器/計數(shù)器

11、。計數(shù)器。 7. 中斷系統(tǒng)中斷系統(tǒng) 80C51單片機的中斷功能較強,具有內(nèi)、外共五個中斷源,即外中斷兩個,定時/計數(shù)中斷2個,串行中斷1個。全部中斷分為高級和低級二個中斷優(yōu)先級。 8定時電路及元件定時電路及元件 計算機的整個工作是在時鐘信號的驅(qū)動下,按照嚴格的時序有規(guī)律地一個節(jié)拍一個節(jié)拍地執(zhí)行各種操作。單片機內(nèi)部設(shè)計有定時電路,只需外接振蕩元件即可工作。外接振蕩元件一般選用晶體振蕩器,或用價廉的RC振蕩器,也可用外部時鐘源,作為振蕩元件。近來有的單片機將振蕩元件也集成在芯片內(nèi)部。2.1.3 2.1.3 80C51單片機的信號引腳及其功能單片機的信號引腳及其功能 80C51有40引腳雙列直插(D

12、IP)、44引腳(PLCC)和44引腳(PQFP/TQFP)封裝形式。80C51/80C52的封裝及邏輯圖如圖2.3a所示(或見教材P15圖2.3)。 在某些場合,不需通過并行總線擴展芯片,這時常采用20引腳雙列直插(DIP)甚至僅14引腳的單片機,如ATMEL公司的1051/2051/4051單片機等,或PHILIPS公司的P87LPC764單片機。它們的封裝及引腳見圖2.3b。圖圖2.3a 80C51/80C52的封裝及邏輯圖的封裝及邏輯圖 圖2.3b AT89C2051/P87LPC764的封裝及邏輯圖AT89C51 AT89C2051 4KB可編程Flash存儲器(可擦寫1000次)

13、2KB可編程Flash存儲器(可擦寫1000次) 三級程序存儲器保密 兩級程序存儲器保密 靜態(tài)工作頻率:0Hz-24MHz 靜態(tài)工作頻率:0Hz-24MHz 128字節(jié)內(nèi)部RAM 128字節(jié)內(nèi)部RAM 2個16位定時/計數(shù)器 2個16位定時/計數(shù)器 一個串行通訊口 一個串行通訊口 5個中斷源 5個中斷源32條I/O引線 15條I/O引線片內(nèi)時鐘振蕩器 片內(nèi)時鐘振蕩器 ,1個片內(nèi)模擬比較器(AIN0-同相輸入,AIN1-反相輸入) AT89C51和和AT89C2051主要性能主要性能表表 由于AT89C2051的IO線很少,導(dǎo)致它無法外加RAM和程序ROM,片內(nèi)Flash存儲器也少,但它的體積比

14、AT89C51小很多,在開發(fā)工作中可根據(jù)實際需要來選用。它們各有其特點,但其核心是一樣的。 按引腳的功能可分為三部分 : 1. 電源和晶振電源和晶振:Vcc運行和程序校驗時接電源正端。 Vss接地。 XTAL1片內(nèi)振蕩器的反相放大器輸入端 。XTAL2片內(nèi)振蕩器的反相放大器輸出端。 對于80C51,使用外部振蕩器外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。微調(diào)電容取30PF左右(見圖所示)。 圖80C51的振蕩器方式2. I/O:

15、 共4個口,32根I/O線。 P08位、漏極開路的雙向I/O口。 當使用片外存儲器(ROM及RAM)時,作低八位地址和數(shù)據(jù)總線分時復(fù)用。 P0口(作為總線時)能驅(qū)動 8個 LSTTL負載。P18位、準雙向I/O 口。 在編程/校驗期間,用做輸入低位字節(jié)地址。 P1口可以驅(qū)動 4個 LSTTL負載(Low-power Schottky TTL -低功耗肖特基TTL )。P28位、準雙向I/O口。 當使用片外存儲器(ROM及RAM)時,輸出高8位地址。在編程/校驗期間,接收高位字節(jié)地址。P2口可以驅(qū)動4個LSTTL負載。P38位、準雙向I/O口,具有內(nèi)部上拉電路。 P3提供了各種替代的第二功能。在

16、提供這些功能時,其輸出鎖存器應(yīng)由程序置 1。P3口可以輸入/輸出4個LSTTL負載。 P3口第二功能(實際使用時,總是按需要優(yōu)先選擇第二功能,剩下不用的才作口線使用),P3口第二功能見表2-1所示(或見教材P16)。 表 2-1 P3口的第二功能表I/O口第二功能注 釋P3.0RXD串行口數(shù)據(jù)接收端P3.1TXD串行口數(shù)據(jù)發(fā)送端P3.2/INT0外部中斷請求0P3.3/INT1外部中斷請求1P3.4T0定時/計數(shù)器0外部輸入P3.5T1定時/計數(shù)器1外部輸入P3.6/WR外部RAM寫信號P3.7/RD外部RAM讀信號3. 控制線:共控制線:共4根。根。RST(VPD:備用電源引入端,:備用電源

17、引入端,當電源發(fā)生故障,電源降到下限值時,備用電源經(jīng)此端向內(nèi)部RAM提供電壓,以保護內(nèi)部RAM中的數(shù)據(jù)不丟失)復(fù)位輸入信號,高電平有效。在振蕩器工作時,在RST上作用兩個機器周期以上的高電平,將器件復(fù)位。 /EA(Vpp:編程電壓:編程電壓,具體電壓值視芯片而定)具體電壓值視芯片而定)片外程序存儲器訪問允許信號,低電平有效。/EA=1,選擇片內(nèi)程序存儲器(80C51為4KB,80C52為8KB) ;/EA=0,則程序存儲器全部在片外而不管片內(nèi)是否有程序存儲器。 使用80C31時,必須接地,使用8751編程時,施加 21V的編程電壓。ALE(PROG:編程脈沖):編程脈沖)地址鎖存允許信號,輸出

18、。 在訪問片外存儲器或I/O時,用于鎖存低八位地址,以實現(xiàn)低八位地址與數(shù)據(jù)的隔離。即使不訪問外部存儲器,ALE端仍以固定的頻率輸出脈沖信號(此頻率是振蕩器頻率的1/6)。在訪問外部數(shù)據(jù)存儲器時,出現(xiàn)一個ALE脈沖。ALE可以驅(qū)動8個LS TTL負載。 對片內(nèi)程序存儲器編程時,該引腳用于輸入編程脈沖PROG 。 /PSEN片外程序存儲器讀選通信號,低電平有效。 在從片外程序存儲器取指期間,在每個機器周期中,當其有效時,程序存儲器的內(nèi)容被送上 P0口(數(shù)據(jù)總線)。 它可以驅(qū)動 8個LSTTL負載。2.1.4 80C51 CPU的結(jié)構(gòu)和特點的結(jié)構(gòu)和特點 中央處理器CPU是單片機內(nèi)部的核心部件,主要包

19、括控制器、運算器和工作寄存器及時序電路。一、中央控制器一、中央控制器 中央控制器是識別指令,并根據(jù)指令性質(zhì)控制計算機各組成部件進行工作的部件,與運算器一起構(gòu)成中央處理器。在80C51單片機中,控制器包括程序計數(shù)器PC、程序地址寄存器、指令寄存器IR、指令譯碼器ID、條件轉(zhuǎn)移邏輯電路及定時控制邏輯電路等。 其功能是控制指令的讀出控制指令的讀出(取指令取指令)、譯碼和執(zhí)行,對、譯碼和執(zhí)行,對指令的執(zhí)行過程進行定時控制,并根據(jù)執(zhí)行結(jié)果決定是否指令的執(zhí)行過程進行定時控制,并根據(jù)執(zhí)行結(jié)果決定是否分支轉(zhuǎn)移分支轉(zhuǎn)移。 1. 程序計數(shù)器程序計數(shù)器PC 程序計數(shù)器PC(Program Counter)是一個獨立

20、的計數(shù)器,不屬于內(nèi)部的特殊功能寄存器。PC中存放存放的是下一下一條條將要從程序存儲器中取出的指令的地址從程序存儲器中取出的指令的地址。 其基本基本的工作過程工作過程是:讀指令時,程序計數(shù)器讀指令時,程序計數(shù)器PC將將其中的數(shù)作為所取指令的地址輸出給程序存儲器,然后程其中的數(shù)作為所取指令的地址輸出給程序存儲器,然后程序存儲器按此地址輸出指令字節(jié),同時程序計數(shù)器序存儲器按此地址輸出指令字節(jié),同時程序計數(shù)器PC本本身自動加身自動加1,指向下一條指令地址。,指向下一條指令地址。 程序計數(shù)器程序計數(shù)器PC變化的軌跡決定程序的流程變化的軌跡決定程序的流程。 在執(zhí)行條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令時,程序計數(shù)器將被

21、置入轉(zhuǎn)移的目的地址,程序的流向發(fā)生變化。 在執(zhí)行調(diào)用指令或響應(yīng)中斷時,將子程序的入口地址或者中斷向量地址送入PC,程序流向發(fā)生變化。 2. 數(shù)據(jù)指針數(shù)據(jù)指針 DPTR DPTR是一個16位的特殊功能寄存器,主要功能是作為片外數(shù)據(jù)主要功能是作為片外數(shù)據(jù)存儲器或存儲器或I/OI/O尋址用的地址寄存器(間接尋址)尋址用的地址寄存器(間接尋址),故稱為數(shù)據(jù)存儲器存儲器地址地址指針。訪問片外數(shù)據(jù)存儲器或訪問片外數(shù)據(jù)存儲器或I/OI/O的指令的指令為: MOVX AMOVX A,DPTRDPTR ;讀 MOVX MOVX DPTRDPTR,A A ;寫 DPTR寄存器也可以作為訪問程序存儲器時的基址寄存器

22、也可以作為訪問程序存儲器時的基址寄存器。這時尋址程序存儲器中的表格、常數(shù)等單元,而不是尋址指令。 MOVC AMOVC A,A ADPTRDPTR JMP JMP A ADPTRDPTR DPTR寄存器既可以作為一個16位寄存器處理,也可以作為兩個8位寄存器處理,其高高8 8位位用DPH表示,低8位用DPL表示。3. 指令寄存器指令寄存器IR、指令譯碼器及定時控制邏輯、指令譯碼器及定時控制邏輯 指令寄存器IR是用來存放指令操作碼用來存放指令操作碼的專用寄存器。執(zhí)行程序時,首先進行程序存儲器的讀操作,也就是根據(jù)程序計數(shù)器給出的地址從程序存儲器中取出指令,送指令寄存器IR,IR的輸出送指令譯碼器;

23、然后由指令譯碼器對該指令進行譯碼,譯碼結(jié)果送定時控制邏輯電路,如圖2.3c所示。 定時控制邏輯電路則根據(jù)指令的性質(zhì)發(fā)出一系列定時控制信號,控制計算機的各組成部件進行相應(yīng)的工作,執(zhí)行指令。 條件轉(zhuǎn)移邏輯電路主要用來控制程序的分支轉(zhuǎn)移。在80C51中,轉(zhuǎn)移條件也可分為兩部分,一部分是內(nèi)部條件,即程序狀態(tài)標志位(PSW)和累加器的零狀態(tài);另一部分是外部條件,即F0和所有位尋址空間的狀態(tài)。圖圖2.3c 指令寄存器和指令譯碼器指令寄存器和指令譯碼器RSTRST二、運算器運算器 運算器運算器主要用來實現(xiàn)對操作數(shù)的算術(shù)邏輯運算和位操主要用來實現(xiàn)對操作數(shù)的算術(shù)邏輯運算和位操作作的。如對傳送到CPU的數(shù)據(jù)進行加

24、、減、乘、除、比較、BCD碼校正等算術(shù)運算;“與”、“或”、“異或”等邏輯操作;移位、置位、清零、取反、加1、減1等操作。 80C51的ALU還具有極強的位處理功能,如位置1、位清零、位“與”、位“或”等操作,對“面向控制”特別有用。 運算器由8位算術(shù)邏輯運算單元ALU(Arithmetic Logic Unit)、8位累加器ACC(Accumulator)、8位寄存器B、程序狀態(tài)字寄存器PSW(Program Status Word)、8位暫存寄存器TMP1和TMP2等組成。1. 算術(shù)邏輯運算單元 ALU ALU結(jié)構(gòu)參見圖2.3d。 ALU有兩個輸入有兩個輸入: 通過暫存器暫存器1的輸入:輸

25、入數(shù)據(jù)來自寄存器、直接尋址單元(含I/O口)、內(nèi)部RAM、寄存器B或是立即數(shù)。 通過暫存器暫存器 2或累加器累加器 ACC的輸入:通過暫存器 2的運算的指令有 ANL direct, data、ORL direct,data、XRL direct,data。 其它的運算,其輸入之一大多數(shù)也要通過累加器ACC。 ALU有兩個輸出有兩個輸出: 數(shù)據(jù)經(jīng)過運算后,其結(jié)果又通過內(nèi)部總線送回到累加器中; 數(shù)據(jù)運算后產(chǎn)生的標志位輸出至程序狀態(tài)字 PSW。圖圖2.3d 算術(shù)邏輯運算單元算術(shù)邏輯運算單元ALU2. 累加器累加器A 累加器A是CPU中使用最頻繁的一個八位專用寄存器,簡稱簡稱ACC或或A寄存器寄存器

26、。主要功能:累加器主要功能:累加器A存放操作數(shù),是存放操作數(shù),是ALU單元的輸入之單元的輸入之一,也是一,也是ALU運算結(jié)果的暫存單元。運算結(jié)果的暫存單元。 由于累加器的“ 瓶頸”作用制約著單片機運算速度的提高,人們又推出寄存器陣列來代替累加器,賦予更多寄存器以累加器功能,形成了多累加器結(jié)構(gòu),比如Intel公司的MCS-96系列中的8098十六位單片機。3B寄存器寄存器 B寄存器在乘法和除法指令中作為寄存器在乘法和除法指令中作為ALU的輸入之一。的輸入之一。 乘法乘法中,ALU的兩個輸入分別為A、B,運算結(jié)果存放在AB寄存器對中,A A中放積的低中放積的低8 8位位,B B中放積的高中放積的高

27、8 8位位。 除法除法中,被除數(shù)取自被除數(shù)取自A A,除數(shù)取自除數(shù)取自B B,商數(shù)存放于商數(shù)存放于A A,余數(shù)存放于余數(shù)存放于B B。 在其它情況下,B寄存器可以作為內(nèi)部RAM中的一個單元來使用。 4. 程序狀態(tài)字程序狀態(tài)字PSW 程序狀態(tài)字PSW(Program Status Word)是一個逐位定義的8位寄存器,其內(nèi)容的主要部分是算術(shù)邏輯運算單內(nèi)容的主要部分是算術(shù)邏輯運算單元(元(ALU)的輸出)的輸出。其中有些位有些位是根據(jù)指令執(zhí)行結(jié)果,由硬件自動生成由硬件自動生成,而有些位有些位狀態(tài)可用軟件方法設(shè)定用軟件方法設(shè)定。 一些條件轉(zhuǎn)移指令就是根據(jù)PSW中的相關(guān)標志位的狀態(tài),來實現(xiàn)程序的條件轉(zhuǎn)

28、移。它是一個程序可訪問的寄是一個程序可訪問的寄存器,而且可以按位訪問存器,而且可以按位訪問。 其中,除PSW.1(保留位)、RS1和RS0(工作寄存器組選擇控制位)及用戶標志F0之外,其他四位:奇偶校驗位P、溢出標志位OV、輔助進位標志位AC及進位標志位CY都是ALU運算結(jié)果的直接輸出。CYAC F0 RS1RS0OVP.P (PSW0) 奇偶標志奇偶標志位位 每個指令周期都由硬件來置位或清除。每個指令周期都由硬件來置位或清除。 用以表示累加器A中值為1的個數(shù)的奇偶性:若累加器值為1的位數(shù)是奇數(shù),P置位(奇校驗);否則P清除(偶校驗) 。 在串行通信中,常以傳送奇偶校驗位來檢驗傳輸數(shù)據(jù)的可靠性

29、。通常將P置入串行幀中的奇偶校驗位。 . OV (PSW2) 溢出標志溢出標志位位 當執(zhí)行運算指令時,由硬件置位或清除,以指示運算是否產(chǎn)生溢出,OV置位表示運算結(jié)果超出了目的寄存器A所能表示的帶符號數(shù)的范圍(一128127)。 若以若以Ci表示表示位位i向位向位il有進位有進位,則,則OV=C6 C7;當位6向位7有進位(借位)而位7不向CY進位(借位)時;或當位7向C進位(借位)而位6不向位7進位(借位)時OV標志置位,表示帶符號數(shù)運算時運算結(jié)果是錯誤的;否則,清除OV標志,運算結(jié)果正確。 對于MUL乘法,當A、B兩個乘數(shù)的積超過255時OV置位;否則,OV0。因此,若OV0時,只需從A寄存

30、器中取積;若OV1時,則需從B、A寄存器對中取積。 對于DIV除法,若除數(shù)為0時,OV=1;否則,OV=0。 . RS1、RS0 (PSW.4、PSW.3) 工作寄存器組選擇工作寄存器組選擇位位 用于設(shè)定當前工作寄存器的組號。工作寄存器共有四組,其對應(yīng)關(guān)系見表表2.1b. AC (PSW6) 輔助進位標志輔助進位標志位位 當進行加法或減法運算時,若低4位向高4位數(shù)發(fā)生進位或借位時AC將被硬件置位;否則,被清除。 在十進制調(diào)整指令DA中要用到AC標志位狀態(tài)。表表21b 工作寄存器組工作寄存器組RS1RS0組號組號寄存器寄存器R0R7地址地址000組組00H07H011組組08H0FH102組組1

31、0H17H113組組18H1FH. CY (PSW7) 進位標志進位標志位位 在進行算術(shù)運算時,可以被硬件置位或清除,以表示運算結(jié)果中高位是否有進位或借位。在布爾處理機中CY被認為是位累加器。. F0 (PSW5) 用戶標志用戶標志位位/軟件標志軟件標志位位 開機時該位為“0”。用戶可根據(jù)需要,通過位操作指令置“l(fā)”或者清“0”。2.2 存儲器結(jié)構(gòu)和地址空間存儲器結(jié)構(gòu)和地址空間 單片機的存儲器有兩種基本結(jié)構(gòu):一種是在通用微型計算機中廣泛采用的將程序和數(shù)據(jù)合用一個存儲器空間的結(jié)構(gòu),稱為普林斯頓(Princeton)體系結(jié)構(gòu)/馮.諾依曼結(jié)構(gòu);另一種是將程序存儲器和數(shù)據(jù)存儲器截然分開,分別尋址的結(jié)構(gòu)

32、,稱為哈佛(Harvard)體系結(jié)構(gòu)結(jié)構(gòu)。Intel的MCS51和80C51系列單片機采用哈佛結(jié)構(gòu)。圖2.4為80C51單片機存儲器映象圖。物理上有物理上有4個存儲器空間個存儲器空間 程序存儲器程序存儲器: 片內(nèi)程序存儲器 片外程序存儲器 數(shù)據(jù)存儲器數(shù)據(jù)存儲器: 片內(nèi)數(shù)據(jù)存儲器 片外數(shù)據(jù)存儲器80C51單片機存儲器映象圖單片機存儲器映象圖FFFFH1000H外部ROM0FFFH0000H內(nèi)部ROMEA = 1外部ROMEA = 0工作寄存器03組位尋址區(qū)RAMSFR00H20H30H80HFFH外部RAM0000HFFFFH . 邏輯上有邏輯上有3個存儲器地址空間個存儲器地址空間 片內(nèi)、片外統(tǒng)

33、一的 64 KB程序存儲器地址空間; 片內(nèi)256B(80C52為384B)數(shù)據(jù)存儲器地址空間; 片外64 KB的數(shù)據(jù)存儲器地址空間。 在訪問這3個不同的邏輯空間時,應(yīng)選用不同形式的指令(分別用MOVC、MOV、MOVX指令來區(qū)分三個不同的邏輯空間)。 片內(nèi)數(shù)據(jù)存儲器空間,在物理上又包含兩部分: 對于80C51型單片機,從0127B字節(jié)單元為片內(nèi)數(shù)據(jù)存儲器空間;從128256B字節(jié)單元為特殊功能寄存器(SFR)空間(僅占用21個字節(jié))。 對于 80C52型單片機,從0128 B字節(jié)單元為片內(nèi)數(shù)據(jù)存儲器空間;從128256B共128個字節(jié)單元是數(shù)據(jù)存儲器和特殊功能寄存器地址重疊空間。80C51有三

34、種基本的尋址空間有三種基本的尋址空間: 64 KB的片內(nèi)、外程序存儲器尋址空間; 64 KB的片外數(shù)據(jù)存儲器尋址空間; 256B(或384B)的片內(nèi)數(shù)據(jù)存儲器尋址空間,其中包括特殊功能寄存器尋址空間。2.2.l 程序存儲器程序存儲器 80C51單片機的程序存儲器(program memory)用于存放經(jīng)調(diào)試正確的應(yīng)用程序和表格之類的固定常數(shù)。由于采用16位的程序計數(shù)器 PC和16位的地址總線,因而其可直接擴展的地址空間為64 KB。 整個程序存儲器可以分為片內(nèi)和片外兩部分整個程序存儲器可以分為片內(nèi)和片外兩部分 CPU訪問片內(nèi)和片外存儲器,可由/EA引腳所接的電平來確定: /EA引腳接引腳接高電

35、平高電平時,時,程序從片內(nèi)程序存儲器0000H開始執(zhí)行,即訪問片內(nèi)存儲器;當;當PC值超出片內(nèi)值超出片內(nèi)ROM容容量時,會自動轉(zhuǎn)向片外程序存儲器空間執(zhí)行。量時,會自動轉(zhuǎn)向片外程序存儲器空間執(zhí)行。 /EA引腳接低電平時,迫使系統(tǒng)全部執(zhí)行片外程序片外程序存儲器存儲器0000H開始存放的程序。 對于片內(nèi)無ROM的80C31/80C32單片機,應(yīng)將/EA引腳固定接低電平,以迫使系統(tǒng)全部執(zhí)行片外程序存儲器程序。 程序存儲器的某些單元被保留用于特定的程序入口地程序存儲器的某些單元被保留用于特定的程序入口地址址 由于系統(tǒng)復(fù)位后的PC地址為0000H,故系統(tǒng)從0000H單元開始取指,執(zhí)行程序。從0003H00

36、2BH單元被保留用于6個中斷源的中斷服務(wù)程序的入口地址。以下以下7個特定地址被保留:個特定地址被保留: 復(fù)位 0000H0002H(3個單元) 外部中斷外部中斷0 0003H000AH(8個單元) 計時器計時器T0溢出溢出 000BH0012H (8個單元) 外部中斷外部中斷1 0013H001AH (8個單元) 計時器計時器T1溢出溢出 001BH0022H (8個單元) 串行口中斷串行口中斷 0023H002AH (8個單元) *計時器 T2/T2EX 002BH0032H (8個單元,80C52) 紅色字體部分為80C51五個中斷源地址,在程序設(shè)計時,通常在這些中斷入口處設(shè)置無條件轉(zhuǎn)移指

37、令,使之轉(zhuǎn)向?qū)?yīng)的中斷服務(wù)程序段處執(zhí)行。 片內(nèi)程序存儲器為只讀存儲器片內(nèi)程序存儲器為只讀存儲器ROM。 存儲器的類型有:掩膜ROM/OTP(一次性編程)ROM和MTP(多次編程)ROM(包括EPROM及E2PROM等)。 在87C51中為4 KB的可編程、可改寫的只讀存儲器是EPROM;在89C51中為4 KB的可編程、可改寫的只讀存儲器是EEPROM(Flash ROM);而80C31片內(nèi)沒有程序存儲器,使用時必須由片外進行擴展。 由于芯片內(nèi)集成技術(shù)的提高,片內(nèi)程序存儲器的容量做得越來越大,目前已達到 62KB。 由于80C51有4KB片內(nèi)ROM,在程序小于4KB小型應(yīng)用系統(tǒng)中,一般就沒有必

38、要進行片外程序存儲器的擴展了。2.2.2內(nèi)部數(shù)據(jù)存儲器內(nèi)部數(shù)據(jù)存儲器數(shù)據(jù)存儲器(data memory)由隨機存取存儲器RAM構(gòu)成,用來存放隨機數(shù)據(jù)。 在80C51中,數(shù)據(jù)存儲器又分片內(nèi)數(shù)據(jù)存儲器(internal data memory)和片外數(shù)據(jù)存儲器(external data memory)兩部分。片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器(IRAMIRAM)地址只有地址只有8 8位,因而最大位,因而最大尋址范圍為尋址范圍為256256個字節(jié)。個字節(jié)。在80C51中,設(shè)置有一個專門的數(shù)據(jù)存儲器的地址數(shù)據(jù)存儲器的地址指示器指示器數(shù)據(jù)指針DPTR,用于訪問片外數(shù)據(jù)存儲器(ERAMERAM)。數(shù)據(jù)指針DP

39、TR也是16位的寄存器,這樣,就使80C51具有64 KB的數(shù)據(jù)存儲器擴展能力。 片內(nèi)數(shù)據(jù)存儲器是最靈活的地址空間。它在物理上又分成兩個獨立的功能不同的區(qū)。 片內(nèi)數(shù)據(jù)RAM區(qū):對80C51,為地址空間的低128 B。 對80C52,為地址空間的0256B。 特殊功能寄存器SFR區(qū):對80C51,為地址空間的高 128 B。 對于80C52,高128B的RAM區(qū)和SFR區(qū)的地址空間是重疊的。究竟訪問哪一個區(qū)是通過不同的尋址方式來加以區(qū)別的,即訪問高128B RAM區(qū)時,選用間接尋址方式;訪問SFR區(qū),則應(yīng)選用直接尋址方式。 下圖為片內(nèi)數(shù)據(jù)存儲器的地址空間分布圖(或見教材P17圖2.4/P24圖2

40、.3)。 圖圖 片內(nèi)數(shù)據(jù)存儲器各部分地址空間分布圖片內(nèi)數(shù)據(jù)存儲器各部分地址空間分布圖 片內(nèi)數(shù)據(jù)片內(nèi)數(shù)據(jù)RAM區(qū)區(qū) 工作寄存器區(qū):這是一個用寄存器直接尋址的區(qū)域,指令的數(shù)量最多,均為單周期指令,執(zhí)行的速度最快。 從上圖中可知,其中片內(nèi)數(shù)據(jù) RAM區(qū)的 031(00H1FH),共 32個單元,是 4個通用工作寄存器組(見下表或教材P20/P25表所示),每個組包含8個8位寄存器,編號為 R0R7。 在某一時刻,只能選用一個寄存器組使用。其選擇是通過軟件對程序狀態(tài)字(PSW)中的RS0、RS1二位的設(shè)置來實現(xiàn)的。設(shè)置RS0、RS1時,可以對PSW字節(jié)尋址,也可以位尋址方式,間接或直接修改RS0、RS

41、1的內(nèi)容。通常采用后者較方便。RS1RS0組號組號寄存器寄存器R0R7地址地址000組組00H07H011組組08H0FH102組組10H17H113組組18H1FH表表 工作寄存器組工作寄存器組 例如,若RS1、RS0均為0,則選用工作寄存器0組為當前工作寄存器?,F(xiàn)需選用工作寄存器組1則只需將RS0改成 l,可用位尋址方式(SETB PSW3,PSW3為RS0位的符號地址)來實現(xiàn)。 累加器ACC、B、DPTR及CY(布爾處理器的累加器)一般也作為寄存器對待。 寄存器R0、R1 通常用做間接尋址時的地址指針。 i.位尋址區(qū)位尋址區(qū) 從片內(nèi)片內(nèi)數(shù)據(jù)RAM區(qū)的3247(20H2FH)的的16個字節(jié)

42、個字節(jié)單元,共包含單元,共包含128位,是位,是可位尋址的RAM區(qū)。這這16個字節(jié)個字節(jié)單元,既可進行字節(jié)尋址,又可位尋址。單元,既可進行字節(jié)尋址,又可位尋址。字節(jié)地址與位地址之間的關(guān)系見下表所示(或教材P18表2-2)。字節(jié)地址位 地 址 2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20HD7D6D5D4D3D2D1D07FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH5

43、9H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H 表2-2 80C51內(nèi)部RAM位地址區(qū) 這16個位尋址單元,

44、再加上可位尋址的特殊功能寄存器一起構(gòu)成了布爾(位)處理器的數(shù)據(jù)存儲器空間。在這一存儲器空間所有位都是可直接尋址的,即它們都具有位地址。 i i. 字節(jié)尋址區(qū)字節(jié)尋址區(qū) 從從片內(nèi)數(shù)據(jù)數(shù)據(jù)RAM區(qū)的48127(30H7FH),共,共80個字節(jié)單元,可以采用直接字節(jié)尋址的方法訪問。個字節(jié)單元,可以采用直接字節(jié)尋址的方法訪問。 對于 80C52,還有高 128 B的數(shù)據(jù) RAM區(qū)。這一區(qū)域只能采用間接字節(jié)尋址的方法訪問。 iii. 堆棧區(qū)及堆棧指示器堆棧區(qū)及堆棧指示器SP 堆棧是在片內(nèi)數(shù)據(jù)RAM區(qū)中,數(shù)據(jù)先進后出或后進先出的區(qū)域。堆棧指針/堆棧指示器SP(Stack Pointer)在80C51中存放

45、當前存放當前的堆棧棧頂所指存儲單元地址堆棧棧頂所指存儲單元地址的一個8位寄存器。 堆棧有二種形式,一是向上生成,二是向下生成。80C51單片機的堆棧的堆棧是向上生成向上生成的。向上生成型堆棧向上生成型堆棧:進棧操作進棧操作:先先SP+1,后寫入數(shù)據(jù)后寫入數(shù)據(jù);出棧操作出棧操作:先讀出數(shù)據(jù)先讀出數(shù)據(jù),后后SP+1。80C51的堆棧區(qū)域可用軟件設(shè)置堆棧指示器(SP)的值,在片內(nèi)數(shù)據(jù)RAM區(qū)中予以定義。 系統(tǒng)復(fù)位系統(tǒng)復(fù)位后SP內(nèi)容為07H。如不重新定義,則以如不重新定義,則以07H為棧底,壓棧的內(nèi)容從為棧底,壓棧的內(nèi)容從08H單元開始存放單元開始存放。通過軟件對軟件對SP的內(nèi)容重新設(shè)定,使堆棧區(qū)設(shè)定

46、在片內(nèi)數(shù)據(jù)的內(nèi)容重新設(shè)定,使堆棧區(qū)設(shè)定在片內(nèi)數(shù)據(jù)RAM區(qū)區(qū)(最好是片內(nèi)(最好是片內(nèi)RAM的的30H7FH單元中開辟)單元中開辟)中的某一區(qū)域內(nèi),堆棧深度不能超過片內(nèi)RAM空間。 堆棧是為子程序調(diào)用和中斷操作而設(shè)立的。其具體功能有兩個:保護斷點和保護現(xiàn)場。在80C51單片機中,堆棧在子程序調(diào)用和中斷時會把斷點地址自動進棧和出棧,還有對堆棧的進棧和出棧的指令(PUSH、POP)操作,用于保護現(xiàn)場和恢復(fù)現(xiàn)場。 由于子程序調(diào)用和中斷都允許嵌套,并可以多級嵌套,而現(xiàn)場的保護也往往使用堆棧,所以一定要注意給堆棧以一定的深度,以免造成堆棧內(nèi)容的破壞而引起程序執(zhí)行的” 跑飛”。 特殊功能寄存器特殊功能寄存器

47、SFR區(qū)區(qū) 特殊功能寄存器SFR(Special Function Registers)是80C51中各功能部件所對應(yīng)的寄存器,用以存放相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)的區(qū)域。 80C51設(shè)有128B片內(nèi)數(shù)據(jù)RAM結(jié)構(gòu)的特殊功能寄存器空間區(qū)。除程序計數(shù)器PC和4個通用工作寄存器組外,其余所有的寄存器都在這個地址空間之內(nèi)。 對于80C51共定義了21個特殊功能寄存器,其名稱和字節(jié)地址列于表23(見教材P21)中。在80C52中,除上述80C51的21個之外,還增加了5個特殊功能寄存器,共計26個。訪問其它地址無效。表表23 特殊功能寄存器名稱和地址特殊功能寄存器名稱和地址TMOD對于對于80C

48、51共定義了共定義了21個特殊功能寄存器,其名稱個特殊功能寄存器,其名稱和字節(jié)地址列于和字節(jié)地址列于表表23(教材教材P21表表2-3)中。在)中。在80C52中,中,除上述除上述80C51的的21個之外,還增加了個之外,還增加了5個特殊功能寄存器,個特殊功能寄存器,共計共計26個。訪問其它地址無效。個。訪問其它地址無效。在在80C51的的21個個(80C52的的26個)個)特殊功能寄存器特殊功能寄存器中,字節(jié)地址中低位地址為中,字節(jié)地址中低位地址為0H或或8H的特殊功能寄存器的特殊功能寄存器(80C51有有11個個,80C52還增加了還增加了T2CON),除有字節(jié)尋址,除有字節(jié)尋址能力外,還

49、有位尋址能力。能力外,還有位尋址能力。這些特殊功能寄存器與位地址這些特殊功能寄存器與位地址的對應(yīng)關(guān)系見的對應(yīng)關(guān)系見表表24 (教材教材P22表表2-4) 。*工作寄存器區(qū)后的16字節(jié)單元,即20H2FH,可以位尋址方式訪問其各位,這128個位的地址為00H7FH。低128字節(jié)RAM單元地址范圍也是00H7FH,8051采用不同尋址方式加以區(qū)分,即訪問128個位地址用位尋址方式。訪問低128字節(jié)單元用直接尋址或間接尋址,這樣就可以區(qū)分開00H7FH是位地址還是字節(jié)地址表表24 特殊功能寄存器特殊功能寄存器(SFR)的位地址的位地址2.2.3 片外數(shù)據(jù)存儲區(qū)片外數(shù)據(jù)存儲區(qū) 片外數(shù)據(jù)存儲器片外數(shù)據(jù)存

50、儲器是在外部存放數(shù)據(jù)的區(qū)域,這一區(qū)域只能用寄存器間接尋址的方法訪問訪問,所用的寄存器為DPTR、R1或R0。指令助記符為MOVX。 當用R0、R1尋址時,由于R0、R1為8位寄存器,因此最大尋址范圍為256B;當用DPTR尋址時,由于DPTR為16位寄存器位寄存器,因此最大尋址范圍為64KB。2.3并行輸入并行輸入/輸出端口輸出端口 80C51單片機有4個雙向并行的8位I/O口P0P3,P0口為三態(tài)雙向口雙向口,可驅(qū)動8個LSTTL電路,P1、P2、P3口為準雙向口準雙向口(作為輸入時,要把口線拉成高電平,故稱作為輸入時,要把口線拉成高電平,故稱為準雙向口為準雙向口),其負載能力為4個LSTT

51、L電路。由于它們在結(jié)構(gòu)上的一些差異,故各口的性質(zhì)和功能也就存在一定的差異。2.3.1 P0口P0口是一個多功能的8位口,可以字節(jié)訪問也可位訪問,其字節(jié)訪問地址為字節(jié)訪問地址為80H,位訪問地址為,位訪問地址為80H87H。 位結(jié)構(gòu)位結(jié)構(gòu) 在訪問外部存儲器時,P0口是一個真正的雙向數(shù)據(jù)總線口,并分時地送出地址的低8位和數(shù)據(jù)。 P0口位結(jié)構(gòu)原理圖見下圖(見教材P27圖2.7/P33圖2.5),它包括一個輸出鎖存器輸出鎖存器,兩個三態(tài)緩沖器兩個三態(tài)緩沖器,一個輸出驅(qū)一個輸出驅(qū)動電路動電路和一個輸出控制電路一個輸出控制電路。其中輸出驅(qū)動電路由一對FET(場效應(yīng)管)組成,其輸出狀態(tài)受輸出控制電路的控制。

52、 圖 P0口位結(jié)構(gòu)原理圖 MUX 1、OUTPUT: 做做I/O端口使用:端口使用: 2、INPUT:讀引腳和讀鎖存器兩種情況 做做I/O端口使用:端口使用: 2、INPUT:讀引腳和讀鎖存器兩種情況 做做I/O端口使用:端口使用:l在輸入狀態(tài)下,從鎖存器和從引腳上讀來的信號一般是一致的,但也有例外。l例如,當從內(nèi)部總線輸出低電平后,鎖存器Q0,Q非1,場效應(yīng)管T2開通,端口線呈低電平狀態(tài)。此時無論端口線上外接的信號是低電乎還是高電平,從引腳讀入單片機的信號都是低電平,因而不能正確地讀入端口引腳上的信號。l又如,當從內(nèi)部總線輸出高電平后,鎖存器Q1,Q非0,場效應(yīng)管T2截止。如外接引腳信號為低

53、電平,從引腳上讀入的信號就與從鎖存器讀入的信號不同。l為此,8051單片機在對端口P0一P3的輸入操作上,有如下約定:凡屬于讀-修改-寫方式的指令,從鎖存器讀入信號,其它指令則從端口引腳線上讀入信號l這類操作的特點是特點是:先讀口鎖存器,隨之可對讀入的數(shù)先讀口鎖存器,隨之可對讀入的數(shù)據(jù)進行修改,然后再寫到端口上。據(jù)進行修改,然后再寫到端口上。l如執(zhí)行指令ORL P0,#xH(P0=P0|x)時,則先把P0鎖存器的內(nèi)容讀入CPU,然后與變量x按位進行邏輯或運算,最后把或的結(jié)果送回P0口。l能使單片機產(chǎn)生這種讀修改寫操作的指令,其目的操作數(shù)一般為某I/O口或口的某一位,這些指令是:位與(&

54、)、位或(|)、取反()、增1、減1等。l例如:lANL P0,#立即數(shù) lINC P1 lDEC P3 l CPL P2 作為地址作為地址/數(shù)據(jù)復(fù)用口使用:數(shù)據(jù)復(fù)用口使用:l 在訪問外部存儲器時P0口作為地址/數(shù)據(jù)復(fù)用口使用l在輸出“地址/數(shù)據(jù)”信息時,V1、V2管是交替導(dǎo)通的,負載能力很強,可以直接與外設(shè)存儲器相連,無須增加總線驅(qū)動器l P0口又作為數(shù)據(jù)總線使用。在訪問外部程序存儲器時,P0口輸出低8位地址信息后,將變?yōu)閿?shù)據(jù)總線,以便讀指令碼(輸入)l當當P0作為地址作為地址/數(shù)據(jù)總線使用時,在讀指令碼或輸入數(shù)據(jù)總線使用時,在讀指令碼或輸入數(shù)據(jù)前,數(shù)據(jù)前,CPU自動向自動向P0口鎖存器寫入

55、口鎖存器寫入0FFH,破壞了,破壞了P0口原來的狀態(tài)。因此,不能再作為通用的口原來的狀態(tài)。因此,不能再作為通用的I/O端口。端口。大家以后在系統(tǒng)設(shè)計時務(wù)必注意,即程序中不能再含大家以后在系統(tǒng)設(shè)計時務(wù)必注意,即程序中不能再含有以有以P0口作為操作數(shù)(包含源操作數(shù)和目的操作數(shù))口作為操作數(shù)(包含源操作數(shù)和目的操作數(shù))的指令。的指令。2.3.2 P1口口 P1口是一個標準的準雙向口。1.位結(jié)構(gòu)和工作原理位結(jié)構(gòu)和工作原理P1口的位結(jié)構(gòu)如圖(或見教材P28圖2.8/P33圖2.6)所示。 包含輸出鎖存器、輸入緩沖器BUF1(讀引腳)、BUF2(讀鎖存器)以及由 FET場效應(yīng)管 Q0與上拉電阻組成的輸入輸

56、出驅(qū)動器。 P1口是一個口是一個8位口,可以字節(jié)訪問也可按位訪問,其字節(jié)位口,可以字節(jié)訪問也可按位訪問,其字節(jié)訪問地址為訪問地址為90H,位訪問地址為,位訪問地址為90H97H。圖圖 P1口位結(jié)構(gòu)原理圖口位結(jié)構(gòu)原理圖 P1口的特點口的特點輸出鎖存,輸出時沒有條件。輸入緩沖,輸入時有條件輸入時有條件;即當當P1口作為輸入口使用時,口作為輸入口使用時,即先將其鎖存器寫入即先將其鎖存器寫入1,使,使FET截止,然后才能輸入。截止,然后才能輸入。具有這種操作特點的輸入/輸出端口,稱為準雙向I/O口。8051單片機的P1、P2、P3都是準雙向口工作過程中無高阻狀態(tài),也就是該口不是輸入態(tài)就是輸出態(tài)。 單片

57、機復(fù)位后,各個端口已自動地被寫入了1,此時,可直接作輸入操作。如果在應(yīng)用端口的過程中,已向P1一P3端口線輸出過0,則再要輸入時,必須先寫1后再讀引腳,才能得到正確的信息。此外,隨輸入指令的不同,端口也有讀鎖存器與讀引腳之分。 P1口的操作口的操作 字節(jié)操作和位操作字節(jié)操作和位操作 CPU對于P1口不僅可以作為一個 8位口(字節(jié))來操作,也可以按位來操作。 有關(guān)字節(jié)操作字節(jié)操作的指令有: 輸出: MOV P1,A ;P1A MOV P1,#data ;P1#data MOV P1,direct ;P1direct 輸入: MOV A,P1 ;AP1 MOV direct,Pl ;directP

58、l有關(guān)位操作位操作的指令有:置位、清除:SETB P1.i ;P1.i1CLR Pl.i ;P1.i0 輸入輸入、輸出輸出:MOV P1.i, C ;P1.iCYMOV C,P1.i ;CYP1.i判跳判跳:JBP1.i, rel ;P1.i=1,跳轉(zhuǎn)JBC P1.i, rel ;P1.i1,跳 轉(zhuǎn)且P1.i0邏輯運算邏輯運算:ANL C, P1.i ;CY(P1.iCY)ORL C, P1.i ;CY(P1.iCY) P1.i中的i0, , 7 P1口不僅可以以8位一組進行輸入、輸出操作,還可以逐位分別定義各口線為輸入線或輸出線。例如:ORLP1,0 0 0 0 0 0 1 0 B可以使P1

59、l位口線輸出l,而使其余各位不變。 ANL P1,1 1 1 1 1 1 0 1 B可以使P11位線輸出0,而使其余各位不變。 讀引腳操作和讀鎖存器操作讀引腳操作和讀鎖存器操作 在在響應(yīng)CPU輸出的讀引腳讀引腳信號時,端口本身引腳的電平信號時,端口本身引腳的電平值通過緩沖器值通過緩沖器BUF1進入內(nèi)部總線。這種類型的指令,執(zhí)進入內(nèi)部總線。這種類型的指令,執(zhí)行之前必須先將端口鎖存器置行之前必須先將端口鎖存器置1,使,使A點處于高電平,否點處于高電平,否則會損壞引腳,而且也使信號無法讀出。則會損壞引腳,而且也使信號無法讀出。 這種類型的指令有: MOV A,P1 ;AP1 MOVdirect,P1

60、 ;directP1在執(zhí)行讀鎖存器讀鎖存器的指令時,CPU首先完成將鎖存器的值通過緩沖器BUF2讀入內(nèi)部,進行修改,然后重新寫到鎖存器中去,這就是“讀讀一修改修改一寫寫”指令。 這種類型的指令包含所有口的邏輯操作(ANL、ORL、XRL)和位操作(JBC、CPL、MOV、SETB、CLR等)指令。 P1口的多功能線口的多功能線 在80C52中,P1.0和P1.1口線是多功能的,即除作一般雙向I/O口線之外,這兩根口線還具有下列功能: P1.0定時器/計數(shù)器2的外部輸入端T2; P1.1定時器/計數(shù)器2的外部控制端T2EX。2.3.3 P22.3.3 P2口口 P2口是準雙向口。 P2口口是一個多功能的

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論