- 單片機(jī)原理、應(yīng)用與仿真
- 荊珂 張樹江主編
- 5911字
- 2018-12-27 05:39:20
1.2 AT89S51單片機(jī)結(jié)構(gòu)
1.2.1 AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)及引腳功能
1.AT89S51內(nèi)部結(jié)構(gòu)
AT89S51單片機(jī)芯片內(nèi)除了有CPU、存儲(chǔ)器、I/O端口外,還包括定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)、時(shí)鐘電路等。AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)如圖1-2所示。
由圖1-2可知,AT89S51單片機(jī)由以下部分組成。
●一個(gè)以ALU為中心的8位微處理器(CPU),完成運(yùn)算和控制功能。
●4KBFlash片內(nèi)程序存儲(chǔ)器(ROM),用來存儲(chǔ)程序、原始數(shù)據(jù)、表格等。
●片內(nèi)低128B的數(shù)據(jù)存儲(chǔ)器(RAM),其地址范圍為00H~7FH。
●片內(nèi)26個(gè)特殊功能寄存器(SFR),離散分布于地址80H~FFH中。
●4個(gè)8位并行I/O接口(P0~P3)。
●1個(gè)全雙工異步串行口。
●2個(gè)16位定時(shí)器/計(jì)數(shù)器。
●5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)。
●一個(gè)片內(nèi)振蕩器和時(shí)鐘電路。
●程序計(jì)數(shù)器PC,是一個(gè)獨(dú)立的16位專用寄存器,其內(nèi)容為將要執(zhí)行的指令地址。
●看門狗(WDT)電路。
2.AT89S51單片機(jī)的信號(hào)引腳
AT89S51的引腳結(jié)構(gòu)有雙列直插封裝(PDIP形式)和方形封裝(PLCC、TQFP形式),其引腳排列如圖1-3所示。

圖1-2 AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)圖

圖1-3 AT89S51封裝引腳圖

圖1-3 AT89S51封裝引腳圖(續(xù))
這里僅介紹PDIP40封裝,其引腳按其功能可分為電源、時(shí)鐘、控制和I/O接口4大部分。
(1)電源引腳VCC和GND
①VCC(40腳):接+5V電源。
②GND(20腳):接地。
(2)時(shí)鐘電路引腳XTALl和XTAL2
①XTALl(19腳):接外部石英晶振和微調(diào)電容一端。在片內(nèi),它是振蕩器倒相放大器的輸入。若使用外部時(shí)鐘時(shí),該引腳必須接地。
②XTAL2(18腳):接外部石英晶振和微調(diào)電容的另一端。在片內(nèi),它是振蕩器倒相放大器的輸出。若使用外部時(shí)鐘時(shí),該引腳作為外部時(shí)鐘的輸入端。
(3)控制引腳RST/VPD、
和
①RST/VPD(9腳):復(fù)位信號(hào)輸入端,高電平有效。在此輸入端保持2個(gè)機(jī)器周期的高電平后,就可以完成復(fù)位操作。在單片機(jī)正常工作時(shí),此引腳應(yīng)為低電平。VCC掉電期間,該引腳可接上備用電源(VPD)以保持內(nèi)部RAM的數(shù)據(jù)。
②(29腳):程序存儲(chǔ)允許輸出端,是片外程序存儲(chǔ)器的讀選通信號(hào),低電平有效。CPU從外部程序存儲(chǔ)器讀取指令時(shí),
在每個(gè)機(jī)器周期中兩次有效,但在訪問片外存儲(chǔ)器或訪問內(nèi)部程序存儲(chǔ)器讀取指令時(shí),
無效。此引腳接外部ROM的輸出允許
)端。
③(30腳):訪問地址鎖存控制信號(hào)/編程脈沖輸入端。在擴(kuò)展系統(tǒng)時(shí),ALE用于把P0口輸出的低8位地址鎖存起來,以實(shí)現(xiàn)低8位地址和數(shù)據(jù)的隔離。P0口作為數(shù)據(jù)地址復(fù)用口線,當(dāng)訪問單片機(jī)外部程序、數(shù)據(jù)存儲(chǔ)器或外接I/O口時(shí),ALE輸出脈沖的下降沿用于低8位地址的鎖存信號(hào);即使不訪問單片機(jī)外部程序、數(shù)據(jù)存儲(chǔ)器或外接I/O口,ALE端口仍然以晶振頻率的1/6輸出正脈沖信號(hào),因此可作為外部時(shí)鐘或外部定時(shí)信號(hào)使用。但應(yīng)注意,此時(shí)不能訪問單片機(jī)外部程序、數(shù)據(jù)存儲(chǔ)器或外設(shè)I/O接口。ALE端可以驅(qū)動(dòng)8個(gè)TTL負(fù)載。在對(duì)Flash存儲(chǔ)器編程期間,該引腳用來輸入一個(gè)編程脈沖
。
④(31腳):訪問程序存儲(chǔ)器控制信號(hào)/編程電源輸入端。當(dāng)該引腳
信號(hào)為低電平時(shí),無論片內(nèi)是否有程序存儲(chǔ)器,只訪問片外程序存儲(chǔ)器;當(dāng)該引腳為高電平時(shí),單片機(jī)訪問片內(nèi)的程序存儲(chǔ)器。但對(duì)AT89S51來說,當(dāng)程序計(jì)數(shù)器(PC)值超出4KB地址時(shí),自動(dòng)轉(zhuǎn)到片外程序存儲(chǔ)器1000H開始順序讀取指令。在Flash編程期間,該引腳用于施加+12V的編程電壓(VPP)。
(4)I/O接口引腳(32個(gè),分成4個(gè)8位并行口)
①P0.0~P0.7(P0口):通用I/O口引腳或低8位地址總線復(fù)用引腳。在Flash編程時(shí),P0口作為原碼輸入口,當(dāng)Flash進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
②P1.0~P1.7(P1口):通用I/O口引腳。在Flash編程和校驗(yàn)時(shí),P1口接收低8位地址。
③P2.0~P2.7(P2口):通用I/O口引腳或高8位地址總線引腳。P2口在Flash編程和校驗(yàn)時(shí)接收高8位地址信號(hào)和控制信號(hào)。
④P3.0~P3.7(P3口):一般I/O口引腳或第二功能引腳。P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
1.2.2 AT89S51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)
存儲(chǔ)器功能用于存儲(chǔ)程序和數(shù)據(jù)。存儲(chǔ)器按其存取方式可以分成兩大類,一類是隨機(jī)存取存儲(chǔ)器(RAM);另一類是只讀存儲(chǔ)器(ROM)。
1.程序存儲(chǔ)器ROM
AT89S51片內(nèi)有4KB的FlashROM,用于存放用戶的目標(biāo)程序和表格常數(shù),所以又簡(jiǎn)稱“程序內(nèi)存”。當(dāng)程序內(nèi)存不夠用時(shí),可擴(kuò)展片外ROM,最大擴(kuò)展范圍為0000H~FFFFH(即64KB),其配置如圖1-4(a)所示。

