版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)原理及接口技術(shù)設(shè)計(jì)者:劉艷玲第5版§2.189C51/S51單片機(jī)芯片內(nèi)部結(jié)構(gòu)及特點(diǎn)§2.2 89C51/S51單片機(jī)引腳及其功能§2.3 89C51/S51單片機(jī)存儲(chǔ)器配置§2.4 時(shí)鐘電路及89C51/S51CPU時(shí)序§2.5 復(fù)位操作第2章 89C51/S51單片機(jī)的結(jié)構(gòu)和原理§2.189C51/S51單片機(jī)芯片內(nèi)部結(jié)構(gòu)及特點(diǎn)§2.1.189C51/S51單片機(jī)的基本組成§2.1.289C51/S51單片機(jī)芯片內(nèi)部結(jié)構(gòu)一、組成二、89C51/S51系列單片機(jī)的性能§2.1.189C51/S51單片機(jī)的基本組成一、組成89C51/S51帶閃存(FlashROM)單片機(jī)結(jié)構(gòu)框圖如圖2-1所示圖2-189C51/S51單片機(jī)結(jié)構(gòu)框圖80C51CPU振蕩器和時(shí)序OSC64KB總線擴(kuò)展控制器數(shù)據(jù)存儲(chǔ)器256BRAM/SFR2×16位定時(shí)器/計(jì)數(shù)器可編程I/O程序存儲(chǔ)器4KBFLASHROM可編程全雙工串行口外中斷內(nèi)中斷控制P0P2P1P3串行通信外部時(shí)鐘源外部事件計(jì)數(shù)地址/數(shù)據(jù)一、組成1、一個(gè)8位的微處理器CPU。用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等。2、片內(nèi)數(shù)據(jù)存儲(chǔ)器(RAM128B/256B):
用以存放程序、一些原始數(shù)據(jù)和表格。3、片內(nèi)4kB程序存儲(chǔ)器FlashROM(4KB):4、四個(gè)8位并行I/O(輸入/輸出)接口P0~P3:每個(gè)口可以用作輸入,也可以用作輸出。
每個(gè)定時(shí)/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。5、兩個(gè)16位定時(shí)/計(jì)數(shù)器:
可實(shí)現(xiàn)單片機(jī)與單片機(jī)或其它微機(jī)之間串行通信。7、一個(gè)全雙工UART的串行I/O口:但石英晶體和微調(diào)電容需要外接,最高允許振蕩頻率為24MHz。8、片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路:6、具有5個(gè)中斷源、兩個(gè)中斷優(yōu)先級(jí)的中斷控制系統(tǒng)9、具有節(jié)電工作方式:
休閑方式及掉電方式。二、89C51/S51/S51系列單片機(jī)的性能
89C51/S51/S51單片機(jī)與8051相比,具有節(jié)電工作方式,即休閑方式及掉電方式。以上各個(gè)部分通過片內(nèi)8位數(shù)據(jù)總線(DBUS)相連接。另外89C51/S51/S51是用靜態(tài)邏輯來設(shè)計(jì)的,其工作頻率可下降到0Hz,并提供兩種可用軟件來選擇的省電方式——空閑方式(IdleMode)和掉電方式(PowerDownMode)。在空閑方式中,CPU停止工作,而RAM、定時(shí)器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。此時(shí)的電流可降到大約為正常工作方式的15%。在掉電方式中,片內(nèi)振蕩器停止工作,由于時(shí)鐘被“凍結(jié)”,使一切功能都暫停,故只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復(fù)位為止。這種方式下的電流可降到15μA以下,最小可降到0
6μA。89C51/S51單片機(jī)還有一種低電壓的型號(hào),即89LV51,除了電壓范圍有區(qū)別之外,其余特性與89C51/S51完全一致。89C51/S51/LV51是一種低功耗/低電壓、高性能的8位單片機(jī)。它采用了CMOS工藝和高密度非易失性存儲(chǔ)器(NURAM)技術(shù),而且其輸出引腳和指令系統(tǒng)都與MCS51兼容;片內(nèi)的FlashROM允許在系統(tǒng)內(nèi)改編程序或用常規(guī)的非易失性存儲(chǔ)器編程器來編程。因此89C51/S51/LV51是一種功能強(qiáng)、靈活性高,且價(jià)格合理的單片機(jī),可方便地應(yīng)用在各種控制領(lǐng)域。§2.1.289C51/S51單片機(jī)芯片內(nèi)部結(jié)構(gòu)一、結(jié)構(gòu)圖二、結(jié)構(gòu)組成一、結(jié)構(gòu)圖由中央處理單元(CPU)、存儲(chǔ)器(ROM及RAM)和I/O接口組成。89C51/S51單片機(jī)內(nèi)部結(jié)構(gòu)如圖2-2所示。P0驅(qū)動(dòng)器P2驅(qū)動(dòng)器P0鎖存器P2鎖存器RAM地址寄存器128BRAM4KBROMB寄存器暫存器1暫存器2ACCSP程序地址寄存器緩沖器PC增1PCDPTR中斷、串行口和定時(shí)器PSWP1鎖存器P1驅(qū)動(dòng)器P3鎖存器P3驅(qū)動(dòng)器定時(shí)控制指令寄存器指令譯碼器OSCALUP0.0-P0.7P2.0-P2.7P3.0-P3.7P1.0-P1.7XTAL1XTAL2PSENALEEARESET89C51/S51單片機(jī)內(nèi)部結(jié)構(gòu)圖運(yùn)算器控制器存儲(chǔ)器I/O接口P0驅(qū)動(dòng)器P2驅(qū)動(dòng)器P0鎖存器P2鎖存器RAM地址寄存器128BRAM4KBROMB寄存器暫存器1暫存器2ACCSP程序地址寄存器緩沖器PC增1PCDPTR中斷、串行口和定時(shí)器PSWP1鎖存器P1驅(qū)動(dòng)器P3鎖存器P3驅(qū)動(dòng)器定時(shí)控制指令寄存器指令譯碼器OSCALUP0.0-P0.7P2.0-P2.7P3.0-P3.7P1.0-P1.7XTAL1XTAL2PSENALEEARESET89C51/S51單片機(jī)內(nèi)部結(jié)構(gòu)圖運(yùn)算器控制器存儲(chǔ)器I/O接口二、結(jié)構(gòu)組成(一)、中央處理單元(CPU)(二)、存儲(chǔ)器(三)、I/O接口1、中央處理單元(89C51/S51CPU)1)運(yùn)算器2)控制器1)運(yùn)算器
(1)8位的ALU:(2)8位累加器ACC(A):(3)8位程序狀態(tài)寄存器PSW:(4)8位寄存器B:(5)布爾處理器:(6)2個(gè)8位暫存器:1)運(yùn)算器可對(duì)4位、8位、16位數(shù)據(jù)進(jìn)行操作。(1)8位的ALU:1)運(yùn)算器(2)8位累加器ACC(A):
它經(jīng)常作為一個(gè)運(yùn)算數(shù)經(jīng)暫存器2進(jìn)入ALU的輸入端,與另一個(gè)來自暫存器1的運(yùn)算數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)果又送回ACC。1)運(yùn)算器指示指令執(zhí)行后的狀態(tài)信息供程序查詢和判別用。(3)8位程序狀態(tài)寄存器PSW:1)運(yùn)算器(4)8位寄存器B:
在乘除運(yùn)算時(shí),用來存放一個(gè)操作數(shù)也用來存放運(yùn)算后的一部分結(jié)果;如不能做乘除運(yùn)算時(shí),作為通用寄存器。1)運(yùn)算器(5)布爾處理器:專門用于處理位操作的,以PSW中的C為其累加器。1)運(yùn)算器(6)2個(gè)8位暫存器:ALU的兩個(gè)入口處。2)控制器(1)程序計(jì)數(shù)器PC(16位)(2)指令寄存器IR及指令譯碼器ID(3)振蕩器和定時(shí)電路(1)程序計(jì)數(shù)器PC(16位)由兩個(gè)8位計(jì)數(shù)器PCH、PCL組成。PC是程序的字節(jié)地址計(jì)數(shù)器,PC內(nèi)容為將要執(zhí)行的指令地址。改變PC內(nèi)容,改變執(zhí)行的流向。PC可對(duì)64KB的ROM直接尋址,也可對(duì)89C51/S51片內(nèi)RAM尋址。(2)指令寄存器IR及指令譯碼器ID由PC中的內(nèi)容指定ROM地址取出來的指令經(jīng)IR送至ID由ID對(duì)指令譯碼產(chǎn)生一定序列的控制信號(hào),以執(zhí)行指令所規(guī)定的操作。(3)振蕩器和定時(shí)電路89C51/S51單片機(jī)片內(nèi)有振蕩電路,只需外接石英晶體和頻率微調(diào)電容(2個(gè)30pF左右),其頻率范圍為1.2MHz~12MHz。該信號(hào)作為89C51/S51工作的基本節(jié)拍即時(shí)間的最小單位。2、存儲(chǔ)器1)程序存儲(chǔ)器(ROM)2)數(shù)據(jù)存儲(chǔ)器(RAM)1)程序存儲(chǔ)器(ROM)89C51/S51片內(nèi)為4KBFlashROM。地址從0000H開始。用于存放程序和表格常數(shù)。2)數(shù)據(jù)存儲(chǔ)器(RAM)89C51/S51RAM均為128B,地址為00H~7FH。用于存放運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存以及數(shù)據(jù)緩沖等。這128B的RAM中有32個(gè)字節(jié)單元可指定為工作寄存器。片內(nèi)還有21個(gè)特殊功能寄存器(SFR),它們同128字節(jié)RAM統(tǒng)一編址,地址為80H~FFH。后面詳細(xì)介紹。3、I/O接口89C51/S51有四個(gè)8位并行I/O接口P0~P3。它們都是雙向端口,每個(gè)端口各有8條I/O線。P0-P3口四個(gè)鎖存器同RAM統(tǒng)一編址,可作為SFR來尋址。2.2 89C51/S51單片機(jī)引腳及其功能§2.2.189C51/S51單片機(jī)引腳§2.2.289C51/S51單片機(jī)引腳功能§2.2.1 89C51/S51單片機(jī)引腳圖2-3是89C51/S51/LV51的引腳結(jié)構(gòu)圖,有雙列直插封裝(DIP)方式和方形封裝方式。圖2-389C51/S51/LV51的引腳結(jié)構(gòu)§2.2.289C51/S51單片機(jī)引腳功能一、電源引腳:Vcc和Vss二、時(shí)鐘電路引腳:XTAL1和XTAL2三、控制信號(hào)引腳RST、ALE、PSEN和EA四、輸入/輸出端口P0、P1、P2和P3一、電源引腳:Vcc和Vss1.Vcc(40腳):電源端,為+5V。2.Vss(20腳):接地端。二、時(shí)鐘電路引腳:XTAL1和XTAL2XTAL2(18腳):接外部晶體和微調(diào)電容的一端;在89C51/S51片內(nèi)它是振蕩電路反向放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖。89C51/S51正常工作時(shí),該引腳應(yīng)有脈沖信號(hào)輸出。XTAL1(19腳):接外部晶體和微調(diào)電容的另一端;在片內(nèi)它是振蕩電路反向放大器的輸入端,在采用外部時(shí)鐘時(shí),該引腳接地。二、時(shí)鐘電路引腳:XTAL1和XTAL2
三、控制信號(hào)引腳:RST、ALE、PSEN和EARST/VPD(9腳):RST:復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期的高電平時(shí),就可以完成復(fù)位操作。RST/VPD(9腳):VPD
:RST引腳的第二功能,備用電源輸入端。當(dāng)主電源Vcc
發(fā)生故障,降低到低電平規(guī)定值時(shí),將+5V電源自動(dòng)接入該引腳,為RAM提供備用電源,以保證RAM中的信息不丟失,使得復(fù)位后能繼續(xù)正常運(yùn)行。
三、控制信號(hào)引腳:RST、ALE、PSEN和EAALE/PROG(30腳):ALE:地址鎖存允許信號(hào)端。正常工作時(shí),該引腳以振蕩頻率的1/6固定輸出正脈沖。CPU訪問片外存儲(chǔ)器時(shí),該引腳輸出信號(hào)作為鎖存低8位地址的控制信號(hào)。它的負(fù)載能力為8個(gè)LS型TTL負(fù)載。三、控制信號(hào)引腳:RST、ALE、PSEN和EAALE/PROG(30腳):PROG:是對(duì)片內(nèi)帶有4KBFlashROM的89C51/S51編程寫入時(shí)的編程脈沖輸入端。三、控制信號(hào)引腳:RST、ALE、PSEN和EAPSEN(29腳):程序存儲(chǔ)器允許信號(hào)輸出端。在訪問片外ROM時(shí),定時(shí)輸出負(fù)脈沖作為讀片外ROM的選通信號(hào),接片外ROM
的OE端。它的負(fù)載能力為8個(gè)LS型TTL負(fù)載。三、控制信號(hào)引腳:RST、ALE、PSEN和EAEA/Vpp(31腳):EA:外部程序存儲(chǔ)器地址允許輸入端。當(dāng)該引腳接高電平時(shí),CPU訪問片內(nèi)ROM并執(zhí)行片內(nèi)程序存儲(chǔ)器中的指令,但當(dāng)PC值超過0FFFH(片內(nèi)ROM為4KB)時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行片外ROM中的程序。當(dāng)該引腳接低電平時(shí),CPU只訪問片外ROM并執(zhí)行外部程序存儲(chǔ)器中的程序。三、控制信號(hào)引腳:RST、ALE、PSEN和EAEA/Vpp(31腳):Vpp:對(duì)89C51/S51片內(nèi)
FlashROM固化編程時(shí),編程電壓輸入端(12-21V)。三、控制信號(hào)引腳:RST、ALE、PSEN和EA四、輸入輸出端口P0、P1、P2和P31、準(zhǔn)雙向2、P0口3、P1口4、P2口5、P3口6、端口某1位結(jié)構(gòu)1、準(zhǔn)雙向當(dāng)I/O口作為輸入時(shí),應(yīng)先向此口鎖存器寫入全1,此時(shí)該口引腳浮空,可作高阻抗輸入。2、P0口:漏極開路的8位準(zhǔn)雙向I/O口,每位能驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。P0口可作為一個(gè)數(shù)據(jù)輸入/輸出口;在CPU訪問片外存儲(chǔ)器時(shí),P0口為分時(shí)復(fù)用的低8位地址總線和8位數(shù)據(jù)總線。3、P1口:帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O端口,每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。4、P2口:P2口:帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O端口,每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。在CPU訪問片外存儲(chǔ)器時(shí),它輸出高8位地址。5、P3口:帶內(nèi)部上拉電阻的8位準(zhǔn)雙向I/O端口,每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口除作為一般I/O口外,每個(gè)引腳都有第二功能。表2-2P3端口引腳與復(fù)用功能表6、端口某1位結(jié)構(gòu)圖2-4、圖2-5、圖2-6和圖2-7分別給出了P0、P1、P2和P3端口的某1位結(jié)構(gòu)。每個(gè)端口都是8位準(zhǔn)雙向口,共占32只引腳。每一條I/O線都能獨(dú)立地用作輸入或輸出。每個(gè)端口都包括一個(gè)鎖存器(即特殊功能寄存器P0~P3)、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。這些端口作輸出時(shí),數(shù)據(jù)可以鎖存;作輸入時(shí),數(shù)據(jù)可以緩沖。但這4個(gè)通道的功能不完全相同,其內(nèi)部結(jié)構(gòu)也略有不同。圖2-4P0口某位結(jié)構(gòu)圖2-5P1口某位結(jié)構(gòu)圖2-6P2口某位結(jié)構(gòu)圖2-7P3口某位結(jié)構(gòu)當(dāng)89C51/S51執(zhí)行輸出操作時(shí),CPU通過內(nèi)部總線把數(shù)據(jù)寫入鎖存器。而89C51/S51執(zhí)行輸入(讀端口)操作卻有兩種方式:當(dāng)執(zhí)行的是讀鎖存器指令時(shí),CPU發(fā)出讀鎖存器信號(hào),此時(shí)鎖存器狀態(tài)由觸發(fā)器的Q端經(jīng)鎖存器上面的三態(tài)輸入緩沖器1送入內(nèi)部總線;當(dāng)執(zhí)行的是讀端口引腳的指令,CPU發(fā)出的是讀引腳控制信號(hào),直接讀取端口引腳上的外部輸入信息,此時(shí)引腳狀態(tài)經(jīng)鎖存器下面的三態(tài)輸入緩沖器2送入內(nèi)部總線。在89C51/S51無片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這4個(gè)端口都可以作為準(zhǔn)雙向通用I/O口使用。在具有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,P2口送出高8位地址;P0口為雙向總線,分時(shí)送出低8位地址和數(shù)據(jù)的輸入/輸出。89C51/S51單片機(jī)4個(gè)I/O端口的電路設(shè)計(jì)非常巧妙。熟悉I/O端口邏輯電路,不但有利于正確、合理地使用端口,而且會(huì)對(duì)設(shè)計(jì)單片機(jī)外圍邏輯電路有所啟發(fā)?!?.3 89C51/S51存儲(chǔ)器配置§2.3.1 89C51/S51存儲(chǔ)器分類§2.3.2 程序存儲(chǔ)器地址空間§2.3.3 數(shù)據(jù)存儲(chǔ)器地址空間§2.3.1 89C51/S51存儲(chǔ)器分類一、物理結(jié)構(gòu)(哈佛結(jié)構(gòu))二、用戶角度片內(nèi)程序存儲(chǔ)器片外程序存儲(chǔ)器片內(nèi)數(shù)據(jù)存儲(chǔ)器片外數(shù)據(jù)存儲(chǔ)器一、物理結(jié)構(gòu)(哈佛結(jié)構(gòu))89C51/S51存儲(chǔ)器程序存儲(chǔ)器ROM數(shù)據(jù)存儲(chǔ)器RAM二、用戶角度1、片內(nèi)、外統(tǒng)一編址的64K程序存儲(chǔ)器地址空間。CPU訪問片內(nèi)、片外ROM指令用MOVC。2、64K的片外數(shù)據(jù)存儲(chǔ)器地址空間。訪問片外RAM指令用MOVX。3、256字節(jié)的片內(nèi)數(shù)據(jù)存儲(chǔ)器地址空間。訪問片內(nèi)RAM指令用MOV。上述三個(gè)存儲(chǔ)空間地址是重疊的,89C51/S51的指令系統(tǒng)采用不同的數(shù)據(jù)傳送指令符號(hào)?!?.3.2程序存儲(chǔ)器地址空間1、程序存儲(chǔ)器的分類:2.AT89S51單片機(jī)程序存儲(chǔ)器的使用3.AT89S52單片機(jī)程序存儲(chǔ)器的使用1、程序存儲(chǔ)器的分類程序存儲(chǔ)器是專門用來存放程序和常數(shù)的,有MASKROM(掩膜ROM)、OTPROM(一次性可編程ROM)、EPROM(可擦除可編程ROM)、E2PROM(電可擦寫ROM)、FlashROM(快閃ROM)等類型。掩膜ROM程序存儲(chǔ)器適用于成熟的和大批量生產(chǎn)的產(chǎn)品,如使用到彩色電視機(jī)等家電產(chǎn)品中的單片機(jī)就采用這種方式,只要用戶把應(yīng)用程序代碼交給半導(dǎo)體制造廠家,在生產(chǎn)相應(yīng)的單片機(jī)時(shí)將程序固化到芯片中即可,這種芯片一旦生產(chǎn)出來,程序就無法改變了。采用OTPROM的單片機(jī)也可以進(jìn)行刷寫程序,但寫入后就不能再擦除,使用也不夠方便。采用EPROM的單片機(jī)雖然可以進(jìn)行刷寫程序,但刷寫時(shí)需要用紫外線進(jìn)行擦除,因此比較麻煩。采用E2PROM的單片機(jī)可方便地進(jìn)行程序的刷寫操作,其存在的問題是刷寫速度稍慢。采用FlashROM的單片機(jī),不但程序刷寫方便,而且刷寫速度快,使用十分方便。AT89S51/52以及STC89C51/52單片機(jī)采用的就是FlashROM程序存儲(chǔ)器。AT89S51/52單片機(jī)內(nèi)部有4KB/8KB大小的程序存儲(chǔ)器,這對(duì)于一般的應(yīng)用已經(jīng)足夠,另外還可以擴(kuò)展外部程序存儲(chǔ)器,最大尋址范圍為64KB(相當(dāng)于FFFFH)。當(dāng)擴(kuò)展外部程序存儲(chǔ)器時(shí),需要注意單片機(jī)31腳(EA)的接法,當(dāng)31腳接地時(shí),即強(qiáng)制從外部程序存儲(chǔ)器讀取程序;當(dāng)31腳接高電平時(shí),則先從內(nèi)部程序存儲(chǔ)器中讀取程序,超過內(nèi)部程序存儲(chǔ)器容量時(shí),才會(huì)轉(zhuǎn)向外部程序存儲(chǔ)器讀取程序。通常不要進(jìn)行程序存儲(chǔ)器的擴(kuò)展,如果感覺AT89S51/52內(nèi)部程序存儲(chǔ)器不夠,可以選購(gòu)內(nèi)部程序存儲(chǔ)器更大的單片機(jī),如ATS8953、STC89C516RD+、P89C668型號(hào)等。2.AT89S51單片機(jī)程序存儲(chǔ)器的使用AT89S51單片機(jī)片內(nèi)有4KB的FlashROM,其地址為0000H~0FFFH,單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000H,所以系統(tǒng)將從0000H單元開始執(zhí)行程序。實(shí)際編程時(shí),一般在0000H單元存放一條跳轉(zhuǎn)指令,而用戶設(shè)計(jì)的程序從跳轉(zhuǎn)后的地址開始存放。另外需要注意的是,與89C51一樣,AT89S51的以下40個(gè)單元比較重要,它們分別存放中斷處理程序的轉(zhuǎn)移地址。表2-3中40個(gè)單元是專門用于存放中斷處理程序的地址單元,中斷響應(yīng)后,按中斷的類型,自動(dòng)轉(zhuǎn)到各自的中斷區(qū)去執(zhí)行程序。因此以上地址單元不能用于存放程序的其他內(nèi)容,只能存放中斷服務(wù)程序。但是通常情況下,每段只有8個(gè)地址單元是不能存下完整的中斷服務(wù)程序的,因而一般也在中斷響應(yīng)的地址區(qū),安放一條無條件轉(zhuǎn)移指令,指向程序存儲(chǔ)器的其他真正存放服務(wù)程序的空間去執(zhí)行,這樣中斷響應(yīng)后,CPU讀到這條轉(zhuǎn)移指令,便轉(zhuǎn)向其他地方去繼續(xù)執(zhí)行中斷服務(wù)程序。例如,當(dāng)外部中INT0(P3.2)有效時(shí),即引起中斷申請(qǐng),CPU響應(yīng)中斷后自動(dòng)將地址0003H裝入PC,程序就自動(dòng)轉(zhuǎn)向0003H單元開始執(zhí)行。如果事先在0003H~000AH存有引導(dǎo)(轉(zhuǎn)移)指令,程序就被引導(dǎo)(轉(zhuǎn)移)到指定的中斷服務(wù)程序空間去執(zhí)行。這里,0003H稱為中斷矢量地址。表2-3AT89S51中斷入口地址地址名稱0003H~000AH外部中斷0000BH~0012H定時(shí)器0溢出中斷0013H~001AH外部中斷1001BH~0022H定時(shí)器1溢出中斷0023H~002AH申行口中斷3.AT89S52單片機(jī)程序存儲(chǔ)器的使用AT89S52單片機(jī)片內(nèi)有8KB的FlashROM,其地址為0000H~1FFFH,與AT89S51不同的是,AT89S52比AT89S51多1個(gè)定時(shí)器溢出中斷2,如表2-4所列。表2-4AT89S52中斷入口地址地址名稱0003H~000AH外部中斷0000BH~0012H定時(shí)器0溢出中斷0013H~001AH外部中斷1001BH~0022H定時(shí)器1溢出中斷0023H~002AH申行口中斷002BH~0032H定時(shí)器2溢出中斷§2.3.3數(shù)據(jù)存儲(chǔ)器地址空間數(shù)據(jù)存儲(chǔ)器RAM(讀/寫存儲(chǔ)器)用于存放運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等。數(shù)據(jù)存儲(chǔ)器空間也分成片內(nèi)和片外兩大部分,即片內(nèi)RAM和片外RAM。89C51/S51片外數(shù)據(jù)存儲(chǔ)器空間為64KB,地址為0000H~FFFFH;片內(nèi)存儲(chǔ)器空間為256字節(jié),地址為0000H~00FFH。1、片外RAM:如圖2-8所示,片外數(shù)據(jù)存儲(chǔ)器與片內(nèi)數(shù)據(jù)存儲(chǔ)器空間的低地址部分(0000H~00FFH)是重疊的,如何區(qū)別片內(nèi)、片外RAM空間呢?89C51/S51有MOV和MOVX兩種指令,用以區(qū)分片內(nèi)、片外RAM空間。片內(nèi)RAM使用MOV指令,片外64KBRAM空間(包括片外I/O接口芯片)專門為MOVX指令(使引腳RD或WR信號(hào)有效)所用。地址:0000H~FFFFH尋址:用MOVX指令圖2-889C51/S51存儲(chǔ)器配置89C51/S51單片機(jī)片內(nèi)RAM只有128字節(jié),89C52/S52也只有256字節(jié)。若需要擴(kuò)展片外RAM,則可外接2KB/8KB/32KB的靜態(tài)RAM芯片6116/6264/62256。圖2-10是訪問2KB片外RAM時(shí)的硬件連接圖。在這種情況下,CPU執(zhí)行片內(nèi)FlashROM中的指令(EA接VCC)。P0口用作RAM的地址/數(shù)據(jù)總線,P2口中的3位也作為RAM的頁(yè)地址。訪問片外RAM期間,CPU根據(jù)需要發(fā)送RD和WR信號(hào)。外部數(shù)據(jù)存儲(chǔ)器的尋址空間可達(dá)64KB。片外數(shù)據(jù)存儲(chǔ)器的地址可以是8位或16位的。使用8位地址時(shí),要連同另外一條或幾條I/O線作為RAM的頁(yè)地址,如圖2-10所示。這時(shí)P2的部分引線可作為通用的I/O線。若采用16位地址,則由P2端口傳送高8位地址。圖2-10訪問2KB片外RAM時(shí)的硬件連接圖
2、片內(nèi)RAM:片內(nèi)數(shù)據(jù)存儲(chǔ)器最大可尋址256個(gè)單元,它們又分為兩部分:低128字節(jié)(00H~7FH):是真正的RAM區(qū);高128字節(jié)(80H~FFH):為特殊功能寄存器(SFR)區(qū).如圖2-11所示。圖2-11片內(nèi)數(shù)據(jù)存儲(chǔ)器的配置1)低128字節(jié)RAM89C51/S51的32個(gè)工作寄存器與RAM安排在同一個(gè)隊(duì)列空間里,統(tǒng)一編址并使用同樣的尋址方式(直接尋址和間接尋址)。低128字節(jié)RAM中的配置及含義如圖2-12所示圖2-12低128字節(jié)RAM區(qū)
工作寄存器區(qū)(00H~1FH)由四組(32個(gè))工作寄存器組成,每組8個(gè)寄存器(R0-R7),共占32個(gè)單元。見表2-5。通過程序狀態(tài)寄存器PSW中RS1、RS0兩位設(shè)定來選擇CPU的當(dāng)前工作寄存器組。復(fù)位時(shí),第0組為當(dāng)前的工作寄存器。若不需要四組,則其余可作為一般RAM單元。表2-5工作寄存器地址表位尋址區(qū)(20H~2FH)工作寄存器區(qū)后的16字節(jié)單元(20H~2FH),可用位尋址方式訪問其各位。在89系列單片機(jī)的指令系統(tǒng)中,還包括許多位操作指令,這些位操作指令可直接對(duì)這128位尋址。這128位的位地址為00H~7FH,其位地址分布見圖2-12。低128字節(jié)RAM單元地址范圍也是00H~7FH,89C51/S51采用不同尋址方式來加以區(qū)分,即訪問128個(gè)位地址用位尋址方式,訪問低128字節(jié)單元用直接尋址和間接尋址。這樣就可以區(qū)分開00H~7FH是位地址還是字節(jié)地址。這些可尋址位,通過執(zhí)行指令可直接對(duì)某一位操作,如置1、清0或判1、判0等,可用作軟件標(biāo)志位或用于位(布爾)處理。這是一般微機(jī)和早期的單片機(jī)(如MCS48)所沒有的。這種位尋址能力是89C51/S51的一個(gè)重要特點(diǎn)。RAM位尋址區(qū)位地址表用戶RAM區(qū)(30H~7FH)用于堆棧和數(shù)據(jù)緩沖。2)高128字節(jié)RAM(80H~FFH)有21個(gè)特殊功能功能寄存器。見表2-6地址分布在80H~FFH的RAM空間。只能用直接尋址方式。有11個(gè)具有位尋址能力。11個(gè)SFR的字節(jié)地址正好能被8整除。特殊功能寄存器的地址。見表2-7部分特殊功能寄存器介紹表2-689C51/S51系列單片機(jī)的特殊功能寄存器表表2-7特殊功能寄存器地址表部分特殊功能寄存器介紹累加器ACC(E0H):用A作為ACC的助記符。用于存放第一個(gè)操作數(shù)及運(yùn)算結(jié)果。部分特殊功能寄存器介紹寄存器B(F0H):在乘法指令中,B用于存放乘數(shù)和乘積的高8位。在除法指令中用于存放除數(shù)和余數(shù)。在其它指令中用作一般的寄存器或RAM單元。部分特殊功能寄存器介紹PSW程序狀態(tài)寄存器(D0H):PSW包含了程序執(zhí)行后的狀態(tài)信息,供程序查詢或判斷用。PSW的格式PSW各位的含義PSW的格式如下:ACCYP—OVRS0RS1F0PSW(D0H)D7D6D5D4D3D2D1D0PSW各位的含義(1)CY位(PSW.7):進(jìn)(借)位標(biāo)志位。執(zhí)行加法(減法)運(yùn)算指令時(shí),如運(yùn)算結(jié)果最高位(D7)向前有進(jìn)位(借位),CY=1;否則,CY=0。在位操作指令中,CY位是布爾累加器,用C表示。PSW各位的含義(2)AC位(PSW.6):半進(jìn)位標(biāo)志位(輔助進(jìn)位標(biāo)志)。執(zhí)行加法(減法)運(yùn)算指令時(shí),如運(yùn)算結(jié)果的低半字節(jié)(D3)向高半字節(jié)有進(jìn)位(借位),AC=1;否則,AC=0。PSW各位的含義(3)FO位(PSW.5):用戶標(biāo)志。由用戶自己定義、置位、復(fù)位,以作為軟件標(biāo)志。PSW各位的含義(4)RS0、RS1位(PSW.3和PSW.4):工作寄存器組選擇控制位。由用戶用軟件改變RS0和RS1的值,以切換當(dāng)前選用的工作寄存器組。RS0,RS1的組合關(guān)系如表2-8
所示。上電復(fù)位時(shí),(RS0)=(RS1)=0,CPU自然選擇第0組為當(dāng)前工作寄存器組。RS1 RS0 寄存器組 片內(nèi)RAM地址0 0 第0組 00H~07H 0 1 第1組 08H~0FH 1 0 第2組 10H~17H 1 1 第3組 18H~1FH 表2-8RS0,RS1的組合關(guān)系PSW各位的含義(5)OV位(PSW.2):溢出標(biāo)志位。如有溢出,即運(yùn)算結(jié)果超出-128~+127的范圍時(shí),OV=1;無溢出時(shí),OV=0。PSW各位的含義(6)P位(PSW.0):奇偶檢驗(yàn)位。每條指令執(zhí)行后,A中“1”的個(gè)數(shù)為奇數(shù),則P=1;否則,P=0。PSW各位的含義(7)PSW.1:為保留位。部分特殊功能寄存器介紹堆棧指針SP(81H):堆棧:在片內(nèi)RAM中,開辟的一個(gè)按“先進(jìn)后出”的結(jié)構(gòu)方式處理數(shù)據(jù)的區(qū)域。SP的內(nèi)容可指向片內(nèi)RAM00H—7FH的任何單元。系統(tǒng)復(fù)位時(shí),SP初始化為07H。堆棧的操作:如圖2-14所示。圖2-14堆棧的壓入與彈出堆棧的操作有兩種:一種叫數(shù)據(jù)壓入(PUSH),另一種叫數(shù)據(jù)彈出(POP)。在圖2-14中,假若有8個(gè)RAM單元,每個(gè)單元都在其右面編有地址,棧頂由堆棧指針SP自動(dòng)管理。每次進(jìn)行壓入或彈出操作以后,堆棧指針便自動(dòng)調(diào)整以保持指示堆棧頂部的位置。這些操作可用圖2-14說明。在使用堆棧之前,先給SP賦值,以規(guī)定堆棧的起始位置,稱為棧底。當(dāng)數(shù)據(jù)壓入堆棧后,SP自動(dòng)加1,即RAM地址單元加1以指出當(dāng)前棧頂位置。89C51/S51的這種堆棧結(jié)構(gòu)屬于向上生長(zhǎng)型的堆棧(另一種屬于向下生長(zhǎng)型的堆棧)。89C51/S51的堆棧指針SP是一個(gè)雙向計(jì)數(shù)器。進(jìn)棧時(shí),SP內(nèi)容自動(dòng)增值,出棧時(shí)自動(dòng)減值。存取信息必須按“后進(jìn)先出”或“先進(jìn)后出”的規(guī)則進(jìn)行。部分特殊功能寄存器介紹數(shù)據(jù)指針DPTR(83H,82H):DPTR是一個(gè)16位的特殊功能寄存器。由DPH(83H),DPL(82H)組成。DPH,DPL可以單獨(dú)使用。部分特殊功能寄存器介紹I/O端口P0、P1、P2、P3(80H、90H、A0H、B0H):分別為四個(gè)并行端口的鎖存器,每一個(gè)口鎖存器還有位地址,所以每一條I/O線可獨(dú)立輸入或輸出。輸出時(shí),可以鎖存;輸入時(shí),可以緩沖。除上述21個(gè)SFR以外,還有一個(gè)16位的PC,稱為程序計(jì)數(shù)器,這在2.1.2節(jié)中曾提到過。它是不可尋址的。圖2-15所示為各個(gè)SFR所在的字節(jié)地址位置??崭癫糠譃槲磥碓O(shè)計(jì)新型芯片可定義的SFR位置。圖2-15特殊功能寄存器(SFR)的位置§2.4 時(shí)鐘電路及89C51/S51CPU時(shí)序89C51/S51芯片內(nèi)部有一個(gè)高增益反相放大器,用于構(gòu)成振蕩器。反相放大器的輸入端為XTAL1,輸出端為XTAL2,兩端跨接石英晶體及兩個(gè)電容就可以構(gòu)成穩(wěn)定的自激振蕩器。電容器C1和C2通常取30pF左右,可穩(wěn)定頻率并對(duì)振蕩頻率有微調(diào)作用。晶體振蕩器的脈沖頻率范圍為fOSC=0~24MHz。振蕩信號(hào)從XTAL2端輸入到片內(nèi)的時(shí)鐘發(fā)生器上,如圖2-16所示。圖2-1689C51/S51的片內(nèi)振蕩器及時(shí)鐘發(fā)生器1、節(jié)拍與狀態(tài)周期時(shí)鐘發(fā)生器是一個(gè)2分頻的觸發(fā)器電路,它將振蕩器的信號(hào)頻率fOSC除以2,向CPU提供兩相時(shí)鐘信號(hào)P1和P2。時(shí)鐘信號(hào)的周期稱為機(jī)器狀態(tài)周期S(STATE),是振蕩周期的2倍。在每個(gè)時(shí)鐘周期(即機(jī)器狀態(tài)周期S)的前半周期,相位1(P1)信號(hào)有效,在每個(gè)時(shí)鐘周期的后半周期,相位2(P2,節(jié)拍2)信號(hào)有效。每個(gè)時(shí)鐘周期(以后常稱狀態(tài)S)有兩個(gè)節(jié)拍(相)P1和P2,CPU就以兩相時(shí)鐘P1和P2為基本節(jié)拍指揮89C51/S51單片機(jī)各個(gè)部件協(xié)調(diào)地工作。2、機(jī)器周期和指令周期計(jì)算機(jī)的一計(jì)算機(jī)的一條指令由若干個(gè)字節(jié)組成。執(zhí)行一條指令需要多長(zhǎng)時(shí)間則以機(jī)器周期為單位。一個(gè)機(jī)器周期是指CPU訪問存儲(chǔ)器一次所需的時(shí)間。例如,取指令、讀存儲(chǔ)器、寫存儲(chǔ)器等等。一個(gè)機(jī)器周期包括12個(gè)振蕩周期,分為6個(gè)S狀態(tài):S1~S6。每個(gè)狀態(tài)又分為兩拍,稱為P1和P2。因此,一個(gè)機(jī)器周期中的12個(gè)振蕩周期表示為S1P1,S1P2,S2P1,···,S6P1,S6P2。若采用6MHz晶體振蕩器,則每個(gè)機(jī)器周期為多少?機(jī)器周期設(shè):晶體振蕩器頻率fosc=6MHz,則:振蕩周期=1/fosc=1/6μs(微秒)因?yàn)?一個(gè)機(jī)器周期包括12個(gè)振蕩周期,所以:一個(gè)機(jī)器周期=12*(1/6)μs(微秒)
=2μs(微秒)問:如果fosc=12MHz,
一個(gè)機(jī)器周期為多少?答案1μs(微秒)機(jī)器周期每條指令都由一個(gè)或幾個(gè)機(jī)器周期組成。指令周期:執(zhí)行一條指令所需的時(shí)間。每條指令由一個(gè)或若干個(gè)字節(jié)組成。有單字節(jié)指令,雙字節(jié)指令,…多字節(jié)指令等。字節(jié)數(shù)少則占存儲(chǔ)器空間少。每條指令的指令周期都由一個(gè)或幾個(gè)機(jī)器周期組成。有單周期指令、雙周期指令、和四周期指令。機(jī)器周期數(shù)少則執(zhí)行速度快。其指令周期各為多少?指令周期指令周期設(shè)振蕩周期為6MHz,則一個(gè)機(jī)器周期為2μs(微秒)。單周期指令:指令周期為2μs(微秒)雙周期指令:指令周期為4μs(微秒)四周期指令:指令周期為8μs(微秒)如果振蕩周期為12MHz,則其指令周期分別為
1μs、2μs和4μs。3、基本時(shí)序定時(shí)單位
綜上所述,89C51/S51或其他80C51單片機(jī)的基本時(shí)序定時(shí)單位有如下4個(gè)。振蕩周期:晶振的振蕩周期,為最小的時(shí)序單位。狀態(tài)周期:振蕩頻率經(jīng)單片機(jī)內(nèi)的二分頻器分頻后提供給片內(nèi)CPU的時(shí)鐘周期。因此,一個(gè)狀態(tài)周期包含2個(gè)振蕩周期。機(jī)器周期(MC):1個(gè)機(jī)器周期由6個(gè)狀態(tài)周期即12個(gè)振蕩周期組成,是計(jì)算機(jī)執(zhí)行一種基本操作的時(shí)間單位。指令周期:執(zhí)行一條指令所需的時(shí)間。一個(gè)指令周期由1~4個(gè)機(jī)器周期組成,依據(jù)指令不同而不同,見附錄A。4種時(shí)序單位中,振蕩周期和機(jī)器周期是單片機(jī)內(nèi)計(jì)算其他時(shí)間值(例如,波特率、定時(shí)器的定時(shí)時(shí)間等)的基本時(shí)序單位。下面是單片機(jī)外接晶振頻率12MHz時(shí)的各種時(shí)序單位的大小。 振蕩周期=1/fOSC=1/12MHz=0.0833μs
狀態(tài)周期=2/fOSC=2/12MHz=0.167μs
機(jī)器周期=12/fOSC=12/12MHz=1μs
指令周期=(1~4)機(jī)器周期=1~4μs4個(gè)時(shí)序單位從小到大依次是節(jié)拍(振蕩脈沖周期,1/fOSC)、狀態(tài)周期(時(shí)鐘周期)、機(jī)器周期和指令周期,如圖2-17所示。圖2-1789C51/S51單片機(jī)各種周期的相互關(guān)系§2.5 復(fù)位操作§2.5.1 復(fù)位操作的主要功能§2.5.2 復(fù)位信號(hào)及其產(chǎn)生§2.5.3 復(fù)位電路§2.5.1 復(fù)位操作的主要功能89C51/S51系列單片機(jī)與其他微處理器一樣,在啟動(dòng)時(shí)都需要復(fù)位,使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。89C51/S51系列單片機(jī)的復(fù)位信號(hào)是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如RST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期),則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。復(fù)位操作主要功能程序地址指針PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)死鎖狀態(tài)時(shí),為擺脫困境,也需要按復(fù)位鍵重新啟動(dòng)。除PC之外,復(fù)位操作還對(duì)其他一些寄存器有影響,它們的復(fù)位狀態(tài)如表2-9所列。即在SFR中,除了端口鎖存器、堆棧指針SP和串行口的SBUF外,其余的寄存器全部清0,端口鎖存器的復(fù)位值為0FFH,堆棧指針值為07H,SBUF內(nèi)為不定值。內(nèi)部RAM的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時(shí),RAM的內(nèi)容是不定的。表2-9各特殊寄存器的復(fù)位值表2-9中的符號(hào)意義如下:
A=00H:表明累加器已被清0。
PSW=00H:表明選寄存器0組為工作寄存器組。
SP=07H:表明堆棧指針指向片內(nèi)RAM07H字節(jié)單元,根據(jù)堆棧操作的先加后壓法則,第一個(gè)被壓入的數(shù)據(jù)被寫入08H單元中。
P0~P3=FFH:表明已向各端口線寫入1,此時(shí),各端口既可用于輸入,又可用于輸出。
IP=×××00000B:表明各個(gè)中斷源處于低優(yōu)先級(jí)。
IE=0××00000B:表明各個(gè)中斷均被關(guān)斷。
TMOD=00H:表明T0,T1均為工作方式0,且運(yùn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修材料供應(yīng)商合作協(xié)議
- 業(yè)務(wù)經(jīng)理聘用協(xié)議書模板
- 寫字樓租賃簡(jiǎn)單合同模板
- 2024年私下協(xié)議書模板的正確寫法
- 大型水庫(kù)清淤合同
- 書店轉(zhuǎn)讓店面協(xié)議
- 標(biāo)準(zhǔn)建筑安裝工程承包合同樣本
- 2024年個(gè)人房子免租協(xié)議書模板范本
- 個(gè)人家庭裝修水電安裝合同2024年
- 甘肅省天水市清水縣第六中學(xué)2024屆高考押題卷數(shù)學(xué)試題
- 2024年深圳市中考英語試題及解析版
- 高職護(hù)理專業(yè)《外科護(hù)理技術(shù)》說課稿
- 信息化系統(tǒng)安全運(yùn)維服務(wù)方案三篇
- 全國(guó)職業(yè)院校技能大賽高職組(化工生產(chǎn)技術(shù)賽項(xiàng))省選拔賽考試題庫(kù)(含答案)
- 《藥品生產(chǎn)監(jiān)督管理辦法》知識(shí)考試題庫(kù)及答案
- 通信工程專業(yè)導(dǎo)論(第6-10章)
- 幼教培訓(xùn)課件:《幼兒園如何有效組織幼兒戶外自主游戲》
- Unit 1 (Section A 1a-2) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版(2024)七年級(jí)英語上冊(cè)
- 17《爬天都峰》第一課時(shí) 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 特朗普培訓(xùn)課件
- Kubernetes 持久化存儲(chǔ)方案選擇-從入門到評(píng)估
評(píng)論
0/150
提交評(píng)論