第2章 硬件結(jié)構(gòu)_第1頁
第2章 硬件結(jié)構(gòu)_第2頁
第2章 硬件結(jié)構(gòu)_第3頁
第2章 硬件結(jié)構(gòu)_第4頁
第2章 硬件結(jié)構(gòu)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理與應(yīng)用

第2章:AT89S51單片機的硬件結(jié)構(gòu)單片機湖北經(jīng)濟學(xué)院電子工程系(綜合張毅剛、李全利教材資料制作)本章主要內(nèi)容

2.1AT89S51單片機的硬件組成

2.2AT89S51的引腳功能

2.3AT89S51的CPU2.4AT89S51存儲器的結(jié)構(gòu)

2.5AT89S51的并行I/O端口

2.6時鐘電路與時序

2.7復(fù)位操作和復(fù)位電路

2.8低功耗節(jié)電模式2.1AT89S51單片機的硬件組成2.1.1AT89S51單片機片內(nèi)結(jié)構(gòu)2.1.2AT89S51單片機功能部件和特性(1)8位微處理器(CPU);(2)數(shù)據(jù)存儲器(128BRAM);(3)程序存儲器(4KBFlashROM);(4)4個8位可編程并行I/O口(P0口、P1口、P2口和P3口);(5)1個全雙工的異步串行口;(6)2個可編程的16位定時器/計數(shù)器;(7)1個看門狗定時器;(8)中斷系統(tǒng)具有5個中斷源、5個中斷向量;(9)特殊功能寄存器(SFR)26個;(10)低功耗模式有空閑模式和掉電模式,且具有掉電模式下的中斷恢復(fù)模式;(11)程序存儲器具有三級加密保護(片內(nèi)的Flash存儲器有3個可編程的加密位,定義了3個加密級別)。AT89S51的優(yōu)點

(1)增加在線可編程功能ISP(InSystemProgram),字節(jié)和頁編程,現(xiàn)場程序調(diào)試和修改更加方便靈活;(2)數(shù)據(jù)指針增加到兩個,方便了對片外RAM的訪問過程;(3)增加了看門狗定時器,提高了系統(tǒng)的抗干擾能力;(4)增加斷電標(biāo)志;(5)增加掉電狀態(tài)下的中斷恢復(fù)模式。2023/2/56MCS-51單片機內(nèi)部結(jié)構(gòu)圖2023/2/572.2AT89S51的引腳功能引腳說明時鐘引腳

(1)XTAL1(19腳):片內(nèi)振蕩器反相放大器和時鐘發(fā)生器電路輸入端。用片內(nèi)振蕩器時,該腳接外部石英晶體和微調(diào)電容。外接時鐘源時,該腳接外部時鐘振蕩器的信號。(2)XTAL2(18腳):片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器,該腳連接外部石英晶體和微調(diào)電容。當(dāng)使用外部時鐘源時,本腳懸空??刂埔_(1)RST(RESET,9腳)復(fù)位信號輸入,在引腳加上持續(xù)時間大于2個機器周期的高電平,可使單片機復(fù)位。正常工作,此腳電平應(yīng)≤0.5V。當(dāng)看門狗定時器溢出輸出時,該腳將輸出長達96個時鐘振蕩周期的高電平。引腳說明(2)/VPP(EnableAddress/VoltagePulseofPrograming,31腳)

:引腳第一功能:外部程序存儲器訪問允許控制端。

=1,在PC值不超出0FFFH(即不超出片內(nèi)4KBFlash存儲器的地址范圍)時,單片機讀片內(nèi)程序存儲器(4KB)中的程序,但PC值超出0FFFH

(即超出片內(nèi)4KBFlash地址范圍)時,將自動轉(zhuǎn)向讀取片外60KB(1000H-FFFFH)程序存儲器空間中的程序。

=0,只讀取外部的程序存儲器中的內(nèi)容,讀取的地址范圍為0000H~FFFFH,片內(nèi)的4KBFlash程序存儲器不起作用。

VPP:引腳第二功能,對片內(nèi)Flash編程,接編程電壓。引腳說明

(3)ALE/(AddressLatchEnable/PROGramming,30腳)ALE為CPU訪問外部程序存儲器或外部數(shù)據(jù)存儲器提供地址鎖存信號,將低8位地址鎖存在片外的地址鎖存器中。單片機正常運行時,ALE端一直有正脈沖信號輸出,此頻率為時鐘振蕩器頻率fosc的1/6??捎米魍獠慷〞r或觸發(fā)信號。