圖1-4 AT89S51程序存儲(chǔ)器配置
低4KB地址的程序可以存儲(chǔ)在片內(nèi)FlashROM中,也可以存儲(chǔ)在片外ROM中。片內(nèi)ROM與片外ROM低4KB的地址重疊,執(zhí)行選擇由引腳來控制。當(dāng)
引腳信號(hào)為低電平,復(fù)位后,單片機(jī)從片外ROM中的0000H地址單元開始執(zhí)行程序。當(dāng)
為高電平,復(fù)位后,單片機(jī)從片內(nèi)ROM中的0000H地址單元開始執(zhí)行程序,當(dāng)PC值大于0FFFH(4KB)時(shí),系統(tǒng)自動(dòng)轉(zhuǎn)到片外ROM中執(zhí)行程序。
程序存儲(chǔ)器低端的一些地址被固定作為特定的入口地址,見圖1-4(b)。是單片機(jī)的5個(gè)中斷服務(wù)子程序的入口地址,相鄰中斷入口地址間的間隔為8B,如表1-2所示。
表1-2 各種中斷服務(wù)子程序的入口地址
編程序時(shí)一般在這些入口地址開始的單元中存放一條轉(zhuǎn)移指令,轉(zhuǎn)移到相應(yīng)的中斷服務(wù)程序處。如果中斷服務(wù)程序少于8B,可以將中斷服務(wù)程序直接存放到相應(yīng)入口地址開始的幾個(gè)單元中。如果沒有用到中斷功能,那么這些單元也可作為一般用途的程序存儲(chǔ)器。
2.數(shù)據(jù)存儲(chǔ)器RAM
數(shù)據(jù)存儲(chǔ)器分為片外RAM和片內(nèi)RAM。片外RAM最大可擴(kuò)展64KB,地址范圍為0000~FFFFH;片內(nèi)RAM可分為兩個(gè)不同的存儲(chǔ)空間,即低128B單元的數(shù)據(jù)存儲(chǔ)器空間和高128B單元的特殊功能寄存器SFR的存儲(chǔ)器空間。對(duì)于增強(qiáng)型單片機(jī),數(shù)據(jù)存儲(chǔ)器容量為256B,其結(jié)構(gòu)如圖1-5所示。

