AT89S51單片機(jī)_第1頁(yè)
AT89S51單片機(jī)_第2頁(yè)
AT89S51單片機(jī)_第3頁(yè)
AT89S51單片機(jī)_第4頁(yè)
AT89S51單片機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、AT89S51AT89S51單片機(jī)的硬件組成單片機(jī)內(nèi)硬件組成結(jié)構(gòu)如圖 2-1所示。(1) 8位微處理器(CPU);(2)數(shù)據(jù)存儲(chǔ)器(128B RAM);(3)程序存儲(chǔ)器(4KB Flash ROM );(4)4 個(gè) 8 位可編程并行 I/O 口(P0 口、P1 口、P2 口和 P3 口);(5) 1個(gè)全雙工的異步串行口;(6) 2個(gè)可編程的16位定時(shí)器/計(jì)數(shù)器;(7) 1個(gè)看門狗定時(shí)器;(8)中斷系統(tǒng)具有5個(gè)中斷源、5個(gè)中斷向量;(9)特殊功能寄存器(SFR) 26個(gè);(8) )低功耗模式有空閑模式和掉電模式,且具有掉電模式下的中斷恢復(fù)模式;(11) 3個(gè)程序加密鎖定位。與AT89C51相比,

2、AT89S51有更突生的優(yōu)點(diǎn):(1)增加在線可編程功能 ISP (In System Program),字節(jié)和頁(yè)編程,現(xiàn)場(chǎng)程序調(diào)試和修改更加方便靈活;(2)數(shù)據(jù)指針增加到兩個(gè),方便了對(duì)片外 RAM的訪問(wèn)過(guò)程;(3)增加了看門狗定時(shí)器,提高了系統(tǒng)的抗干擾能力;(4)增加斷電標(biāo)志;(5)增加掉電狀態(tài)下的中斷恢復(fù)模式。單片機(jī)內(nèi)各功能部件通過(guò)片內(nèi)單一總線連接而成(見圖2-1),基本結(jié)構(gòu)依舊是 CPU加上外圍芯片的傳統(tǒng)微機(jī)結(jié)構(gòu)。CPU對(duì)各種功能部件的控制是采用特殊功能寄存器(SFR, Special Function Register)的集中控制方式。單片機(jī)內(nèi)部件功能1) CPU (微處理器)8位的CP

3、U,與通用CPU基本相同,同樣包括了運(yùn)算器和控制器兩大部分,還有面向控制的位處理功能。2)數(shù)據(jù)存儲(chǔ)器(RAM )片內(nèi)為128B (52子系列為256B),片外最多可擴(kuò) 64KB。片內(nèi)128B的RAM以高速RAM的形式集成,可 加快單片機(jī)運(yùn)行的速度和降低功耗。3)程序存儲(chǔ)器(Flash ROM)片內(nèi)集成有4KB的Flash存儲(chǔ)器(AT89S52則為8KB ; AT89C55片內(nèi)20KB),如片內(nèi)容量不夠,片外可外 擴(kuò)至64KB。4)中斷系統(tǒng)具有5個(gè)中斷源,2級(jí)中斷優(yōu)先權(quán)。5)定時(shí)器/計(jì)數(shù)器2個(gè)16位定日寸器/計(jì)數(shù)器(52子系列有3個(gè)),4種工作方式。6) 1個(gè)看門狗定時(shí)器 WDT當(dāng)CPU由于干擾

4、使程序陷入死循環(huán)或跑飛時(shí),WDT可使程序恢復(fù)正常運(yùn)行。7)串行口1個(gè)全雙工的異步串行口,4種工作方式??蛇M(jìn)行串行通信,擴(kuò)展并行 I/O 口,還可與多個(gè)單片機(jī)構(gòu)成多機(jī)系統(tǒng)。8) P0 口、P1 口、P2 口和 P3 口4個(gè)8位并行I/O 口。9)特殊功能寄存器(SFR)26個(gè),對(duì)片內(nèi)各功能部件管理、控制和監(jiān)視。是各個(gè)功能部件的控制寄存器和狀態(tài)寄存器,映射在片內(nèi)RAM區(qū)80HFFH內(nèi)。AT89S51完全兼容AT89C51,在充分保留原來(lái)軟、硬件條件下,完全可以用AT89S51直接代換。AT89S51的引腳功能AT89S51與51系列中各種型號(hào)芯片的引腳互相兼容。目前多采用40只引腳雙列直插,如圖

5、2-2所示。引腳按其功能可分為如下3類:1)電源及時(shí)鐘弓|腳一VCC、 VSS; XTAL1、XTAL2 。2)控制弓I腳一 PSEN、ALE/ PROG 、EA/VPP、RST (RESET)3) I/O 口引腳 P0、P1、P2、P3,為 4 個(gè) 8 位 I/O 口電源及時(shí)鐘引腳1 .電源引腳1) VCC (40 腳):+5V 電源。2) VSS (20腳):數(shù)字地。2 .時(shí)鐘引腳1) XTAL1 (19腳):片內(nèi)振蕩器反相放大器和時(shí)鐘發(fā)生器電路輸入端。用片內(nèi)振蕩器時(shí),該腳接外部石英 晶體和微調(diào)電容。外接時(shí)鐘源時(shí),該腳接外部時(shí)鐘振蕩器的信號(hào)。2) XTAL2 (18腳):片內(nèi)振蕩器反相放大

6、器的輸出端。當(dāng)使用片內(nèi)振蕩器,該腳連接外部石英晶體和微調(diào) 電容。當(dāng)使用外部時(shí)鐘源時(shí),本腳懸空。3 .控制引腳1) RST(RESET, 9腳)復(fù)位信號(hào)輸入,在引腳加上持續(xù)時(shí)間大于2個(gè)機(jī)器周期的高電平,可使單片機(jī)復(fù)位。正常工作,此腳電平應(yīng) 0.5V。當(dāng)看門狗定時(shí)器溢出輸出時(shí),該腳將輸出長(zhǎng)達(dá)96個(gè)時(shí)鐘振蕩周期的高電平。2) EA NPP (Enable Address/Voltage Pulse of Programing , 31 腳)EA引腳第一功能:外部程序存儲(chǔ)器訪問(wèn)允許控制端。=1 :在PC值不超出0FFFH (即不超出片內(nèi)4KB Flash存儲(chǔ)器的地址范圍)時(shí),單片機(jī)讀片內(nèi)程序存儲(chǔ)器 (

7、4KB) 中的程序,但 PC值超出0FFFH (即超出片內(nèi) 4KB Flash地址范圍)時(shí),將自動(dòng)轉(zhuǎn)向讀取片外60KB(1000H-FFFFH )程序存儲(chǔ)器空間中的程序。EA=0:只讀取外部的程序存儲(chǔ)器中的內(nèi)容,讀取的地址范圍為0000HFFFFH,片內(nèi)的4KB Flash程序存儲(chǔ)器不起作用。VPP:引腳第二功能,對(duì)片內(nèi) Flash編程,接編程電壓。3) ALE/ PROG (Address Latch Enable/PROGramming , 30 腳)ALE為CPU訪問(wèn)外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器提供地址鎖存信號(hào),將低8位地址鎖存在片外的地址鎖存器中。此外,單片機(jī)正常運(yùn)行時(shí),ALE端一直