:引腳第二功能,對片內(nèi)Flash編程,為編程脈沖輸入腳。2.3AT89S51的CPU

2.3.1運算器對操作數(shù)進行算術(shù)、邏輯和位操作運算。主要包括算術(shù)邏輯運算單元ALU、累加器A、位處理器、程序狀態(tài)字寄存器PSW及兩個暫存器等。1.算術(shù)邏輯運算單元ALU可對8位變量邏輯運算(與、或、異或、循環(huán)、求補和清零),還可算術(shù)運算(加、減、乘、除)ALU還有位操作功能,對位變量進行位處理,如置“1”、清“0”、求補、測試轉(zhuǎn)移及邏輯“與”、“或”等。2.累加器累加器是一個最常用的專用寄存器,其自身帶有全零標(biāo)志Z,若A=0則Z=1;若A≠0則Z=0。用途:該標(biāo)志常用作程序分支的判斷條件。3.程序狀態(tài)字寄存器(1)PSW:程序狀態(tài)字寄存器。定義格式如右上邊。其中,CY:進借位標(biāo)志;AC:輔助進借位標(biāo)志;F0:用戶標(biāo)志;RS1、RS0:工作寄存器組選擇位。D7D6D5D4D3D2D1D0CYACF0RS1RS0OVXPRS1RS0選擇工作寄存器組000組(00H~07H)011組(08H~0FH)102組(10H~17H)113組(18H~1FH)表:工作寄存器組選擇控制表(2)堆棧指針SP

指示堆棧頂部在內(nèi)部RAM塊中的位置。堆棧結(jié)構(gòu)--向上生長型。單片機復(fù)位后,SP為07H,使得堆棧實際上從08H單元開始。堆棧主要是為子程序調(diào)用和中斷操作而設(shè)。用于保護斷點和現(xiàn)場。兩種操作:數(shù)據(jù)壓入(PUSH)堆棧,數(shù)據(jù)彈出(POP)堆棧。數(shù)據(jù)壓入堆棧,SP自動加1;數(shù)據(jù)彈出堆棧,SP自動減1。

(3)寄存器B為執(zhí)行乘法和除法而設(shè)。在不執(zhí)行乘、除法操作的情況下,可把它當(dāng)作一個普通寄存器來使用。乘法:兩乘數(shù)分別在A、B中,執(zhí)行乘法指令后,乘積在BA中除法:被除數(shù)取自A,除數(shù)取自B,商存放在A中,余數(shù)存B中。2.3.2控制器任務(wù):識別指令,并根據(jù)指令的性質(zhì)控制單片機各功能部件,從而保證單片機各部分能自動協(xié)調(diào)地工作??刂破靼ǎ撼绦蛴嫈?shù)器、指令寄存器、指令譯碼器、定時及控制邏輯電路等。功能:控制指令的讀入、譯碼和執(zhí)行,從而對各功能部件進行定時和邏輯控制。程序計數(shù)器PC:是一個獨立的16位計數(shù)器,不可訪問。單片機復(fù)位時,PC中內(nèi)容為0000H,從程序存儲器0000H單元取指令,開始執(zhí)行程序。PC工作過程是:CPU讀指令時,PC的內(nèi)容作為所取指令的地址,程序存儲器按此地址輸出指令字節(jié),同時PC自動加1。2.4AT89S51存儲器的結(jié)構(gòu)存儲器的結(jié)構(gòu)特點之一:將程序存儲器和數(shù)據(jù)存儲器分開(哈佛結(jié)構(gòu)),并有各自的訪問指令。存儲器空間可分為:4類。程序存儲器數(shù)據(jù)存儲器特殊功能寄存器位地址空間dz片外ROMEA=0片外ROMEA=0片內(nèi)ROMEA=1片外ROM0000HFFFFH0000H0FFFH1000HFFFFH片外ROMEA=0片內(nèi)ROMEA=1片外ROM0000H1FFFH2000HFFFFH(a)片內(nèi)無ROM(b)片內(nèi)有4KROM(c)片內(nèi)有8KROM1.程序存儲器中斷源入口地址外部中斷00003H定時/計數(shù)器0000BH外部中斷10013H定時/計數(shù)器1001BH串行口0023H定時/計數(shù)器2(僅52子系列有)002BH程序存儲器的0000H單元地址是系統(tǒng)程序的啟動地址。