圖1-5 AT89S51數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu)
(1)片內(nèi)RAM低128B單元
片內(nèi)RAM低128B單元分為工作寄存器區(qū)、位尋址區(qū)、用戶RAM區(qū)3部分,其結(jié)構(gòu)如圖1-6所示。
①工作寄存器區(qū)。AT89S51單片機(jī)內(nèi)部低32B單元分成4個(gè)工作寄存器組,每組占8個(gè)單元,分別用R0~R7來表示。單片機(jī)運(yùn)行時(shí)只能允許1個(gè)工作寄存器組作為當(dāng)前工作寄存器組。

圖1-6 片內(nèi)RAM低128B配置圖
當(dāng)前工作寄存器組的選擇由特殊功能寄存器中的程序狀態(tài)字寄存器PSW的RS1、RS0位來決定,選擇方法如表1-3所示。
表1-3 當(dāng)前工作寄存器組的選擇方法
②位尋址區(qū)。AT89S51單片機(jī)具有位處理功能,因此存儲(chǔ)空間有一個(gè)位尋址區(qū),位于片內(nèi)RAM的20H~2FH單元中,16個(gè)單元共128位,其位地址范圍為00H~7FH。該區(qū)也可以作為普通的RAM單元使用,進(jìn)行字節(jié)操作。
③用戶RAM區(qū)。30H~7FH單元作為用戶RAM區(qū)。在實(shí)際應(yīng)用中這些單元作為數(shù)據(jù)緩沖區(qū),AT89S51的堆棧一般設(shè)在30H~7FH范圍內(nèi)。
(2)片內(nèi)RAM高128B
片內(nèi)RAM高128B單元稱為特殊功能寄存器區(qū)(SpecialFunctionRegister)。由于這些寄存器的功能已專門規(guī)定,故稱為特殊功能寄存器(SFR)。
AT89C51單片機(jī)有21個(gè)特殊功能寄存器。AT89S51的特殊功能寄存器,除與AT89C51相同的外,還增加了5個(gè)與增加功能相關(guān)的特殊功能寄存器。它們分散在80H~FFH地址中,字節(jié)地址能被8整除(字節(jié)地址末位為0H或8H)的特殊功能寄存器可以進(jìn)行位尋址。26個(gè)特殊功能寄存器地址分配如表1-4所示。
表1-4 特殊功能寄存器位地址及字節(jié)地址表
注:帶*者為AT89S51增加的特殊功能寄存器
①累加器A:A是8位寄存器,字節(jié)地址為E0H。它是CPU中工作最繁忙的寄存器,CPU的大多數(shù)指令都要通過累加器A與其他部分交換信息。累加器A常用于存放使用次數(shù)高的操作數(shù)或中間結(jié)果。在指令系統(tǒng)中,累加器A的助記符為“A”或“ACC”。
②通用寄存器B:乘除法指令中要用的通用寄存器,也可用做一般寄存器。
③程序狀態(tài)字寄存器PSW:程序狀態(tài)字用于存放程序運(yùn)行狀態(tài)信息,各標(biāo)志位如表1-5所示。
表1-5 程序狀態(tài)字
其中每位的具體含義如下。
CY:進(jìn)位標(biāo)志,常用C表示。在進(jìn)行加、減法運(yùn)算時(shí),若運(yùn)算結(jié)果最高位有進(jìn)位(或借位)時(shí),C置“1”,否則置“0”;在進(jìn)行位操作時(shí),C作為位操作累加器。
AC:半進(jìn)位標(biāo)志。在進(jìn)行加、減法運(yùn)算時(shí),若低半字節(jié)向高半字節(jié)有進(jìn)位(或借位)時(shí),AC置“1”,否則置“0”;AC還作為BCD碼運(yùn)算調(diào)整時(shí)的判別位。
F0:用戶標(biāo)志。由用戶置位、復(fù)位,作為軟件標(biāo)志。
RS1、RS0:工作寄存器指針,用來選擇當(dāng)前工作的寄存器組。
單片機(jī)復(fù)位時(shí),RS1RS0=00,CPU選中第0組為當(dāng)前工作寄存器。
OV:溢出標(biāo)志。反映運(yùn)算結(jié)果是否溢出,溢出時(shí)OV為“1”,否則為“0”。溢出和進(jìn)位是兩種不同性質(zhì)的概念。溢出是指有符號(hào)數(shù)的兩個(gè)數(shù)運(yùn)算時(shí),結(jié)果超出了-128~+127;而進(jìn)位是指兩個(gè)數(shù)最高位相加(或相減)時(shí)有進(jìn)位(或借位)。
例如,兩個(gè)正數(shù)相加超過+127,則產(chǎn)生了溢出,使符號(hào)位由正變?yōu)樨?fù),結(jié)果出錯(cuò),這時(shí)OV=1;又如兩個(gè)負(fù)數(shù)相加,結(jié)果小于-128,產(chǎn)生了溢出,結(jié)果也是出錯(cuò),OV=l。
常用的判別方法是:兩個(gè)有符號(hào)數(shù)在進(jìn)行加、減法運(yùn)算時(shí),D6或D7中僅有1位發(fā)生進(jìn)位(或借位)現(xiàn)象,則OV=1;D6、D7位都沒進(jìn)位(或借位)或都有進(jìn)位(或借位),則OV=0。
P:奇偶標(biāo)志。反映累加器A中內(nèi)容的奇偶性。若A中有奇數(shù)個(gè)“1”,則P置為“1”,否則P置為“0”。此標(biāo)志位對(duì)串行口通信中的數(shù)據(jù)傳輸有重要的意義,在串行通信中,常用奇偶檢驗(yàn)的方法來檢驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
④堆棧指針SP(StackPointer):SP在片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM128B中開辟堆棧區(qū),并隨時(shí)跟蹤棧頂?shù)刂贰K前聪冗M(jìn)后出的原則存取數(shù)據(jù)的,開機(jī)復(fù)位后,SP為07H。
⑤數(shù)據(jù)指針DPTR:由于AT89S51單片機(jī)可以外接64KB的數(shù)據(jù)存儲(chǔ)器和I/O接口電路,故單片機(jī)內(nèi)設(shè)置了16位的數(shù)據(jù)指針DPTR。它可以對(duì)64KB的片外數(shù)據(jù)存儲(chǔ)器和I/O進(jìn)行尋址。它的高8位為DPH,地址為83H;低8位為DPL,地址為82H。
AT89S51有兩個(gè)數(shù)據(jù)指針DPTR,由輔助寄存器1(AUXR1)的最低位DPS確定選擇其一。
⑥程序計(jì)數(shù)器PC(ProgramCounter):16位的PC不屬于特殊功能寄存器。其存放的內(nèi)容是下一個(gè)要取的指令的16位存儲(chǔ)單元地址。也就是說,CPU總是把PC的內(nèi)容作為地址,從ROM中取出指令,然后執(zhí)行,每取出一條指令后,PC的值自動(dòng)加1。
⑦輔助寄存器AUXR:輔助寄存器用于使能控制,控制位的含義如下。
DISALE:ALE使能。DISALE=0時(shí),ALE輸出1/6振蕩頻率的脈沖;DISALE=1時(shí),ALE僅在執(zhí)行MOVX、MOVC指令時(shí)有效。
DISRTO:看門狗溢出復(fù)位使能。DISRTO=0時(shí),看門狗溢出復(fù)位引腳RST至高電平;DISRTO=1時(shí),RST只作為輸入。
WDIDLE:空閑模式下的看門狗使能。WDIDLE=0時(shí),在空閑模式下看門狗繼續(xù)計(jì)數(shù);WDIDLE=1時(shí),在空閑模式下看門狗停止計(jì)數(shù)。
(3)片外RAM
AT89S51的片內(nèi)RAM不夠用時(shí),可擴(kuò)展片外數(shù)據(jù)存儲(chǔ)器RAM,最大范圍為0000H~FFFFH,共64KB。且片內(nèi)RAM與片外RAM低128B地址也重疊,由于對(duì)片內(nèi)RAM、片外RAM的操作使用了不同指令(MOV、MOVX),這樣就不會(huì)發(fā)生混亂。
另外,單片機(jī)應(yīng)用系統(tǒng)擴(kuò)展的外部I/O端口與片外RAM是統(tǒng)一編址的,地址范圍為0000H~FFFFH。因此CPU將系統(tǒng)擴(kuò)展的外部I/O端口與片外RAM完全一樣對(duì)待,并采用相同的指令。
1.2.3 AT89S51單片機(jī)的并行端口結(jié)構(gòu)
AT89S51共有4個(gè)8位的I/O口,分別記作P0、Pl、P2、P3。每個(gè)口都包含一個(gè)鎖存器、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。4個(gè)I/O口都是8位雙向口,這些口在結(jié)構(gòu)和特性上基本相同,但又各具特點(diǎn),下面分別介紹各I/O接口及功能。
1.P0口
P0口的位結(jié)構(gòu)如圖1-7所示。它包含1個(gè)數(shù)據(jù)輸出鎖存器、2個(gè)三態(tài)數(shù)據(jù)輸入緩沖器及驅(qū)動(dòng)電路和控制電路。在訪問外部存儲(chǔ)器時(shí),P0口是一個(gè)真正的雙向口,當(dāng)P0口輸出地址/數(shù)據(jù)信息時(shí),控制信號(hào)“1”,使模擬開關(guān)MUX把地址/數(shù)據(jù)信息經(jīng)反相器和VT2接通,同時(shí)打開與門,輸出的地址/數(shù)據(jù)信息即通過與門去驅(qū)動(dòng)VT1,再通過反相器去驅(qū)動(dòng)VT2,使兩個(gè)FET管構(gòu)成推拉輸出電路。若地址/數(shù)據(jù)信息為“0”,則該信號(hào)使VT1截止,使VT2導(dǎo)通,從而引腳上輸出相應(yīng)的“1”信號(hào)。若地址/數(shù)據(jù)信息為“1”,則VT2截止,使VT1導(dǎo)通,引腳上輸出“1”信號(hào)。若由P0口輸入數(shù)據(jù),則輸入信號(hào)從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。