8、有正脈沖信號(hào)輸出,此頻率為時(shí)鐘振蕩器頻率fosc的1/6??捎米魍獠慷〞r(shí)或觸發(fā)信號(hào)。注意,每當(dāng) AT89S51訪問(wèn)外部RAM時(shí)(執(zhí)行MOVX類指令),要丟失一個(gè) ALE脈沖。如需要,可將特殊功能寄存器 AUXR (地址為8EH,將在后面介紹)的第 0位(ALE禁止位)置1,來(lái)禁 止ALE操作,但執(zhí)行訪問(wèn)外部程序存儲(chǔ)器或外部數(shù)據(jù)存儲(chǔ)器指令“MOVC ”或“ MOVX ”時(shí),ALE仍然有效。即ALE禁止位不影響對(duì)外部存儲(chǔ)器的訪問(wèn)。PROG :引腳第二功能,對(duì)片內(nèi) Flash編程,為編程脈沖輸入腳。prodPL1匚124039Ziv0cJPO-OPL2匚338 P0JPL3匚437 P0JP1.4C

9、536 P0.3MOSDP1,5C635 P0.4MISO/P1.6C734 P0.5SCK7PL7 匚833ZIPO.6RSTC932 P05RXD/P3.0C10 ATS9S5131 EA/VppTXD/P3.1 匚130 ALE/PROGNT0/P32 匚12293 PSENINT1/P3.3 匚1328 P2.7T0/P3.4 匚1427 P2.6T1/P3.5 C1526 P2.5WR/P16 匚1625 P2.4RD/P3.7 匚1724 P23XTAL2C23 P2.2XTALI 匚1922 P2.1V聆匚2021一)”門圖2-2 AT89S51雙列直插封裝方式的引腳Jr W4)

10、 PSEN (Program Strobe ENable,29 腳)片外程序存儲(chǔ)器讀選通信號(hào),低電平有效。弁行I/O 口引腳1) P0 口: 8位,漏極開路的雙向I/O 口當(dāng)外擴(kuò)存儲(chǔ)器及I/O接口芯片時(shí),P0 口作為低8位地址總線及數(shù)據(jù)總線的分時(shí)復(fù)用端口。P0 口也可用作通用的I/O 口,需加上拉電阻,這時(shí)為準(zhǔn)雙向口。作為通用I/O輸入,應(yīng)先向端口寫入 1。可驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。2) P1 口: 8位,準(zhǔn)雙向I/O 口,具有內(nèi)部上拉電阻。準(zhǔn)雙向I/O 口,作為通用I/O輸入時(shí),應(yīng)先向端口鎖存器寫1。P1 口可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P1.5/MOSI、P1.6/MISO 和 P1.7/

11、SCK可用于對(duì)片內(nèi)Flash存儲(chǔ)器串行編程和校驗(yàn),它們分別是串行數(shù)據(jù)輸入、輸出和移位脈沖引腳。3) P2 口: 8位,準(zhǔn)雙向I/O 口,具有內(nèi)部上拉電阻。當(dāng)AT89S51擴(kuò)展外部存儲(chǔ)器及I/O 口時(shí),P2 口作為高8位地址總線用,輸出高 8位地址。P2 口也可作為普通的I/O 口使用。當(dāng)作為通用I/O輸入時(shí),應(yīng)先向端口輸出鎖存器寫1。P2 口可驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。4) P3 口: 8位,準(zhǔn)雙向I/O 口,具有內(nèi)部上拉電阻??勺鳛橥ㄓ玫腎/O 口使用。作為通用I/O輸入,應(yīng)先向端口輸出鎖存器寫入1??沈?qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3 口還可提供第二功能。第二功能定義見表2-1,應(yīng)熟記。引腳第

12、二功能說(shuō)明P3.0RXD串行數(shù)據(jù)輸入口P3.1TXD串行數(shù)據(jù)輸出口P3.2INT0外部中斷0輸入P3.3INT1外部中斷1輸入P3.4T0定時(shí)器0外部計(jì)數(shù)輸入P3.5T1定時(shí)器1外部計(jì)數(shù)輸入P3.6WR外部數(shù)據(jù)存儲(chǔ)器寫選通輸出P3.7rD外部數(shù)據(jù)存儲(chǔ)器讀寫通輸出表2-1 P3 口的第二功能定義綜上所述,P0 口可作為總線口,為雙向口。作為通用的I/O 口使用時(shí),為準(zhǔn)雙向口,這時(shí)需加上拉電阻。P1 口、P2 口、P3 口均為準(zhǔn)雙向口。注意:準(zhǔn)雙向口與雙向口的差別。準(zhǔn)雙向口僅有兩個(gè)狀態(tài)。而P0 口作為總線使用,口線內(nèi)無(wú)上拉電阻,處于高阻“懸浮”態(tài)。故 P0 口為雙向三態(tài)I/O 口。為什么P0 口要

13、有高阻“懸浮”態(tài)?準(zhǔn)雙向I/O 口則無(wú)高阻的“懸浮”狀態(tài)。另外,準(zhǔn)雙向口作通用 I/O的輸入口使用時(shí),一定要向該口先寫入“1”。以上的準(zhǔn)雙向口與雙向口的差別,讀者在閱讀2.5節(jié)后,將會(huì)有深刻的理解。至此,40個(gè)引腳已介紹完,應(yīng)熟記每一引腳功能對(duì)應(yīng)用系統(tǒng)硬件電路設(shè)計(jì)十分重要。AT89S51 的 CPU(p41)由圖2-1可見,CPU由運(yùn)算器和控制器構(gòu)成。一、運(yùn)算器ALU、累加器A、位處理器、程序狀對(duì)操作數(shù)進(jìn)行算術(shù)、邏輯和位操作運(yùn)算。主要包括算術(shù)邏輯運(yùn)算單元 態(tài)字寄存器PSW及兩個(gè)暫存器等。1 .算術(shù)邏輯運(yùn)算單元 ALU可對(duì)8位變量邏輯運(yùn)算(與、或、異或、循環(huán)、求補(bǔ)和清零) ,還可算術(shù)運(yùn)算(加、減

14、、乘、除)ALU還有位操作功能,對(duì)位變量進(jìn)行位處理,如置“1”、清“0”、求補(bǔ)、測(cè)試轉(zhuǎn)移及邏輯“與”、“或”等。2 .累加器A使用最頻繁的寄存器,可寫為 Acc。"A”與“Acc”書寫上的差別,將在第 3章介紹。作用如下:1) ALU單元的輸入數(shù)據(jù)源之一,又是 ALU運(yùn)算結(jié)果存放單元。2)數(shù)據(jù)傳送大多都通過(guò)累加器A,相當(dāng)于數(shù)據(jù)的中轉(zhuǎn)站。為解決“瓶頸堵塞”問(wèn)題, AT89S51增加了一部分可以不經(jīng)過(guò)累加器的傳送指令。A的進(jìn)位標(biāo)志Cy是特殊的,因?yàn)樗瑫r(shí)又是位處理機(jī)的位累加器3.程序狀態(tài)字寄存器 PSWPSW (Program Status Word)位于片內(nèi)特殊功能寄存器區(qū),字節(jié)地址為