6個中斷源的地址之間僅隔8個單元,存放中斷服務(wù)程序往往不夠用,這是通常放一條絕對轉(zhuǎn)移指令,轉(zhuǎn)到真正的中斷服務(wù)程序,真正的中斷服務(wù)程序放到后面。程序存儲器的7個特殊地址2023/2/5222.特殊功能寄存器、數(shù)據(jù)存儲器及位尋址區(qū)數(shù)據(jù)存儲器的說明數(shù)據(jù)存儲器RAM主要用來存放運算的中間結(jié)果和數(shù)據(jù)等。其存儲空間分布如下:片外RAM最多可擴至64KB存儲單元,地址范圍為0000H~FFFFH。片內(nèi)RAM為256B存儲單元,地址范圍為00H~FFH。片內(nèi)RAM地址空間共有256B,又分為兩個部分:低128B(00H~7FH)為真正的RAM區(qū)。高128B(80H~FFH)為特殊功能寄存器(SFR)區(qū)。問題:在52子系列中,高128字節(jié)RAM和SFR的地址是重疊的,如何區(qū)分呢?究竟訪問哪一塊可通過不同的尋址方式加以區(qū)分:訪問高128字節(jié)RAM采用寄存器間址訪問SFR則只能采用直接尋址訪問低128字節(jié)RAM時,兩種尋址均可采用。問題討論1.工作寄存器組區(qū)00H—1FH單元為工作寄存器組區(qū):共32個字節(jié)。工作寄存器也稱為通用寄存器,用于臨時寄存8位信息。工作寄存器共有4組,稱為0組、1組、2組和3組,每組8個,分別依次用R0~R7表示進一步說明

20H—2FH為位尋址區(qū),共16字節(jié),128位。位地址范圍為00H—7FH。

字節(jié)單元地址D7D6D5D4D3D2D1D020H070605040302010021H0F0E0D0C0B0A090822H171615141312111023H1F1E1D1C1B1A191824H272625242322212025H2F2E2D2C2B2A292826H373635343332313027H3F3E3D3C3B3A393828H474645444342414029H4F4E4D4C4B4A49482AH57565554535251502BH5F5E5D5C5B5A59582CH67666564636261602DH6F6E6D6C6B6A69682EH77767574737271702FH7F7E7D7C7B7A79782.位尋址區(qū)30H—7FH是一般RAM區(qū),也稱為用戶RAM區(qū),共80字節(jié)。對于52子系列,一般RAM區(qū)從30H—FFH單元。另外,對于前兩區(qū)中未用的單元也可作為用戶RAM單元使用。3.一般RAM區(qū)堆棧:是按先入后出、后入先出的原則進行管理的一段存儲區(qū)域。使注意事項:堆棧是用片內(nèi)數(shù)據(jù)存儲器的一段區(qū)域,在具體使用時應(yīng)避開工作寄存器、位尋址區(qū),一般設(shè)在2FH以后的單元,如工作寄存器和位尋址區(qū)未用,也可開辟為堆棧。入棧時,SP指針的內(nèi)容先自動加1,然后再把數(shù)據(jù)存入到SP指針指向的單元;出棧時,先把SP指針指向的單元的數(shù)據(jù)取出,然后再把SP指針的內(nèi)容自動減1。復(fù)位時,SP的初值為07H,因此堆棧實際上從08H開始存放數(shù)據(jù)。4.堆棧區(qū)與堆棧指針概念:特殊功能寄存器(SFR)也稱專用寄存器,專門用于控制、管理片內(nèi)算術(shù)邏輯部件、并行I/O口、串行口、定時/計數(shù)器、中斷系統(tǒng)等功能模塊的工作,用戶在編程時可以給其設(shè)定值,但不能移作它用。地址:分布在80H—FFH地址空間,與片內(nèi)數(shù)據(jù)存儲器統(tǒng)一編址。5.特殊功能寄存器特殊功能寄存器(SFR)共26個:表2-4SFR的名稱及其分布。位尋址:有些還可位尋址,位地址見表2-4。與AT89C51相比:新增5個SFR:DP1L、DP1H、AUXR、AUXR1和WDTRST。凡是可位尋址的SFR,字節(jié)地址末位只能是0H或8H。3031新增寄存器的說明1.AUXR寄存器