圖1-7 P0口的位結(jié)構(gòu)
當(dāng)P0口作為通用I/O接口使用時(shí),CPU內(nèi)部發(fā)控制信號(hào)“0”封鎖與門,使VT1截止,同時(shí)使模擬開關(guān)MUX把鎖存器的西端與VT2的柵極接通。當(dāng)P0作為輸出時(shí),由于端和VT2的倒相作用,內(nèi)部總線上的信號(hào)與到達(dá)P0口上的信息是同相位的,只要寫脈沖加到鎖存器的CP端,內(nèi)部總線上的信息就送到P0的引腳上。此時(shí)VT2為漏極開路輸出,故需外接上拉電阻。當(dāng)P0口作為輸入時(shí),由于該信號(hào)既加到VT2,又加到下面一個(gè)三態(tài)緩沖器上。假若此前該口曾輸出鎖存數(shù)據(jù)“0”,則VT2導(dǎo)通,引腳上的電位就被VT2鉗在“0”電平上,使輸入的“1”無法讀入。故作為通用I/O接口使用時(shí),P0口是一個(gè)準(zhǔn)雙向口,即輸入數(shù)據(jù)前,應(yīng)先通過寫鎖存器向D端寫“1”,
輸出為“0”,使VT2截止。但在訪問外部存儲(chǔ)器期間,CPU會(huì)自動(dòng)向P0的鎖存器寫入“l(fā)”。所以對(duì)用戶而言,P0口作為地址/數(shù)據(jù)總線時(shí),則是一個(gè)真正的雙向口。
P0口特點(diǎn)如下:
●P0口地址為80H,可以進(jìn)行位操作。
●P0口既可以作為數(shù)據(jù)/低8位地址總線,也可以作為通用I/O口使用。
●P0口采用漏極開路輸出作通用I/O口時(shí),要接上拉電阻,可以推動(dòng)8個(gè)LSTTL電路。
●P0口作為輸入時(shí),必須將P0口先置1。
2.P1口
P1口的位結(jié)構(gòu)如圖1-8所示。P1口是一個(gè)準(zhǔn)雙向口,專供用戶使用。作為通用I/O接口使用時(shí),其內(nèi)部有上拉電阻與電源相連,故不必再外接上拉電阻。當(dāng)做輸入時(shí),必須先向?qū)?yīng)的鎖存器寫“1”,使VT截止。原理同P0口作為通用I/O接口類似。