15、D0H。包含了程序運(yùn)行狀態(tài)的信息,其中4位保存當(dāng)前指令執(zhí)行后的狀態(tài),供程序查詢和判斷。格式如圖2-3所示。D7 D6 D5 D4 D3 D2 DI DOPSWcyAcFORSIRSOOVpDOH圖2-3 PSW的格式PSW中各個(gè)位的功能: 1) Cy (PSW.7)進(jìn)位標(biāo)志位可寫為Co在算術(shù)和邏輯運(yùn)算時(shí),若有進(jìn)位 /借位,Cy=1;否則,Cy=0o在位處理器中,它是位累加器。在BCD碼運(yùn)算 整。即當(dāng) D3位向 位時(shí),Ac = 1;否則,RS1 RS0所選的四組寄存器000區(qū)(內(nèi)部RAM地址00H-07H)3) F0 ( PSW用 由用戶使用的一指令來(lái)使它置 1或011區(qū)(內(nèi)部 RAM地址08H

16、-0FH)102區(qū)(內(nèi)部 RAM地址10H-17H)向。用戶應(yīng)充分利113區(qū)(內(nèi)部RAM地址18H-1FH)4 ) RS1 、 RS0 組工作寄存器區(qū)選擇2) Ac (PSW.6)輔助進(jìn)位標(biāo)志位選擇片內(nèi)RAM區(qū)中的4組工作寄存器區(qū)中的某一組為當(dāng)前工作寄存區(qū)見表2-2。時(shí),用作十進(jìn)位調(diào)D4位產(chǎn)生進(jìn)位或借Ac = 0。戶設(shè)定標(biāo)志位個(gè)狀態(tài)標(biāo)志位,可用 清0,控制程序的流 用。(PSW.4、PSW.3) 45) OV (PSW.2)溢出標(biāo)志位OV=1 ;否貝U, OV=0。當(dāng)執(zhí)行算術(shù)指令時(shí),用來(lái)指示運(yùn)算結(jié)果是否產(chǎn)生溢出。如果結(jié)果產(chǎn)生溢出,6) PSW.1 位 保留位7) P (PSW.0)奇偶標(biāo)志位指

17、令執(zhí)行完,累加器 A中“ 1”的個(gè)數(shù)是奇數(shù)還是偶數(shù)。P=1,表示A中“1”的個(gè)數(shù)為奇數(shù)。P=0,表示A中“1”的個(gè)數(shù)為偶數(shù)。此標(biāo)志位對(duì)串行通信有重要的意義,常用奇偶檢驗(yàn)的方法來(lái)檢驗(yàn)數(shù)據(jù)串行傳輸?shù)目煽啃?。?-2 RS1 RS0與四組寄存器區(qū)的對(duì)應(yīng)關(guān)系二、控制器任務(wù)識(shí)別指令,并根據(jù)指令的性質(zhì)控制單片機(jī)各功能部件,從而保證單片機(jī)各部分能自動(dòng)協(xié)調(diào)地工作??刂破靼ǎ撼绦蛴?jì)數(shù)器、指令寄存器、指令譯碼器、定時(shí)及控制邏輯電路等。功能是控制指令的讀入、 譯碼和執(zhí)行,從而對(duì)各功能部件進(jìn)行定時(shí)和邏輯控制。程序計(jì)數(shù)器PC是一個(gè)獨(dú)立的16位計(jì)數(shù)器,不可訪問(wèn)。單片機(jī)復(fù)位時(shí),PC中內(nèi)容為0000H,從程序存儲(chǔ)器0000

18、H單元取指令,開始執(zhí)行程序。PC工作過(guò)程是:CPU讀指令時(shí),PC的內(nèi)容作為所取指令的地址,程序存儲(chǔ)器按此地址輸出指令字節(jié),同時(shí)PC自動(dòng)加1。PC中內(nèi)容變化軌跡決定程序流程。當(dāng)順序執(zhí)行程序時(shí)自動(dòng)加1;執(zhí)行轉(zhuǎn)移程序或子程序、中斷子程序調(diào)用時(shí),自動(dòng)將其內(nèi)容更改成所要轉(zhuǎn)移的目的地址。PC的計(jì)數(shù)寬度決定了程序存儲(chǔ)器的地址范圍。PC為16位,故可對(duì)64KB (=216B)尋址?;竟ぷ鞣绞剑?)程序計(jì)數(shù)器自動(dòng)加 12)執(zhí)行有條件或無(wú)條件轉(zhuǎn)移指令時(shí),程序計(jì)數(shù)器將被置入新的數(shù)值,從而使程序的流向發(fā)生變化。3)執(zhí)行子程序調(diào)用或中斷調(diào)用時(shí)完成下列操作:PC的當(dāng)前值保護(hù) 將子程序入口地址或中斷向量的地址送入PC。P

19、C變化的軌跡決定程序的流程。AT89S51存儲(chǔ)器的結(jié)構(gòu)存儲(chǔ)器的結(jié)構(gòu)特點(diǎn)之一是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(哈佛結(jié)構(gòu)),并有各自的訪問(wèn)指令。存儲(chǔ)器空間可分為 4類。1 .程序存儲(chǔ)器空間片內(nèi)和片外兩部分。片內(nèi)4KB Flash ,編程和擦除完全是電氣實(shí)現(xiàn)??捎猛ㄓ镁幊唐鲗?duì)其編程,也可在線編程。當(dāng)片內(nèi)4KB Flash存儲(chǔ)器不夠用時(shí),可片外擴(kuò)展,最多可擴(kuò)展至64KB程序存儲(chǔ)器。2 .數(shù)據(jù)存儲(chǔ)器空間片內(nèi)與片外兩部分。片內(nèi)有128 B RAM (52子系列為256B)。片內(nèi)RAM 不夠用時(shí),在片外可擴(kuò)展至64KB RAM 。3 .特殊功能寄存器 SFR (Special Function Registe

20、r)片內(nèi)各功能部件的控制寄存器及狀態(tài)寄存器。SFR綜合反映了整個(gè)單片機(jī)基本系統(tǒng)內(nèi)部實(shí)際的工作狀態(tài)及工作方式。4 .位地址空間共有211個(gè)可尋址位,構(gòu)成了位地址空間。它們位于內(nèi)部 RAM (共128位)和特殊功能寄存器區(qū)(共 83 位)中。程序存儲(chǔ)器空間存放程序和表格之類的固定常數(shù)。片內(nèi)為4KB的Flash ,地址為0000H0FFFH。16位地址線,可外擴(kuò)的程序存儲(chǔ)器空間最大為64KB,地址為0000HFFFFH。使用時(shí)應(yīng)注意以下問(wèn)題:1)分為片內(nèi)和片外兩部分,訪問(wèn)片內(nèi)的還是片外的程序存儲(chǔ)器,由引腳電平確定。=1時(shí),CPU從片內(nèi)0000H開始取指令,當(dāng) PC值沒有超出0FFFH時(shí),只訪問(wèn)片內(nèi)