AUXR是輔助寄存器,其格式如圖2-5所示:

DISALE:ALE的禁止/允許位。

0:ALE有效,發(fā)出脈沖;1:ALE僅在執(zhí)行MOVC和MOVX類指令時有效。

DISRTO:禁止/允許WDT溢出時的復(fù)位輸出。

0:WDT溢出時,在RST引腳輸出一個高電平脈沖;

1:RST引腳僅為輸入腳。

WDIDLE:WDT在空閑模式下的禁止/允許位。

0:

WDT在空閑模式下繼續(xù)計數(shù);

1:

WDT在空閑模式下暫停計數(shù)。新增寄存器的說明2.?dāng)?shù)據(jù)指針DPTR0和DPTR1雙數(shù)據(jù)指針寄存器,便于訪問數(shù)據(jù)存儲器。DPTR0:AT89C51單片機原有的數(shù)據(jù)指針;DPTR1:新增加的數(shù)據(jù)指針。AUXR1的DPS位用于選擇兩個數(shù)據(jù)指針。當(dāng)DPS=0時,選用DPTR0;當(dāng)DPS=1時,選用DPTR1。數(shù)據(jù)指針可作為一個16位寄存器來用,也可作為兩個獨立的8位寄存器DP0H(或DP1H)和DP0L(或DP1L)來用。35新增寄存器的說明3.AUXR1寄存器AUXR1是輔助寄存器,格式如圖2-6所示:

DPS:數(shù)據(jù)指針寄存器選擇位。

0:選擇數(shù)據(jù)指針寄存器DPTR0;

1:選擇數(shù)據(jù)指針寄存器DPTR1。圖2-6

AUXR1寄存器的格式新增寄存器的說明4.看門狗定時器WDTWDT包含一個14位計數(shù)器和看門狗定時器復(fù)位寄存器——

(WDTRST)。當(dāng)CPU由于干擾,程序陷入死循環(huán)或跑飛狀態(tài)時,WDT提供了一種使程序恢復(fù)正常運行的有效手段。36數(shù)據(jù)存儲器數(shù)據(jù)讀寫應(yīng)用實例

【程序1】工作寄存器的讀寫地址機器碼程序注釋檢查結(jié)果ORG0000H;程序從ROM區(qū)0000H處開始存放0000H7811MOVR0,#11H;將立即數(shù)11H送入寄存器R0中(H)=11H0002H7922MOVR1,#22H;將立即數(shù)22H送入寄存器R1中(H)=22H0004H7A33MOVR2,#33H;將立即數(shù)33H送入寄存器R2中(H)=33H0006H7B44MOVR3,#44H;將立即數(shù)44H送入寄存器R3中(H)=44H0008H75D010MOVPSW,#10H;使當(dāng)前工作寄存器組為第2組(H)=10H000BH7855MOVR0,#55H;將立即數(shù)55H送入寄存器R0中(H)=55H000DH7966MOVR1,#66H;將立即數(shù)66H送入寄存器R1中(H)=66H000FH7A77MOVR2,#77H;將立即數(shù)77H送入寄存器R2中(H)=77H0011H7B88MOVR3,#88H;將立即數(shù)88H送入寄存器R3中(H)=88HEND;程序結(jié)束

【程序2】位尋址區(qū)的讀寫

地址機器碼程序注釋檢查結(jié)果ORG0100H;程序從ROM區(qū)0100H處開始存放0100HD200SETB00H;將位地址為00H的位置1(H)=10102HD201SETB01H;將位地址為01H的位置1(H)=10104HD202SETB02H;將位地址為02H的位置1(H)=10106HD203SETB03H;將位地址為03H的位置1(H)=10108HC204CLR04H;將位地址為04H的位清0(H)=0010AHC205CLR05H;將位地址為05H的位清0(H)=0010CHC206CLR06H;將位地址為06H的位清0(H)=0010EHC207CLR07H;將位地址為07H的位清0(H)=0(20H)=0110HC290CLR90H;將P1.0位清0(H)=00112HD290SETB90H;將P1.0位置1(H)=10114HC291CLR91H;將P1.1位清0(H)=00116HD291SETB91H;將P1.1位置1(H)=1END;程序結(jié)束【程序3】一般RAM區(qū)和特殊功能寄存器區(qū)的讀和寫