圖1-8 P1口的位結(jié)構(gòu)
P1口特點(diǎn)如下:
●P1口只能作為通用I/O口使用。
●P1口作為輸入時(shí),必須將P1口置1。
●P1口無需接上拉電阻,可以推動(dòng)4個(gè)LSTTL電路。
3.P2口
P2口的位結(jié)構(gòu)如圖1-9所示。P2口也是一個(gè)準(zhǔn)雙向口,其位結(jié)構(gòu)與P0口類似,當(dāng)系統(tǒng)中有片外存儲(chǔ)器時(shí),P2口用于輸出高8位地址。此時(shí),MUX在CPU控制下,接通地址信號(hào),而P2口在作為通用I/O口使用時(shí),MUX接通鎖存器,使需要輸出的數(shù)據(jù)送到P2的引腳上。同樣,若P2口作為輸入口時(shí),首先應(yīng)對(duì)鎖存器寫“l(fā)”,使輸出端的VT截止。

圖1-9 P2口的位結(jié)構(gòu)
P2口特點(diǎn)如下:
●P2口可以作為高8位地址線,也可以作為通用I/O口。
●P2作為通用I/O口作為輸出時(shí),由于內(nèi)部集成了上拉電阻,無需再接上拉電阻,可以推動(dòng)4個(gè)LSTTL電路。
●P1口無需接上拉電阻就可以推動(dòng)4個(gè)LSTTL電路。
●輸入時(shí),P2口必須置1。
4.P3口
P3口的位結(jié)構(gòu)如圖1-10所示。P3口是一個(gè)雙功能口,它既可以作為通用I/O接口使用,又具有第二功能。當(dāng)做通用I/O接口使用時(shí),每位都可定義為輸入或輸出,且是一個(gè)準(zhǔn)雙向口。
由圖1-10可見,當(dāng)P3口作為通用輸出口使用時(shí),選擇輸出功能端應(yīng)為“l(fā)”,使鎖存器的信號(hào)能順利傳送到引腳。同樣,若需用于第二功能作專用信號(hào)輸出時(shí)(如送出等),則該位鎖存器的Q端置“l(fā)”,使RD、WR等信號(hào)順利傳送到引腳。而對(duì)輸入而言,無論該位是作為通用輸入口或作為第二功能輸入口,相應(yīng)的鎖存器和選擇輸出功能端都應(yīng)置“1”,這個(gè)工作在開機(jī)復(fù)位時(shí)自動(dòng)完成。
圖1-10中輸入通道中有兩個(gè)緩沖器,第二功能的專用輸入信號(hào)(如RXD)取自第一個(gè)緩沖器輸出端,通用輸入信號(hào)取自“讀引腳”緩沖器的輸出端。