21、Flash存儲(chǔ)器,當(dāng)PC值超出0FFFH自動(dòng)轉(zhuǎn)向讀片外程序存儲(chǔ)器空間1000HFFFFH內(nèi)的程序。=0時(shí),只能執(zhí)行片外程序存儲(chǔ)器(0000HFFFFH)中的程序。不理會(huì)片內(nèi)4KB Flash存儲(chǔ)器。2)程序存儲(chǔ)器某些固定單元用于各中斷源中斷服務(wù)程序入口。64KB程序存儲(chǔ)器空間中有 5個(gè)特殊單元分別對(duì)應(yīng)于 5個(gè)中斷源的中斷入口地址,見表2-3。通常這5個(gè)中斷入口地址處都放一條跳轉(zhuǎn)指令跳向?qū)?yīng)的中斷服務(wù)子程序,而不是直接存放中斷服務(wù)子程 序。表2-3五個(gè)中斷源的中斷入口地址中斷源入口地址外部中斷00003H定時(shí)器T0000BH外部中斷10013H定時(shí)器T1001BH串行口0023H用戶kame絳m

22、缸十竹而在孱蟀Km 7和中r笆a潞X第,茸IFfb-*r而K內(nèi)O的LF件安有希爾數(shù)據(jù)存儲(chǔ)器空間 片內(nèi)與片外兩部分。1 .片內(nèi)數(shù)據(jù)存儲(chǔ)器片內(nèi)數(shù)據(jù)存儲(chǔ)器(RAM )共128個(gè)單元,字節(jié)地址為 00H7FH。圖2-4為片內(nèi)數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)。00H1FH的32個(gè)單元是4組通用工作寄存器區(qū),每區(qū)包含 8B,為R7R0??赏ㄟ^(guò)指令改變 RS1、RS0 兩位來(lái)選擇。20H2FH的16個(gè)單元的128位可位尋址,也可字節(jié)尋址。30H7FH的單元只能字節(jié)尋址,用作存數(shù)據(jù)以及作為堆棧區(qū)。2 .片外數(shù)據(jù)存儲(chǔ)器當(dāng)片內(nèi)128B的RAM不夠用時(shí),需外擴(kuò),最多可外擴(kuò)64KB的RAM。注意,片內(nèi) RAM與片外RAM兩個(gè)空間是相

23、互獨(dú)立的, 片內(nèi)RAM與片外RAM的低128B的地址是相同的, 但由于使用的是不同的訪問(wèn)指令, 所以不會(huì)發(fā)生沖突。特殊功能寄存器(SFR采用特殊功能寄存器集中控制各功能部件。特殊功能寄存器映射在片內(nèi)RAM的80HFFH區(qū)域中,共26個(gè)。表2-4 SFR的名稱及其分布。有些還可位尋址,位地址見表2-4。與 AT89C51 相比,新增 5 個(gè) SFR: DP1L、DP1H、AUXR、AUXR1 和 WDTRST ,已在表 2-4 中標(biāo)出。凡是可位尋址的 SFR,字節(jié)地址末位只能是 0H或8H。另外,若讀/寫未定義單元,將得到一個(gè)不確定的隨 機(jī)數(shù)。下面介紹某些SFR,余下的SFR將在后面介紹。表2-

24、4 SEft的名稱及其分布序號(hào)特殊功能 寄存器符號(hào)s 稱字節(jié) 地址位地址復(fù)位值11P0ponfiOHFFH2Fsp雄核指81HL:匕DPOL數(shù)據(jù)指科口口 TRD候字節(jié)注組06H4DP OH數(shù)據(jù)指斜DPTRO高字節(jié)83H0CH5DPLL數(shù)據(jù)指針DPMI任字節(jié)E4H0CH6DFLH數(shù)據(jù)指針DETK1高字節(jié)&5H0CH1 7PCOX電源控制寄存器S7H-ox XX 0000B1 £TCON定時(shí)器計(jì)數(shù)器控制寄存器S8HSFH-SSH0CH L寰IMOD定時(shí)器計(jì)數(shù)圈方式控制&9H0CH10TLO定時(shí)器讓數(shù)器D低字節(jié)8Ali11IL!定時(shí)器計(jì)數(shù)器1(任字節(jié)SEHOOH1I 12T

25、HO定時(shí)騫計(jì)數(shù)器0 (高字節(jié))8 CH00H隼表?1-413TH1定時(shí)器 計(jì)數(shù)器1 f高字節(jié)SDH一OOH14AUXR鋪助寄存器SEHXXXQ OX XDH15PlPI口寄存器9汨00日FFH16SCON串行控寄存器98HOOH175BLT串行發(fā)送救據(jù)藤?zèng)_器9gHX X X X X X X X B18P2P2 口寄存器AOHA7HAOHFFH19AUXIU輔助擊行器A2II-1X XX X X X X 0 B20V.TJTK5T著口狗復(fù)位寄殍器A5H定父乂" X X XX B21IE中斷允許控制寄存器ASHATII- A8IIOX XO 0000B22P3P3 口寄存器BCHS7H&

26、#39;BOHFFH23IP中新優(yōu)優(yōu)級(jí)拄制寄存招X XQO OOOOB24PSW程序狀念字宙存疆DOHD7H - DOHMH25A 或 ACC)累加器EOHOOH16E寄存器FOHMH1 .堆棧指針SP指示堆棧頂部在內(nèi)部 RAM塊中的位置。堆棧結(jié)構(gòu)一向上生長(zhǎng)型。單片機(jī)復(fù)位后,SP為07H,使得堆棧實(shí)際上從 08H單元開始,由于08H1FH單元分別是屬于13組的工作寄存器區(qū),最好在復(fù)位后把SP值改置為60H或更大的值,避免堆棧與工作寄存器沖突。堆棧是為子程序調(diào)用和中斷操作而設(shè),主要用來(lái)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。1)保護(hù)斷點(diǎn)。無(wú)論是子程序調(diào)用操作還是中斷服務(wù)子程序調(diào)用,最終都要返回主程序。應(yīng)預(yù)先把主程序的

27、斷點(diǎn)在堆棧中保護(hù)起來(lái),為程序正確返回做準(zhǔn)備。2)現(xiàn)場(chǎng)保護(hù)。執(zhí)行子程序或中斷服務(wù)子程序時(shí),要用到一些寄存器單元,會(huì)破壞原有內(nèi)容。要把有關(guān)寄存器單元的內(nèi)容保存起來(lái),送入堆棧,這就是所謂的“現(xiàn)場(chǎng)保護(hù)”。兩種操作:數(shù)據(jù)壓入(PUSH)堆棧,數(shù)據(jù)彈出(POP)堆棧。數(shù)據(jù)壓入堆棧,SP自動(dòng)加1;數(shù)據(jù)彈出堆棧,SP自動(dòng)減1。2 .寄存器B為執(zhí)行乘法和除法而設(shè)。在不執(zhí)行乘、除法操作的情況下,可把它當(dāng)作一個(gè)普通寄存器來(lái)使用。乘法,兩乘數(shù)分別在 A、B中,執(zhí)行乘法指令后,乘積在 BA中除法,被除數(shù)取自 A,除數(shù)取自B,商存放在A中,余數(shù)存B中。3 . AUXR寄存器AUXR是輔助寄存器,其格式如圖 2-5所示:D