地址機器碼程序注釋檢查結(jié)果ORG0200H;程序從ROM區(qū)0200H存放0200H753099MOV30H,#99H;將立即數(shù)99H送到30H單元中(30H)=(PC)=0203H7545AAMOV45H,#0AAH;將立即數(shù)AAH送到45H單元中(45H)=(PC)=0206H758150MOVSP,#50H;將立即數(shù)50H送到堆棧指針SP中(H)=50H(PC)=0209H7460MOVA,#60H;將立即數(shù)60H送到累加器A中(H)=60H(PC)=020BH759055MOVP1,#55H;將立即數(shù)55H送到P1口中(H)=55H(PC)=020EH75D090MOVPSW,#90H;將立即數(shù)90H送到PSW中,使當(dāng)前工作寄存器組為第2組且將CY位置1(H)=90H(PC)=0211H901234MOVDPTR,#1234H;將立即數(shù)1234H送到數(shù)據(jù)指針DPTR中(H)=12H(H)=34HEND;程序結(jié)束2.5并行輸入/輸出端口8051單片機有4個8位并行I/O端口,稱為P0、P1、P2和P3口,每個端口都各有8條I/O口線,每條I/O口線都能獨立地用作輸入或輸出。在無片外擴展存儲器的系統(tǒng)中,這四個I/O口都可以作為通用I/O口使用。在有片外擴展存儲器的系統(tǒng)中,P2口送出高8位地址,P0口分時送出低8位地址和8位數(shù)據(jù)。

1.P0口P0口某一位的結(jié)構(gòu)圖如下圖所示,它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器、一個轉(zhuǎn)換開關(guān)MUX、一個輸出驅(qū)動電路(T1和T2)和一個與門及一個非門組成。

(1)P0口用作通用I/O口

MUX與鎖存器的Q端接通,與門輸出為0,T1截止,輸出驅(qū)動級就工作在需外接上拉電阻的漏極開路方式。 ①P0口用作輸出口 ②P0口用作輸入口方式1:讀引腳。方式2:讀鎖存器。(2)P0口用作地址/數(shù)據(jù)總線

MUX將地址/數(shù)據(jù)線與T2接通,同時與門輸出有效。若地址/數(shù)據(jù)線為1,則T1導(dǎo)通,T2截止,P0口輸出為1;反之T1截止,T2導(dǎo)通,P0口輸出為0。當(dāng)數(shù)據(jù)從P0口輸入時,讀引腳使三態(tài)緩沖器2打開,端口上的數(shù)據(jù)經(jīng)緩沖器2送到內(nèi)部總線。

(3)P0口小結(jié)

①P0口既可作地址/數(shù)據(jù)總線使用,也可作通用I/O口使用。當(dāng)P0口作地址/數(shù)據(jù)總線使用時,就不能再作通用I/O口使用了。②P0口作輸出口使用時,輸出級屬漏極開路,必須外接上拉電阻,才有高電平輸出。③P0口作輸入口讀引腳時,應(yīng)先向鎖存器寫1,使T2截止,不影響輸入電平。

P0口的特點

P0口為雙功能口——地址/數(shù)據(jù)復(fù)用口和通用I/O口。(1)當(dāng)P0口用作地址/數(shù)據(jù)復(fù)用口時,是一個真正的雙向口,輸出低8位地址和輸出/輸入8位數(shù)據(jù)。(2)當(dāng)P0口用作通用I/O口時,由于需要在片外接上拉電阻,端口不存在高阻抗(懸?。顟B(tài),因此是一個準雙向口。為保證引腳信號的正確讀入,應(yīng)首先向鎖存器寫1。單片機復(fù)位后,鎖存器自動被置1;當(dāng)P0口由原來輸出轉(zhuǎn)變?yōu)檩斎霑r,應(yīng)先置鎖存器為1,方可執(zhí)行輸入操作。2.P1口P1口是唯一的單功能口,僅能作為通用I/O口使用。由于在其輸出端接有上拉電阻,故可以直接輸出而無需外接上拉電阻。同P0口一樣,當(dāng)作輸入口時,必須先向鎖存器寫“1”,使場效應(yīng)管T截止。