圖1-10 P3口的位結(jié)構(gòu)
當(dāng)P3口工作于第二功能時(shí),各位的定義如表1-6所示。
表1-6 P3口的第二功能定義
1.2.4 看門狗定時(shí)器
看門狗定時(shí)器為WDT。WDT是CPU遭遇軟件混亂時(shí)的恢復(fù)方法。由一個(gè)14位的計(jì)數(shù)器和看門狗復(fù)位SFR(WDTRST)構(gòu)成。當(dāng)退出復(fù)位后,WDT默認(rèn)為關(guān)閉狀態(tài)。要打開WDT,需依次將01EH、0E1H寫入到WDTRST中。當(dāng)開啟了WDT,它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)數(shù)。除硬件復(fù)位或WDT復(fù)位外,沒有其他方法關(guān)閉WDT,當(dāng)WDT溢出,將使RST引腳輸出高電平的復(fù)位脈沖。
啟動(dòng)看門狗定時(shí)器WDT時(shí),為避免因WDT溢出而復(fù)位,在其溢出前(計(jì)數(shù)<16384)應(yīng)將01EH、0E1H寫入到WDTRST,稱為喂狗。在合適的程序代碼時(shí)間段,需要周期性地喂狗,以防溢出而復(fù)位。具體應(yīng)用見附錄A。
- 零起步輕松學(xué)單片機(jī)技術(shù)(第2版)
- Java編程全能詞典
- 虛擬儀器設(shè)計(jì)測(cè)控應(yīng)用典型實(shí)例
- 軟件架構(gòu)設(shè)計(jì)
- Excel 2007函數(shù)與公式自學(xué)寶典
- Learning Social Media Analytics with R
- 最簡(jiǎn)數(shù)據(jù)挖掘
- AWS Administration Cookbook
- Ruby on Rails敏捷開發(fā)最佳實(shí)踐
- Mastering Geospatial Analysis with Python
- Hands-On SAS for Data Analysis
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)實(shí)訓(xùn)·職業(yè)模塊
- Hands-On Agile Software Development with JIRA
- 開放自動(dòng)化系統(tǒng)應(yīng)用與實(shí)戰(zhàn):基于標(biāo)準(zhǔn)建模語言IEC 61499
- iLike就業(yè)SQL多功能教材