28、7 D6 D5 D4 D3 D2 DI DOAUXRWDTDLEDISRTODISALE8EH圖2-5 AUXR?存器的格式其中:DISALE : ALE的禁止/允許位。0: ALE有效,發(fā)出脈沖;1: ALE僅在執(zhí)行MOVC和MOVX類指令時(shí)有效,不訪問(wèn)外部存儲(chǔ)器時(shí), ALE不輸出脈沖信號(hào)。 DISRTO :禁止/允許 WDT溢出時(shí)的復(fù)位輸出。0: WDT溢出時(shí),在RST引腳輸出一個(gè)高電平脈沖;1: RST引腳僅為輸入腳。WDIDLE : WDT在空閑模式下的禁止 /允許位。0: WDT在空閑模式下繼續(xù)計(jì)數(shù);1: WDT在空閑模式下暫停計(jì)數(shù)。4 .數(shù)據(jù)指針DPTR0和DPTR1雙數(shù)據(jù)指針寄存

29、器,便于訪問(wèn)數(shù)據(jù)存儲(chǔ)器。DPTR0 : AT89C51單片機(jī)原有的數(shù)據(jù)指針;DPTR1 :新增加的數(shù)據(jù)指針。AUXR1的DPS位用于選擇兩個(gè)數(shù)據(jù)指針。當(dāng) DPS=0時(shí),選用 DPTR0;當(dāng)DPS=1時(shí),選用 DPTR1。數(shù)據(jù)指針可彳為一個(gè) 16位寄存器來(lái)用,也可彳為兩個(gè)獨(dú)立的8位寄存器DP0H (或DP1H)和DP0L (或DP1L)來(lái)用。5 . AUXR1寄存器AUXR1是輔助寄存器,格式如圖 2-6所示:DPS:數(shù)據(jù)指針寄存器選擇位。0:選擇數(shù)據(jù)指針寄存器 DPTR0 ;1 :選擇數(shù)據(jù)指針寄存器 DPTR1 。D7 D6 D5 D4 D3 D2 DI DOAUXR1-DPSA2H6.看門狗

30、定時(shí)器WDTWDT包含一個(gè)14位計(jì)數(shù)器和看門狗定時(shí)器復(fù)位寄存器一一( WDTRST)。當(dāng)CPU由于干擾,程序陷入死循環(huán)或跑飛狀態(tài)時(shí),WDT提供了一種使程序恢復(fù)正常運(yùn)行的有效手段。有關(guān)WDT在抗干擾設(shè)計(jì)中的應(yīng)用以及低功耗模式下運(yùn)行的狀態(tài),將在相應(yīng)的章節(jié)中具體介紹。上面介紹的特殊功能寄存器,除了前兩個(gè) SP和B以外,其余的均為 AT89S51在AT89C51基礎(chǔ)上新增加的SFR。位地址空間211個(gè)尋址位的位地址,位地址范圍為00HFFH,其中00H7FH這128位處于片內(nèi) RAM 字節(jié)地址20H2FH單元中,如表2-5所示。其余的83個(gè)可尋址位分布在特殊功能寄存器SFR中,見表2-6??杀晃粚ぶ返?/p>

31、特殊寄存器有11個(gè),共有位地址88個(gè),5個(gè)位未用,其余83個(gè)位的位地址離散地分布于片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)字節(jié)地址為80HFFH的范圍內(nèi),其最低的位地址等于其字節(jié)地址,且其字節(jié)地址的末位都為0H或8H。表2-5 AT89551片內(nèi)RAM的可導(dǎo)讓位及其位地位字節(jié)地址位地址D7D6D5D4D3D2DIDO2FH7FH7EH7DH7 CH7BH7 AH79H78H2EH77H76H75H74H73H72H71H7 OH2DH6FH6EH6DH6 CH6BH6 AH69H68H2CH67H66H65H64H63H62 H6LH6 OH2BH5FH5EHSDH5 CH5EH5 AH59H58H2AH57H56H

32、55H54H53H52H51H5 OH29H4FH4EH4DH4 cH4BH4 AH49H48H28 H47H46H45H44H43H42H4LH40H27H5FH3EH3DH3 CH3BH3 AH39H38H26H37H36H35H34H33H32H31H3 OH25H2FH2EH2DH2 CH2BH2 AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H特殊功能 寄存器位地址字節(jié) 地址D7D6D5D4D3D2D1D0BF7HF6HF5HF4HF3HF2HF1HF0HF0HAccE7HE6HE5HE4HE3HE2HE1H

33、E0HE0HPSWD7HD6HD5HD4HD3HD2HD1HD0HD0HIP一BCHBBHBAHB9HB8HB8HP3B7HB6HB5HB4HB3HB2HB1HB0HB0HIEAFHACHABHAAHA9HA8HA8HP2A7HA6HA5HA4HA3HA2HA1HA0HA0HSCON9FH9EH9DH9CH9BH9AH99H98H98HP197H96H95H94H93H92H91H90H90HTCON8FH8EH8DH8CH8BH8AH89H88H88HP087H86H85H84H83H82H81H80H80H作為對(duì)AT89S51存儲(chǔ)器結(jié)構(gòu)的總結(jié),圖 2-7為各類存儲(chǔ)器的結(jié)構(gòu)圖。從圖中可清楚看

34、出各類存儲(chǔ)器在存儲(chǔ) 器空間的位置。CFFFHOQOOHFFFFH外部RAM片內(nèi)ROM外部ROM片內(nèi)RAMOOOOHI外部RAM數(shù)據(jù)存儲(chǔ)器區(qū)程序存儲(chǔ)器區(qū)圖2-7 AT89S51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)AT89S51的弁行I/O 端口4個(gè)雙向的8位并行I/O端口,分別記為 P0、P1、P2和P3,其中輸出鎖存器屬于特殊功能寄存器。端口的4個(gè)端口按字節(jié)輸入/輸出外,也可位尋址。每一位均由輸出鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器組成,P0 口P0 口是一個(gè)雙功能的 8位并行端口,字節(jié)地址為80H,位地址為80H87H。端口的各位具有完全相1 .位電路結(jié)構(gòu)P0 口某一位的電路包括:1) 一個(gè)數(shù)據(jù)輸出的鎖存器,用于數(shù)