P1口的特點由于內(nèi)部上拉電阻,無高阻抗輸入狀態(tài),故為準雙向口。P1口“讀引腳”輸入時,必須先向鎖存器寫入1。3.P2口圖中的控制信號C決定轉(zhuǎn)換開關(guān)MUX的位置:當(dāng)C=0時,MUX撥向下方,P0口為通用I/O口;當(dāng)控制信號C=1時,MUX撥向上方,P0口作為地址總線使用。在實際應(yīng)用中,P2口通常作為高8位地址總線使用。

P2口的特點作為地址輸出線時,P2口高8位地址,P0口輸出的低8位地址尋址64KB地址空間。作為通用I/O口時,P2口為準雙向口。功能與P1口一樣。一般情況下,P2口大多作為高8位地址總線口使用,這時就不能再作為通用I/O口。4.P3口P3口用作通用I/O口時,第二輸出功能信號W=1,P3口的每一位都可定義為輸入或輸出,其工作原理同P1口類似。在真正的應(yīng)用電路中,P3口的第二功能顯得更為重要。

P3口的第二功能

引腳第二功能功能說明P3.0RXD串行口輸入P3.1TXD串行口輸出P3.2外部中斷0輸入P3.3外部中斷1輸入P3.4T0定時器/計數(shù)器0計數(shù)輸入P3.5T1定時器/計數(shù)器1計數(shù)輸入P3.6片外RAM寫選通信號(輸出)P3.7片外RAM讀選通信號(輸出)P3口的特點P3口內(nèi)部有上拉電阻,無高阻抗輸入態(tài)-準雙向口。P3口作為第二功能的輸出/輸入,或第一功能通用輸入,均須將相應(yīng)位的鎖存器置1。實際應(yīng)用中,由于復(fù)位后P3口鎖存器自動置1,滿足第二功能所需的條件,所以不需任何設(shè)置工作,就可以進入第二功能操作。當(dāng)某位不作為第二功能用時,可作為第一功能通用I/O使用。引腳輸入部分有兩個緩沖器第二功能的輸入信號取自緩沖器BUF3的輸出端第一功能的輸入信號取自緩沖器BUF2的輸出端。

下面討論P1~P3口與LED發(fā)光二極管的驅(qū)動連接問題。P0口與P1、P2、P3口相比,P0口的驅(qū)動能力較大,每位可驅(qū)動8個LSTTL輸入,而P1、P2、P3口的每一位的驅(qū)動能力,只有P0口的一半。當(dāng)P0口某位為高電平時,可提供400A的電流;當(dāng)P0口某位為低電平(0.45V)時,可提供3.2mA的灌電流。P1~P3口驅(qū)動LED發(fā)光二極管54如低電平允許提高,灌電流可相應(yīng)加大。所以,任何一個口要想獲得較大的驅(qū)動能力,只能用低電平輸出。例如,使用單片機的并行口P1~P3直接驅(qū)動發(fā)光二極管,電路如圖2-12。由于P1~P3內(nèi)部有30kΩ左右的上拉電阻。如高電平輸出,則強行從P1、P2和P3口輸出的電流Id會造成單片機端口的損壞,如圖2-12(a)所示。如端口引腳為低電平,能使電流Id

從單片機外部流入內(nèi)部,則將大大增加流過的電流值,如圖2-12(b)所示。所以:當(dāng)P1~P3口驅(qū)動LED發(fā)光二極管時,應(yīng)該采用低電平驅(qū)動。55(a)不恰當(dāng)?shù)倪B接:高電平驅(qū)動(b)恰當(dāng)?shù)倪B接:低電平驅(qū)動圖2-12

發(fā)光二極管與AT89S51并行口的直接連接關(guān)于負載能力的小節(jié)P0口的輸出級與P1~P3口的輸出級在結(jié)構(gòu)上不同。其輸出級無上拉電阻。P0口的每一位能驅(qū)動8個LSTTL負載。在作為通用I/O口使用時,輸出驅(qū)動電路是開漏的,所以,驅(qū)動集電極開路(OC門)電路或漏級開路電路需外接上拉電阻。當(dāng)作為地址/數(shù)據(jù)總線使用時(T1可以提供上拉電平),口線不是開漏的,無需外接上拉電阻。P1~P3口的每一位能驅(qū)動4個LSTTL負載。無需外接上拉電阻。當(dāng)作輸出口去驅(qū)動一個普通晶體管的基極時,應(yīng)在端口與晶體管基極間串聯(lián)一個電阻,以限制高電平輸出時的電流。