35、據(jù)位的鎖存。BUF1和讀引腳數(shù)據(jù)的輸入緩沖器2)兩個(gè)三態(tài)的數(shù)據(jù)輸入緩沖器,分別是用于讀鎖存器數(shù)據(jù)的輸入緩沖器BUF2。3) 一個(gè)多路轉(zhuǎn)接開關(guān) MUX ,它的一個(gè)輸入來(lái)自鎖存器的端,另一個(gè)輸入為地址/數(shù)據(jù)信號(hào)的反相輸出。MUX由“控制”信號(hào)控制,實(shí)現(xiàn)鎖存器的輸出和地址/數(shù)據(jù)信號(hào)之間的轉(zhuǎn)接。4)數(shù)據(jù)輸出的控制和驅(qū)動(dòng)電路,由兩個(gè)場(chǎng)效應(yīng)管(FET)組成。2.工作過(guò)程分析1) P0 口用作地址/數(shù)據(jù)總線外擴(kuò)存儲(chǔ)器或I/O時(shí),P0 口作為單片機(jī)系統(tǒng)復(fù)用的地址 /數(shù)據(jù)總線使用。當(dāng)作為地址或數(shù)據(jù)輸出時(shí),“控制”信號(hào)為1,硬件自動(dòng)使轉(zhuǎn)接開關(guān) MUX打向上面,接通反相器的輸 出,同時(shí)使與門處于開啟狀態(tài)。當(dāng)輸出的地

36、址/數(shù)據(jù)信息為1時(shí),與門輸出為1,上方的場(chǎng)效應(yīng)管導(dǎo)通,下方的場(chǎng)效應(yīng)管截止,P0.x引腳輸出為1;當(dāng)輸出的地址/數(shù)據(jù)信息為。時(shí),上方的場(chǎng)效應(yīng)管截止,下方的場(chǎng)效應(yīng)管導(dǎo)通,P0.x引腳輸出為0。 輸出電路是上、下兩個(gè)場(chǎng)效應(yīng)管形成的推拉式結(jié)構(gòu),大大提高了負(fù)載能力,上方的場(chǎng)效應(yīng)管這時(shí)起到 內(nèi)部上拉電阻的作用。當(dāng)P0 口作為數(shù)據(jù)輸入時(shí),僅從外部存儲(chǔ)器(或 I/O)讀入信息,對(duì)應(yīng)的“控制”信號(hào)為0, MUX接通鎖存器的端。由于P0 口作為地址/數(shù)據(jù)復(fù)用方式訪問(wèn)外部存儲(chǔ)器時(shí),CPU自動(dòng)向P0 口寫入FFH,使下方場(chǎng)效應(yīng)管截止,上方場(chǎng)效應(yīng)管由于控制信號(hào)為0也截止,從而保證數(shù)據(jù)信息的高阻抗輸入,從外部存儲(chǔ)器輸入的

37、數(shù)據(jù)信息直接由P0.x引腳通過(guò)輸入緩沖器 BUF2進(jìn)入內(nèi)部總線。具有高阻抗輸入的I/O 口應(yīng)具有高電平、低電平和高阻抗3種狀態(tài)的端口。因此, P0 口作為地址/數(shù)據(jù)總線使用時(shí)是一個(gè)真正的雙向端口,簡(jiǎn)稱雙向口。2) P0 口用作通用I/O 口當(dāng)P0 口不作為系統(tǒng)的地址/數(shù)據(jù)總線使用時(shí),此時(shí) P0 口也可作為通用的I/O 口使用。作通用的I/O 口時(shí),對(duì)應(yīng)的“控制”信號(hào)為0, MUX打向下面,接通鎖存器的端,“與門”輸出為0,上方場(chǎng)效應(yīng)管截止,形成的P0 口輸出電路為漏極開路輸出。P0 口作輸出口時(shí),來(lái)自 CPU的“寫”脈沖加在 D鎖存器的CP端,內(nèi)部總線上的數(shù)據(jù)寫入D鎖存器,并由引腳P0.x輸出

38、。當(dāng)D鎖存器為1時(shí),端為0,下方場(chǎng)效應(yīng)管截止,輸出為漏極開路,此時(shí),必須外接上拉電阻才能有 高電平輸出;當(dāng) D鎖存器為0時(shí),下方場(chǎng)效應(yīng)管導(dǎo)通,P0 口輸出為低電平。P0 口作輸入口使用時(shí),有兩種讀入方式:“讀鎖存器”和“讀引腳”。當(dāng)CPU發(fā)出“讀鎖存器”指令時(shí),鎖存器的狀態(tài)由Q端經(jīng)上方的三態(tài)緩沖器 BUF1進(jìn)入內(nèi)部總線;當(dāng)CPU發(fā)出“讀引腳”指令時(shí),鎖存器的輸出狀態(tài)=1 (即 端為0),而使下方場(chǎng)效應(yīng)管截止,引腳的狀態(tài)經(jīng)下方的三態(tài)緩沖器BUF2進(jìn)入內(nèi)部總線。3) P0 口的特點(diǎn)P0 口為雙功能口 地址 /數(shù)據(jù)復(fù)用口和通用I/O 口。1)當(dāng)P0 口用作地址/數(shù)據(jù)復(fù)用口時(shí),是一個(gè)真正的雙向口,輸出

39、低8位地址和輸出/輸入8位數(shù)據(jù)。2)當(dāng)P0 口用作通用I/O 口時(shí),由于需要在片外接上拉電阻,端口不存在高阻抗(懸?。顟B(tài),因此是一個(gè) 準(zhǔn)雙向口。為保證引腳信號(hào)的正確讀入,應(yīng)首先向鎖存器寫1。單片機(jī)復(fù)位后,鎖存器自動(dòng)被置1;當(dāng)P0 口由原來(lái)輸出轉(zhuǎn)變?yōu)檩斎霑r(shí),應(yīng)先置鎖存器為1,方可執(zhí)行輸入操作。P0 口大多作為地址/數(shù)據(jù)復(fù)用口使用,就不能再作為通用I/O 口使用。P1 口單功能的I/O 口,字節(jié)地址為 90H,位地址為90H97H。P1 口某一位的位電路結(jié)構(gòu)如圖 2-9所示。1 .位電路結(jié)構(gòu)P1 口位電路結(jié)構(gòu)由以下三部分組成:1 ) 一個(gè)數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。2)兩個(gè)三態(tài)的數(shù)據(jù)輸

40、入緩沖器BUF1和BUF2,分別用于讀鎖存器數(shù)據(jù)和讀引腳數(shù)據(jù)的輸入緩沖。3)數(shù)據(jù)輸出驅(qū)動(dòng)電路,由一個(gè)場(chǎng)效應(yīng)管( FET)和一個(gè)片內(nèi)上拉電阻組成。2 .工作過(guò)程分析P1 口只能作為通用的I/O 口使用。1) P1 口作輸出口時(shí),若 CPU輸出1, Q=1,=0,場(chǎng)效應(yīng)管截止,P1 口引腳的輸出為1;若CPU輸出0,Q=0,=1,場(chǎng)效應(yīng)管導(dǎo)通,P1 口引腳的輸出為0。2) P1 口作為輸入口時(shí),分為“讀鎖存器”和“讀引腳”兩種方式?!白x鎖存器”時(shí),鎖存器的輸出端 Q的狀態(tài)經(jīng)輸入緩沖器 BUF1進(jìn)入內(nèi)部總線;“讀引腳”時(shí),先向鎖存器寫 1,使場(chǎng)效應(yīng)管截止,P1.x引腳上的 電平經(jīng)輸入緩沖器 BUF2