P1口輸出功能應(yīng)用實例

【例1】P1口做輸出口,控制八只發(fā)光二極管循環(huán)點亮(P1口輸出低電平時發(fā)光二極管被點亮)。

解:由于發(fā)光二極管低電平點亮,所以,需要哪個發(fā)光二極管點亮,只需在相應(yīng)的端口輸出邏輯0即可。

由于每個發(fā)光二極管點亮后要持續(xù)一段時間才熄滅,再使下個發(fā)光二極管點亮,因此需要編寫延時子程序,供主程序反復(fù)調(diào)用。本例中,延時子程序采用指令循環(huán)來實現(xiàn)。

P1口輸出功能應(yīng)用實例

地址機器碼程序注釋ORG0000H0000H021000LJMPMAINORG1000H1000H74FEMAIN:MOVA,#0FEH1002HF590LOOP:MOVP1,A1004H12100ALCALLDELAY;延時1007H23RLA;左移位1008H80F8SJMPLOOP;循環(huán)100AH7FFFDELAY:MOVR7,#0FFH;延時子程序100CH7EFAL1:MOVR6,#0FAH100EHDEFEDJNZR6,$1010HDFFADJNZR7,L11012H22RETEND【例2】利用P1.0輸出高低電平,控制繼電器的開合,以實現(xiàn)對外部裝置(如燈L1和L2)的控制。

解:將單片機的P1.0接繼電器控制端JIN,繼電器的JZ通過K1接地,常開觸點JK接L1,常閉觸點JB接L2。編制程序,使P1.0電平變化,高電平時繼電器吸合,常開觸點閉合,L1點亮,L2熄滅;低電平時繼電器不工作,常閉觸點閉合,L2點亮,L1熄滅。

參考程序:

地址機器碼程序注釋ORG0000H0000H022000LJMPMAINORG2000H2000HC290MAIN:CLRP1.0;P1.0送低電平2002H12200CLCALLDELAY;延時2005HD290SETBP1.0;P1.0送高電平2007H12200CLCALLDELAY;延時200AH80F4SJMPMAIN;循環(huán)200CH7F06DELAY:MOVR7,#06H;延時子程序200EH7EFFL1:MOVR6,#0FFH2010H7DFAL2:MOVR5,#0FAH2012HDDFEDJNZR5,$2014HDEFADJNZR6,L22016HDFF6DJNZR7,L12018H22RETENDP3口輸入功能應(yīng)用實例

【例3】P3口的P3.0連接一個開關(guān),作為輸入端;P1口的P1.0~P1.7連接八只發(fā)光二極管,作為輸出端。要求用P3.0來控制P1輸出的循環(huán)燈,即當(dāng)P3.0輸出高電平時,控制P1口的發(fā)光二極管左循環(huán)點亮;當(dāng)P3.0輸出低電平時,控制P1口的發(fā)光二極管右循環(huán)點亮(P1口輸出低電平時發(fā)光二極管被點亮)。

解:在主程序中要對P3.0的狀態(tài)進行判斷。如果P3.0為高電平,則使用循環(huán)左移指令。如果P3.0為低電平,則使用循環(huán)右移指令。延時子程序同例1。

參考程序:地址機器碼程序注釋ORG0000H0000H023000 LJMPMAIN ORG3000H3000H74FEMAIN:MOVA,#0FEH3002HF590LOOP:MOVP1,A3004H123010 LCALLDELAY;延時3007H20B003 JBP3.0,L1300AH03 RRA;右移位300BH80F5 SJMPLOOP;循環(huán)300DH23L1:RLA;左移位300EH80F2 SJMPLOOP;循環(huán)3010H7FFFDELAY:MOVR7,#0FFH;延時子程序3012H7EFAL2:MOVR6,#0FAH3014HDEFEDJNZR6,$3016HDFFADJNZR7,L23018H22RETEND2023/2/5632.6時鐘電路與時序

2.6.1時鐘電路內(nèi)部時鐘方式外部時鐘方式

AT89S51AT89S512023/2/564

2.6.2周期與時序1個機器周期:12個晶蕩周期(或6個時鐘周期)指令的執(zhí)行時間稱作指令周期(單、雙、四周期)2023/2/565典型時序單字節(jié)指令

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論