41、進(jìn)入內(nèi)部總線。3) P1 口的特點(diǎn)由于內(nèi)部上拉電阻,無(wú)高阻抗輸入狀態(tài),故為準(zhǔn)雙向口。P1 口 “讀引腳”輸入時(shí),必須先向鎖存器寫入1。P2 口1 .位電路結(jié)構(gòu)P2 口某一位的電路包括:1) 一個(gè)數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)位的鎖存。2)兩個(gè)三態(tài)數(shù)據(jù)輸入緩沖器BUF1和BUF2 ,分別用于讀鎖存器數(shù)據(jù)和讀引腳數(shù)據(jù)的輸入緩沖。3) 一個(gè)多路轉(zhuǎn)接開關(guān) MUX , 一個(gè)輸入是鎖存器的 Q端,另一個(gè)輸入是高 8位地址。4)輸出驅(qū)動(dòng)電路,由場(chǎng)效應(yīng)管(FET)和內(nèi)部上拉電阻組成。2.工作過(guò)程分析1) P2 口用作地址總線在控制信號(hào)作用下,MUX與“地址”接通。當(dāng)“地址”為。時(shí),場(chǎng)效應(yīng)管導(dǎo)通,P2 口引腳輸出

42、為0;當(dāng)“地 址”線為1時(shí),場(chǎng)效應(yīng)管截止,P2 口引腳輸出1。2) P2 口用作通用I/O 口在內(nèi)部控制信號(hào)作用下,MUX與鎖存器的Q端接通。CPU輸出1時(shí),Q=1,場(chǎng)效應(yīng)管截止,P2.x引腳輸出1; CPU輸出0時(shí),Q=0,場(chǎng)效應(yīng)管導(dǎo)通,P2.x引腳輸出0。P2 口輸入時(shí),分 “讀鎖存器”和“讀引腳”兩種方式 :“讀鎖存器”時(shí),Q端信號(hào)經(jīng)輸入緩沖器 BUF1進(jìn)入內(nèi)部總線“讀引腳”時(shí),先向鎖存器寫1,使場(chǎng)效應(yīng)管截止,P2.x引腳上的電平經(jīng)輸入緩沖器BUF2進(jìn)入內(nèi)部總線。3) P2 口的特點(diǎn)作為地址輸出線時(shí),P2 口高8位地址,P0 口輸出的低8位地址尋址64KB地址空間。作為通用I/O 口時(shí),

43、P2 口為準(zhǔn)雙向口。功能與 P1 口一樣。一般情況下,P2 口大多作為高8位地址總線口使用,這時(shí)就不能再作為通用I/O 口。P3 口由于引腳數(shù)目有限,在 P3 口增加了第二功能。每 1位都可以分別定義為第二輸入功能或第二輸出功能。P3口字節(jié)地址為 B0H,位地址B0HB7H。P3 口某一位的位電路結(jié)構(gòu)見圖 2-11。1 .位電路結(jié)構(gòu)P3 口某一位的電路包括:1) 1個(gè)數(shù)據(jù)輸出鎖存器,鎖存輸出數(shù)據(jù)位。2) 3個(gè)三態(tài)數(shù)據(jù)輸入緩沖器 BUF1、BUF2和BUF3 ,分別用于讀鎖存器、讀引腳數(shù)據(jù)和第二功能數(shù)據(jù)的輸3) 工作過(guò)程分析1) P3 口用作第二輸入/輸出功能當(dāng)選擇第二輸出功能時(shí),該位的鎖存器需

44、要置1,使與非門為開啟狀態(tài)。當(dāng)?shù)诙敵鰹?時(shí),場(chǎng)效應(yīng)管截止,P3.x引腳輸出為1;當(dāng)?shù)诙敵鰹?。時(shí),場(chǎng)效應(yīng)管導(dǎo)通,P3.x引腳輸出為0。當(dāng)選擇第二輸入功能時(shí),該位的鎖存器和第二輸出功能端均應(yīng)置1,保證場(chǎng)效應(yīng)管截止,P3.x引腳的信息由輸入緩沖器BUF3的輸出獲得。2) P3 口用作第一功能一一通用I/O 口用作第一功能通用輸出時(shí),第二輸出功能端應(yīng)保持高電平,與非門開啟。CPU輸出1時(shí),Q=1,場(chǎng)效應(yīng)管截止,P3.x引腳輸出為1; CPU輸出0時(shí),Q=0,場(chǎng)效應(yīng)管導(dǎo)通,P3.x引腳輸出為0。用作第一功能通用輸入時(shí),P3.x位的輸出鎖存器和第二輸出功能均應(yīng)置1,場(chǎng)效應(yīng)管截止,P3.x引腳信息通過(guò)輸

45、入BUF3和BUF2進(jìn)入內(nèi)部總線,完成“讀引腳”操作。當(dāng)P3 口第一功能通用輸入時(shí),也可執(zhí)行“讀鎖存器”操作,此時(shí)Q端信息經(jīng)過(guò)緩沖器 BUF1進(jìn)入內(nèi)部總線。3) P3 口的特點(diǎn)P3 口內(nèi)部有上拉電阻,無(wú)高阻抗輸入態(tài) -準(zhǔn)雙向口。 P3 口作為第二功能的輸出/輸入,或第一功能通用 輸入,均須將相應(yīng)位的鎖存器置 1。實(shí)際應(yīng)用中,由于復(fù)位后 P3 口鎖存器自動(dòng)置1,滿足第二功能所需的 條件,所以不需任何設(shè)置工作,就可以進(jìn)入第二功能操作。當(dāng)某位不作為第二功能用時(shí),可作為第一功能通用I/O使用。引腳輸入部分有兩個(gè)緩沖器,第二功能的輸入信號(hào)取自緩沖器BUF3的輸出端,第一功能的輸入信號(hào)取自緩沖器BUF2的

46、輸出端。P3 口的第二功能定義見表 2-1,讀者應(yīng)熟記。P1P3 口驅(qū)動(dòng)LED發(fā)光二極管P0 口與P1、P2、P3 口相比,P0 口的驅(qū)動(dòng)能力較大,每位可驅(qū)動(dòng)8個(gè)LSTTL輸入,而P1、P2、P3 口的每一位的驅(qū)動(dòng)能力,只有 P0 口的一半。當(dāng)P0 口某位為高電平時(shí),可提供 400 A的電流;當(dāng)P0 口某位為低電平(0.45V)時(shí),可提供3.2mA 的灌電流。如低電平允許提高,灌電流可相應(yīng)加大。所以,任何一個(gè)口要想獲得較大的驅(qū)動(dòng)能力,只能用低電平 輸出。例如,使用單片機(jī)的并行口 P1P3直接驅(qū)動(dòng)發(fā)光二極管,電路如圖2-12。由于P1P3內(nèi)部有30kQ左右的上拉電阻。如高電平輸出,則強(qiáng)行從 P1

47、、P2和P3 口輸出的電流Id會(huì)造成單片機(jī)端口的損壞,如圖 2-12 (a)所 示。如端口引腳為低電平, 能使電流Id從單片機(jī)外部流入內(nèi)部, 則將大大增加流過(guò)的電流值,如圖2-12(b)所示。所以,當(dāng)P1P3 口驅(qū)動(dòng)LED發(fā)光二極管時(shí),應(yīng)該采用低電平驅(qū)動(dòng)。4-5 Vc引腳ZTJ(a)不恰當(dāng)?shù)倪B接:高電平驅(qū)動(dòng)圖2-12發(fā)光二極管與(b)恰當(dāng)?shù)倪B接:低電平驅(qū)動(dòng)AT89S51并行口的直接連接AT89s51時(shí)鐘電路與時(shí)序時(shí)鐘電路產(chǎn)生AT89S51工作時(shí)所必需的控制信號(hào),在時(shí)鐘信號(hào)的控制下,嚴(yán)格按時(shí)序執(zhí)行指令。執(zhí)行指令時(shí),CPU首先到程序存儲(chǔ)器中取出需要執(zhí)行的指令操作碼,然后譯碼,并由時(shí)序電路產(chǎn)生一 系

48、列控制信號(hào)完成指令所規(guī)定的操作。CPU發(fā)的時(shí)序信號(hào)兩類,一類用對(duì)片內(nèi)各個(gè)功能部件控制,用戶無(wú)須了解;另一類用于對(duì)片外存儲(chǔ)器或I/O 口的控制,這部分時(shí)序?qū)τ诜治?、設(shè)計(jì)硬件接口電路至關(guān)重要。 時(shí)鐘電路設(shè)計(jì)時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路 有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。1 .內(nèi)部時(shí)鐘方式XTAL1 ,輸出端為引腳2-13 是 AT89S51 內(nèi)AT89S51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,輸入端為芯片引腳XTAL2 。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,圖外部振蕩轅 信號(hào)懸空A

49、TS9S51GND圖2-14 AT89S51的外部時(shí)鐘方式電路C1和C2的典型值通常選擇為 30pF。電容大小會(huì)影響振蕩器頻率高低、振蕩器的穩(wěn)定性和起振的快速性。 晶振頻率范圍通常是 1.212MHz。晶體頻率越高,單片機(jī)速度就越快。速度快對(duì)存儲(chǔ)器的速度要求就高, 印制電路板的工藝要求也高,即線間的寄生電容要小。晶體和電容應(yīng)盡可能與單片機(jī)靠近,以減少寄生電 容,保證振蕩器穩(wěn)定、可靠地工作。為提高溫度穩(wěn)定性,采用溫度穩(wěn)定性能好的電容。常選6MHz或12MHz的石英晶體。隨著集成電路制造工藝技術(shù)的發(fā)展,單片機(jī)的時(shí)鐘頻率也在逐步提高, 已達(dá)33MHz。2 .外部時(shí)鐘方式用現(xiàn)成的外部振蕩器產(chǎn)生脈沖信號(hào)

50、,常用于多片AT89S51同時(shí)工作,以便于多片 AT89S51單片機(jī)之間的同步,一般為低于 12MHz的方波。外部時(shí)鐘源直接接到XTAL1端,XTAL2端懸空,見圖2-14。機(jī)器周期、指令周期與指令時(shí)序各種指令時(shí)序與時(shí)鐘周期相關(guān)。1 .時(shí)鐘周期時(shí)鐘控制信號(hào)的基本時(shí)間單位。若晶振頻率為fosc,則時(shí)鐘周期 Tosc=1/fosc。如fosc=6MHz , Tosc=166.7ns。2 .機(jī)器周期CPU完成一個(gè)基本操作所需時(shí)間為機(jī)器周期。執(zhí)行一條指令分為幾個(gè)機(jī)器周期。每個(gè)機(jī)器周期完成一個(gè)基本操作,如取指令、讀或?qū)憯?shù)據(jù)等。每12個(gè)時(shí)鐘周期為1個(gè)機(jī)器周期。1個(gè)機(jī)器周期包括 12個(gè)時(shí)鐘周期,分 6個(gè)狀態(tài)

51、:S1S6。每個(gè)狀態(tài)又分兩拍:P1和P2。因此,一個(gè)機(jī)器周期中的12個(gè)時(shí)鐘周期表示為 S1P1、S1P2、S2P1、S2P2、S6P2,如圖2-16所示。SI I S2 I S3 I S4 I S5 I S6 I SI I S2 I S3 I S4 I S5 I S6 I S1Pl Pz|pi P2|pi P2卜】理卜1 Pa|pi P2卜 1 P2|pi P2卜】P2|pi P2)Pl P2)P1 P2卜】ALE -j_I圖2-16 AT89S51的機(jī)器周期3 .指令周期執(zhí)行一條指令所需的時(shí)間。簡(jiǎn)單的單字節(jié)指令,取出指令立即執(zhí)行,只需一個(gè)機(jī)器周期的時(shí)間。而有些復(fù)雜的指令,如轉(zhuǎn)移、乘、除指令則

52、需兩個(gè)或多個(gè)機(jī)器周期。從指令執(zhí)行時(shí)間看:?jiǎn)巫止?jié)和雙字節(jié)指令一般為單機(jī)器周期和雙機(jī)器周期;三字節(jié)指令都是雙機(jī)器周期 ;乘、除指令占用 4個(gè)機(jī)器周期。復(fù)位操作和復(fù)位電路單片機(jī)的初始化操作,給復(fù)位腳RST加上大于2個(gè)機(jī)器周期(即24個(gè)時(shí)鐘振蕩周期)的高電平就使 AT89S51 復(fù)位操作復(fù)位時(shí),PC初始化為0000H,程序從0000H單元開始執(zhí)行。除系統(tǒng)的正常初始化外,當(dāng)程序出錯(cuò)(如程序跑飛)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),需按復(fù)位鍵使RST腳為高電平,使 AT89S51擺脫“跑飛”或“死鎖”狀態(tài)而重新啟動(dòng)程序。復(fù)位操作還對(duì)其他一些寄存器有影響,這些寄存器復(fù)位時(shí)的狀態(tài)見表2-7。由表2-7可看出,復(fù)位時(shí),SP=07H ,而P0P3引腳均為高電平。在某些控制應(yīng)用中,要注意考慮P0P3引腳的高電平對(duì)接在這些引腳上的外部電路的影響。例如,當(dāng)P1 口某個(gè)引腳外接一個(gè)繼電器繞組,當(dāng)復(fù)位時(shí),該引腳為高電平,繼電器繞組就會(huì)有電流通過(guò),就會(huì)吸合繼電器開關(guān),使開關(guān)接通,可能會(huì)引起意想不到的后果。表2: 復(fù)位E寸

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論