材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件_第1頁(yè)
材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件_第2頁(yè)
材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件_第3頁(yè)
材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件_第4頁(yè)
材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第八章材料加工過(guò)程的單片機(jī)控制8.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成8.2交流電阻焊單片機(jī)控制8.3氣體滲碳爐的單片機(jī)控制8.4燃?xì)饧訜釥t溫度的單片機(jī)控制第八章材料加工過(guò)程的單片機(jī)控制8.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)18.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成MCS-51系列單片機(jī)的結(jié)構(gòu)MCS是Intel公司單片機(jī)的系列符號(hào)。Intel推出有MCS-48、MCS-51、MCS-96系列單片機(jī)。MCS-51系列包括三個(gè)基本型8031、8051、8751,以及對(duì)應(yīng)的低功耗型號(hào)80C31、80C51、87C51,因而MCS-51特指Intel的這幾種型號(hào)。20世紀(jì)80年代中期以后,Intel以專(zhuān)利轉(zhuǎn)讓的形式把8051內(nèi)核給了許多半導(dǎo)體廠(chǎng)家,這些廠(chǎng)家生產(chǎn)的芯片是MCS-51系列的兼容產(chǎn)品,準(zhǔn)確地說(shuō)是與MCS-51指令系統(tǒng)兼容的單片機(jī)。這些單片機(jī)與8051的系統(tǒng)結(jié)構(gòu)(主要是指令系統(tǒng))相同,采用CMOS工藝,因而常用80C51系列來(lái)稱(chēng)呼所有具有8051指令系統(tǒng)的單片機(jī)。他們對(duì)8051一般都作了一些擴(kuò)充,更有特點(diǎn)、功能更強(qiáng)、市場(chǎng)競(jìng)爭(zhēng)力更強(qiáng)。8051是MCS-51系列單片機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。8.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成MCS-51系列單片機(jī)的結(jié)構(gòu)21.8051單片機(jī)的內(nèi)部結(jié)構(gòu)8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和控制總線(xiàn)等三大總線(xiàn),現(xiàn)在我們分別加以說(shuō)明:1.8051單片機(jī)的內(nèi)部結(jié)構(gòu)8051單片機(jī)包含中央處理器、3材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件4材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件5中央處理器(CPU):是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)的協(xié)調(diào)工作,完成加減乘除及邏輯運(yùn)算和控制輸入輸出功能等操作。

·數(shù)據(jù)存儲(chǔ)器(RAM):

8051內(nèi)部有128個(gè)8位用戶(hù)數(shù)據(jù)存儲(chǔ)單元和128個(gè)專(zhuān)用寄存器單元,它們是統(tǒng)一編址的,專(zhuān)用寄存器只能用于存放控制指令數(shù)據(jù),用戶(hù)只能訪(fǎng)問(wèn),而不能用于存放用戶(hù)數(shù)據(jù),所以,用戶(hù)能使用的的RAM只有128個(gè),可存放讀寫(xiě)的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶(hù)定義的字型表。

中央處理器(CPU):是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度6程序存儲(chǔ)器(ROM):

8051共有4096個(gè)8位掩膜ROM,用于存放用戶(hù)程序,原始數(shù)據(jù)或表格。定時(shí)/計(jì)數(shù)器(ROM):

8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:

8051共有4組8位I/O口(P0、P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。全雙工串行口:

8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷系統(tǒng):

8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿(mǎn)足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。程序存儲(chǔ)器(ROM):

8051共有4096個(gè)8位掩膜ROM7時(shí)鐘電路:

8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。單片機(jī)的結(jié)構(gòu)有兩種類(lèi)型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的MCS-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。時(shí)鐘電路:

8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電8MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線(xiàn)兩根,外置石英振蕩器的時(shí)鐘線(xiàn)兩根,4組8位共32個(gè)I/O口,中斷口線(xiàn)與P3口線(xiàn)復(fù)用?,F(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:MCS-51的引腳說(shuō)明:920:接地腳。40:正電源腳,正常工作或?qū)ζ瑑?nèi)EPROM燒寫(xiě)程序時(shí),接+5V電源。19:時(shí)鐘XTAL1腳,片內(nèi)振蕩電路的輸入端。18:時(shí)鐘XTAL2腳,片內(nèi)振蕩電路的輸出端。8051的時(shí)鐘有兩種方式,一種是片內(nèi)時(shí)鐘振蕩方式,但需在18和19腳外接石英晶體(2-12MHz)和振蕩電容,振蕩電容的值一般取10p-30p。另外一種是外部時(shí)鐘方式,即將XTAL1接地,外部時(shí)鐘信號(hào)從XTAL2腳輸入。20:接地腳。10材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件11材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件129:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指鐘寫(xiě)入07H,其它專(zhuān)用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開(kāi)始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),

8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,見(jiàn)下圖。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。9:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電13程序存儲(chǔ)器

一個(gè)微處理器能夠聰明地執(zhí)行某種任務(wù),除了它們強(qiáng)大的硬件外,還需要它們運(yùn)行的軟件,其實(shí)微處理器并不聰明,它們只是完全按照人們預(yù)先編寫(xiě)的程序而執(zhí)行之。那么設(shè)計(jì)人員編寫(xiě)的程序就存放在微處理器的程序存儲(chǔ)器中,俗稱(chēng)只讀程序存儲(chǔ)器(ROM)。程序相當(dāng)于給微處理器處理問(wèn)題的一系列命令。其實(shí)程序和數(shù)據(jù)一樣,都是由機(jī)器碼組成的代碼串。只是程序代碼則存放于程序存儲(chǔ)器中。

MCS-51具有64kB程序存儲(chǔ)器尋址空間,它是用于存放用戶(hù)程序、數(shù)據(jù)和表格等信息。對(duì)于內(nèi)部無(wú)ROM的8031單片機(jī),它的程序存儲(chǔ)器必須外接,空間地址為64kB,此時(shí)單片機(jī)的EA-端必須接地。強(qiáng)制CPU從外部程序存儲(chǔ)器讀取程序。對(duì)于內(nèi)部有ROM的8051等單片機(jī),正常運(yùn)行時(shí),EA-則需接高電平,使CPU先從內(nèi)部的程序存儲(chǔ)中讀取程序,當(dāng)PC值超過(guò)內(nèi)部ROM的容量時(shí),才會(huì)轉(zhuǎn)向外部的程序存儲(chǔ)器讀取程序。

程序存儲(chǔ)器

一個(gè)微處理器能夠聰明地執(zhí)行某種任務(wù),除了148051片內(nèi)有4kB的程序存儲(chǔ)單元,其地址為0000H—0FFFH,單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000H,所以系統(tǒng)將從0000H單元開(kāi)始執(zhí)行程序。但在程序存儲(chǔ)中有些特殊的單元,這在使用中應(yīng)加以注意:

其中一組特殊是0000H—0002H單元,系統(tǒng)復(fù)位后,PC為0000H,單片機(jī)從0000H單元開(kāi)始執(zhí)行程序,如果程序不是從0000H單元開(kāi)始,則應(yīng)在這三個(gè)單元中存放一條無(wú)條件轉(zhuǎn)移指令,讓CPU直接去執(zhí)行用戶(hù)指定的程序。

另一組特殊單元是0003H—002AH,這40個(gè)單元各有用途,它們被均勻地分為五段,它們的定義如下:

0003H—000AH

外部中斷0中斷地址區(qū)。

000BH—0012H

定時(shí)/計(jì)數(shù)器0中斷地址區(qū)。

0013H—001AH

外部中斷1中斷地址區(qū)。

001BH—0022H

定時(shí)/計(jì)數(shù)器1中斷地址區(qū)。

0023H—002AH

串行中斷地址區(qū)。

8051片內(nèi)有4kB的程序存儲(chǔ)單元,其地址為0000H—0F15可見(jiàn)以上的40個(gè)單元是專(zhuān)門(mén)用于存放中斷處理程序的地址單元,中斷響應(yīng)后,按中斷的類(lèi)型,自動(dòng)轉(zhuǎn)到各自的中斷區(qū)去執(zhí)行程序。因此以上地址單元不能用于存放程序的其他內(nèi)容,只能存放中斷服務(wù)程序。但是通常情況下,每段只有8個(gè)地址單元是不能存下完整的中斷服務(wù)程序的,因而一般也在中斷響應(yīng)的地址區(qū)安放一條無(wú)條件轉(zhuǎn)移指令,指向程序存儲(chǔ)器的其它真正存放中斷服務(wù)程序的空間去執(zhí)行,這樣中斷響應(yīng)后,CPU讀到這條轉(zhuǎn)移指令,便轉(zhuǎn)向其他地方去繼續(xù)執(zhí)行中斷服務(wù)程序??梢?jiàn)以上的40個(gè)單元是專(zhuān)門(mén)用于存放中斷處理程序的地址單元,中16數(shù)據(jù)存儲(chǔ)器

數(shù)據(jù)存儲(chǔ)器也稱(chēng)為隨機(jī)存取數(shù)據(jù)存儲(chǔ)器。MCS-51單片機(jī)的數(shù)據(jù)存儲(chǔ)器在物理上和邏輯上都分為兩個(gè)地址空間,一個(gè)是內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)和一個(gè)外部數(shù)據(jù)存儲(chǔ)區(qū)。MCS-51內(nèi)部RAM有128或256個(gè)字節(jié)的用戶(hù)數(shù)據(jù)存儲(chǔ)(不同的型號(hào)有分別),它們是用于存放執(zhí)行的中間結(jié)果和過(guò)程數(shù)據(jù)的。MCS-51的數(shù)據(jù)存儲(chǔ)器均可讀寫(xiě),部分單元還可以位尋址。數(shù)據(jù)存儲(chǔ)器

數(shù)據(jù)存儲(chǔ)器也稱(chēng)為隨機(jī)存取數(shù)據(jù)存儲(chǔ)器。MCS-51178051內(nèi)部RAM共有256個(gè)單元,這256個(gè)單元共分為兩部分。其一是地址從00H—7FH單元(共128個(gè)字節(jié))為用戶(hù)數(shù)據(jù)RAM。從80H—FFH地址單元(也是128個(gè)字節(jié))為特殊寄存器(SFR)單元。內(nèi)部RAM的20H—2FH單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對(duì)它們的位進(jìn)行尋址。位尋址區(qū)共有16個(gè)字節(jié),128個(gè)位,位地址為00H—7FH。CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉(zhuǎn)移,傳送和邏輯等操作。我們常稱(chēng)MCS-51具有布爾處理功能,布爾處理的存儲(chǔ)空間指的就是這些為尋址區(qū)。

8051內(nèi)部RAM共有256個(gè)單元,這256個(gè)單元共分為兩部18

特殊功能寄存器(SFR)也稱(chēng)為專(zhuān)用寄存器,特殊功能寄存器反映了MCS-51單片機(jī)的運(yùn)行狀態(tài)。很多功能也通過(guò)特殊功能寄存器來(lái)定義和控制程序的執(zhí)行。

MCS-51有21個(gè)特殊功能寄存器,它們被離散地分布在內(nèi)部RAM的80H—FFH地址中,這些寄存的功能已作了專(zhuān)門(mén)的規(guī)定,用戶(hù)不能修改其結(jié)構(gòu)。表2是特殊功能寄存器分布一覽表,我們對(duì)其主要的寄存器作一些簡(jiǎn)單的介紹。

特殊功能寄存器(SFR)也稱(chēng)為專(zhuān)用寄存器,特殊功能寄存器19

程序計(jì)數(shù)器PC(programCounter)

程序計(jì)數(shù)器在物理上是獨(dú)立的,它不屬于特殊內(nèi)部數(shù)據(jù)存儲(chǔ)器塊中。PC是一個(gè)16位的計(jì)數(shù)器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64kB,PC有自動(dòng)加1功能,即完成了一條指令的執(zhí)行后,其內(nèi)容自動(dòng)加1,程序執(zhí)行到什么地方,程序計(jì)數(shù)器PC就指到哪里。PC本身并沒(méi)有地址,因而不可尋址,用戶(hù)無(wú)法對(duì)它進(jìn)行讀寫(xiě),但是可以通過(guò)轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以控制程序按我們的要求去執(zhí)行。

程序計(jì)數(shù)器PC(programCounter)

20累加器ACC(Accumulator)

累加器A是一個(gè)最常用的專(zhuān)用寄存器,大部分單操作指令的一個(gè)操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個(gè)操作數(shù)也取自累加器。加、減、乘、除法運(yùn)算的指令,運(yùn)算結(jié)果都存放于累加器A或AB累加器對(duì)中。大部分的數(shù)據(jù)操作都會(huì)通過(guò)累加器A進(jìn)行,它形象于一個(gè)交通要道,在程序比較復(fù)雜的運(yùn)算中,累加器成了制約軟件效率的“瓶頸”,它的功能較多,地位也十分重要。以至于后來(lái)發(fā)展的單片機(jī),有的集成了多累加器結(jié)構(gòu),或者使用寄存器陣列來(lái)代替累加器,即賦予更多寄存器以累加器的功能,目的是解決累加器的“交通堵塞”問(wèn)題。提高單片機(jī)的軟件效率。寄存器B

在乘除法指令中,乘法指令中的兩個(gè)操作數(shù)分別取自累加器A和寄存器B,其結(jié)果存放于AB寄存器對(duì)中。除法指令中,被除數(shù)取自累加器A,除數(shù)取自寄存器B,結(jié)果商存放于累加器A,余數(shù)存放于寄存器B中。累加器ACC(Accumulator)

累加器A是一21

程序狀態(tài)字(ProgramStatusWord)

程序狀態(tài)字是一個(gè)8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,這個(gè)寄存器的一些位可由軟件設(shè)置,有些位則由硬件運(yùn)行時(shí)自動(dòng)設(shè)置的。PSW用來(lái)存放兩類(lèi)信息:一類(lèi)是體現(xiàn)當(dāng)前指令執(zhí)行結(jié)果的各種狀態(tài)信息,如有無(wú)進(jìn)位(CY位),有無(wú)溢出(OV位),奇偶標(biāo)志位(P位)等;另一類(lèi)是存放控制信息,如允許中斷(IF位),跟蹤標(biāo)志(TF位)等。有些機(jī)器中將PSW稱(chēng)為標(biāo)志寄存器FR(FlagRegister)。寄存器的各位定義如下,其中PSW.1是保留位,未使用。下表是它的功能說(shuō)明,并對(duì)各個(gè)位的定義介紹如下:

程序狀態(tài)字(ProgramStatusWord)

22PSW.7(CY)

進(jìn)位標(biāo)志位,此位有兩個(gè)功能:一是存放執(zhí)行某寫(xiě)算數(shù)運(yùn)算時(shí),存放進(jìn)位標(biāo)志,可被硬件或軟件置位或清零。二是在位操作中作累加位使用。PSW.6(AC)

輔助進(jìn)位標(biāo)志位,當(dāng)進(jìn)行加、減運(yùn)算時(shí)當(dāng)有低4位向高4位進(jìn)位或借位時(shí),AC置位,否則被清零。AC輔助進(jìn)位位也常用于十進(jìn)制調(diào)整。PSW.5(F0)

用戶(hù)標(biāo)志位,供用戶(hù)設(shè)置的標(biāo)志位。PSW.4、PSW.3(RS1和RS0)

寄存器組選擇位。PSW.2(OV)

溢出標(biāo)志。帶符號(hào)加減運(yùn)算中,超出了累加器A所能表示的符號(hào)數(shù)有效范圍(-128—+127)時(shí),即產(chǎn)生溢出,OV=1。表明運(yùn)算運(yùn)算結(jié)果錯(cuò)誤。如果OV=0,表明運(yùn)算結(jié)果正確。

PSW.0(P)

奇偶校驗(yàn)位。聲明累加器A的奇偶性,

PSW.7(CY)

進(jìn)位標(biāo)志位,此位有兩個(gè)功能:一是存放執(zhí)行23

數(shù)據(jù)指針(DPTR)

數(shù)據(jù)指針為16位寄存器,編程時(shí),既可以按16位寄存器來(lái)使用,也可以按兩個(gè)8位寄存器來(lái)使用,即高位字節(jié)寄存器DPH和低位字節(jié)DPL。

DPTR主要是用來(lái)保存16位地址,當(dāng)對(duì)64kB外部數(shù)據(jù)存儲(chǔ)器尋址時(shí),可作為間址寄存器使用,此時(shí),使用如下兩條指令:

MOVX

A,

@DPTR

MOVX

@DPTR,

A

在訪(fǎng)問(wèn)程序存儲(chǔ)器時(shí),DPTR可用來(lái)作基址寄存器,采用基址+變址尋址方式訪(fǎng)問(wèn)程序存儲(chǔ)器,這條指令常用于讀取程序存儲(chǔ)器內(nèi)的表格數(shù)據(jù)。

MOVC

A,

@A+@DPTR

數(shù)據(jù)指針(DPTR)

數(shù)據(jù)指針為16位寄存器,編程24

堆棧指針SP(StackPointer)

堆棧是一種數(shù)據(jù)結(jié)構(gòu),它是一個(gè)8位寄存器,它指示堆棧頂部在內(nèi)部RAM中的位置。系統(tǒng)復(fù)位后,SP的初始值為07H,使得堆棧實(shí)際上是從08H開(kāi)始的。但我們從RAM的結(jié)構(gòu)分布中可知,08H—1FH隸屬1—3工作寄存器區(qū),若編程時(shí)需要用到這些數(shù)據(jù)單元,必須對(duì)堆棧指針SP進(jìn)行初始化,原則上設(shè)在任何一個(gè)區(qū)域均可,但一般設(shè)在30H—1FH之間較為適宜。

數(shù)據(jù)的寫(xiě)入堆棧我們稱(chēng)為入棧(PUSH,有些文獻(xiàn)也稱(chēng)作插入運(yùn)算或壓入),從堆棧中取出數(shù)據(jù)稱(chēng)為出棧(POP,也稱(chēng)為刪除運(yùn)算或彈出),堆棧的最主要特征是“后進(jìn)先出”規(guī)則,也即最先入棧的數(shù)據(jù)放在堆棧的最底部,而最后入棧的數(shù)據(jù)放在棧的頂部,因此,最后入棧的數(shù)據(jù)出棧時(shí)則是最先的。

堆棧指針SP(StackPointer)

堆棧25堆棧的設(shè)立是為了中斷操作和子程序的調(diào)用而用于保存數(shù)據(jù)的,即常說(shuō)的斷點(diǎn)保護(hù)和現(xiàn)場(chǎng)保護(hù)。微處理器無(wú)論是在轉(zhuǎn)入子程序和中斷服務(wù)程序的執(zhí)行,執(zhí)行完后,還是要回到主程序中來(lái),在轉(zhuǎn)入子程序和中斷服務(wù)程序前,必須先將現(xiàn)場(chǎng)的數(shù)據(jù)進(jìn)行保存起來(lái),否則返回時(shí),CPU并不知道原來(lái)的程序執(zhí)行到哪一步,原來(lái)的中間結(jié)果如何?所以在轉(zhuǎn)入執(zhí)行其它子程序前,先將需要保存的數(shù)據(jù)壓入堆棧中保存。以備返回時(shí),再?gòu)?fù)原當(dāng)時(shí)的數(shù)據(jù)。供主程序繼續(xù)執(zhí)行。轉(zhuǎn)入中斷服務(wù)程序或子程序時(shí),需要保存的數(shù)據(jù)可能有若干個(gè),都需要一一地保留。如果微處理器進(jìn)行多重子程序或中斷服務(wù)程序嵌套,那么需保存的數(shù)據(jù)就更多,這要求堆棧還需要有相當(dāng)?shù)娜萘?。否則會(huì)造成堆棧溢出,丟失應(yīng)備份的數(shù)據(jù)。輕者使運(yùn)算和執(zhí)行結(jié)果錯(cuò)誤,重則使整個(gè)程序紊亂。

堆棧的設(shè)立是為了中斷操作和子程序的調(diào)用而用于保存數(shù)據(jù)的,即常26

MCS-51的堆棧是在RAM中開(kāi)辟的,即堆棧要占據(jù)一定的RAM存儲(chǔ)單元。同時(shí)MCS-51的堆??梢杂捎脩?hù)設(shè)置,SP的初始值不同,堆棧的位置則不一定,不同的設(shè)計(jì)人員,使用的堆棧區(qū)則不同,不同的應(yīng)用要求,堆棧要求的容量也有所不同。堆棧的操作只有兩種,即進(jìn)棧和出棧,但不管是向堆棧寫(xiě)入數(shù)據(jù)還是從堆棧中讀出數(shù)據(jù),都是對(duì)棧頂單元進(jìn)行的,SP就是即時(shí)指示出棧頂?shù)奈恢茫吹刂罚T谧映绦蛘{(diào)用和中斷服務(wù)程序響應(yīng)的開(kāi)始和結(jié)束期間,CPU都是根據(jù)SP指示的地址與相應(yīng)的RAM存儲(chǔ)單元交換數(shù)據(jù)。

堆棧的操作有兩種方法:其一是自動(dòng)方式,即在中斷服務(wù)程序響應(yīng)或子程序調(diào)用時(shí),返回地址自動(dòng)進(jìn)棧。當(dāng)需要返回執(zhí)行主程序時(shí),返回的地址自動(dòng)交給PC,以保證程序從斷點(diǎn)處繼續(xù)執(zhí)行,這種方式是不需要編程人員干預(yù)的。第二種方式是人工指令方式,使用專(zhuān)有的堆棧操作指令進(jìn)行進(jìn)出棧操作,也只有兩條指令:進(jìn)棧為PUSH指令,在中斷服務(wù)程序或子程序調(diào)用時(shí)作為現(xiàn)場(chǎng)保護(hù)。出棧操作POP指令,用于子程序完成時(shí),為主程序恢復(fù)現(xiàn)場(chǎng)。

MCS-51的堆棧是在RAM中開(kāi)辟的,即堆棧要占據(jù)一定的R27

I/O口專(zhuān)用寄存器(P0、P1、P2、P3)

I/O口寄存器P0、P1、P2和P3分別是MCS-51單片機(jī)的四組I/O口鎖存器。MCS-51單片機(jī)并沒(méi)有專(zhuān)門(mén)的I/O口操作指令,而是把I/O口也當(dāng)作一般的寄存器來(lái)使用,數(shù)據(jù)傳送都統(tǒng)一使用MOV指令來(lái)進(jìn)行,這樣的好處在于,四組I/O口還可以當(dāng)作寄存器直接尋址方式參與其他操作。

定時(shí)/計(jì)數(shù)器(TL0、TH0、TL1和TH1)

MCS-51單片機(jī)中有兩個(gè)16位的定時(shí)/計(jì)數(shù)器T0和T1,它們由四個(gè)8位寄存器組成的,兩個(gè)16位定時(shí)/計(jì)數(shù)器卻是完全獨(dú)立的。我們可以單獨(dú)對(duì)這四個(gè)寄存器進(jìn)行尋址,但不能把T0和T1當(dāng)作16位寄存來(lái)使用。

定時(shí)/計(jì)數(shù)器方式選擇寄存器(TMOD)

TMOD寄存器是一個(gè)專(zhuān)用寄存器,用于控制兩個(gè)定時(shí)計(jì)數(shù)器的工作方式,TMOD可以用字節(jié)傳送指令設(shè)置其內(nèi)容,但不能位尋址,各位的定義如下

I/O口專(zhuān)用寄存器(P0、P1、P2、P3)28材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件29材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件30材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件31材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件32材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件33注意:在不外擴(kuò)ROM/RAM時(shí),P0~P3均可作通用I/O口使用,而且都是準(zhǔn)雙向I/O口!注意:在不外擴(kuò)ROM/RAM時(shí),P0~P3均可作通用I/O口34材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件3551單片機(jī)外部程序存儲(chǔ)器(ROM)和外部數(shù)據(jù)存儲(chǔ)器(RAM)的總線(xiàn)擴(kuò)展電路圖51單片機(jī)外部程序存儲(chǔ)器(ROM)和外部數(shù)據(jù)存儲(chǔ)器(RAM)36材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件37材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件38材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件39材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件40材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件41材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件42材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件43材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件44材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件45材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件46材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件47材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件48材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件49材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件50用8051單片機(jī)控制報(bào)警聲產(chǎn)生實(shí)例1.實(shí)驗(yàn)任務(wù)用P1.0輸出1KHz和500Hz的音頻信號(hào)驅(qū)動(dòng)揚(yáng)聲器,作報(bào)警信號(hào),要求1KHz信號(hào)響100ms,500Hz信號(hào)響200ms,交替進(jìn)行,P1.7接一開(kāi)關(guān)進(jìn)行控制,當(dāng)開(kāi)關(guān)合上響報(bào)警信號(hào),當(dāng)開(kāi)關(guān)斷開(kāi)告警信號(hào)停止,編出程序。用8051單片機(jī)控制報(bào)警聲產(chǎn)生實(shí)例1.實(shí)驗(yàn)任務(wù)512.電路原理圖2.電路原理圖52“單片機(jī)系統(tǒng)”區(qū)域中的P1.0端口用導(dǎo)線(xiàn)連接到“音頻放大模塊”區(qū)域中的SPKIN端口上;在“音頻放大模塊”區(qū)域中的SPKOUT端口上接上一個(gè)8歐的或者是16歐的喇叭;把“單片機(jī)系統(tǒng)”區(qū)域中的P1.7/RD端口用導(dǎo)線(xiàn)連接到“四路撥動(dòng)開(kāi)關(guān)”區(qū)域中的K1端口上;“單片機(jī)系統(tǒng)”區(qū)域中的P1.0端口用導(dǎo)線(xiàn)連接到“音頻放大模塊53步進(jìn)電機(jī)驅(qū)動(dòng)實(shí)例接線(xiàn)圖步進(jìn)電機(jī)驅(qū)動(dòng)實(shí)例接線(xiàn)圖54第八章材料加工過(guò)程的單片機(jī)控制8.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成8.2交流電阻焊單片機(jī)控制8.3氣體滲碳爐的單片機(jī)控制8.4燃?xì)饧訜釥t溫度的單片機(jī)控制第八章材料加工過(guò)程的單片機(jī)控制8.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)558.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成MCS-51系列單片機(jī)的結(jié)構(gòu)MCS是Intel公司單片機(jī)的系列符號(hào)。Intel推出有MCS-48、MCS-51、MCS-96系列單片機(jī)。MCS-51系列包括三個(gè)基本型8031、8051、8751,以及對(duì)應(yīng)的低功耗型號(hào)80C31、80C51、87C51,因而MCS-51特指Intel的這幾種型號(hào)。20世紀(jì)80年代中期以后,Intel以專(zhuān)利轉(zhuǎn)讓的形式把8051內(nèi)核給了許多半導(dǎo)體廠(chǎng)家,這些廠(chǎng)家生產(chǎn)的芯片是MCS-51系列的兼容產(chǎn)品,準(zhǔn)確地說(shuō)是與MCS-51指令系統(tǒng)兼容的單片機(jī)。這些單片機(jī)與8051的系統(tǒng)結(jié)構(gòu)(主要是指令系統(tǒng))相同,采用CMOS工藝,因而常用80C51系列來(lái)稱(chēng)呼所有具有8051指令系統(tǒng)的單片機(jī)。他們對(duì)8051一般都作了一些擴(kuò)充,更有特點(diǎn)、功能更強(qiáng)、市場(chǎng)競(jìng)爭(zhēng)力更強(qiáng)。8051是MCS-51系列單片機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。8.1單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成MCS-51系列單片機(jī)的結(jié)構(gòu)561.8051單片機(jī)的內(nèi)部結(jié)構(gòu)8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和控制總線(xiàn)等三大總線(xiàn),現(xiàn)在我們分別加以說(shuō)明:1.8051單片機(jī)的內(nèi)部結(jié)構(gòu)8051單片機(jī)包含中央處理器、57材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件58材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件59中央處理器(CPU):是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)的協(xié)調(diào)工作,完成加減乘除及邏輯運(yùn)算和控制輸入輸出功能等操作。

·數(shù)據(jù)存儲(chǔ)器(RAM):

8051內(nèi)部有128個(gè)8位用戶(hù)數(shù)據(jù)存儲(chǔ)單元和128個(gè)專(zhuān)用寄存器單元,它們是統(tǒng)一編址的,專(zhuān)用寄存器只能用于存放控制指令數(shù)據(jù),用戶(hù)只能訪(fǎng)問(wèn),而不能用于存放用戶(hù)數(shù)據(jù),所以,用戶(hù)能使用的的RAM只有128個(gè),可存放讀寫(xiě)的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶(hù)定義的字型表。

中央處理器(CPU):是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度60程序存儲(chǔ)器(ROM):

8051共有4096個(gè)8位掩膜ROM,用于存放用戶(hù)程序,原始數(shù)據(jù)或表格。定時(shí)/計(jì)數(shù)器(ROM):

8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:

8051共有4組8位I/O口(P0、P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。全雙工串行口:

8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷系統(tǒng):

8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿(mǎn)足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。程序存儲(chǔ)器(ROM):

8051共有4096個(gè)8位掩膜ROM61時(shí)鐘電路:

8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。單片機(jī)的結(jié)構(gòu)有兩種類(lèi)型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的MCS-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。時(shí)鐘電路:

8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電62MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線(xiàn)兩根,外置石英振蕩器的時(shí)鐘線(xiàn)兩根,4組8位共32個(gè)I/O口,中斷口線(xiàn)與P3口線(xiàn)復(fù)用?,F(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:MCS-51的引腳說(shuō)明:6320:接地腳。40:正電源腳,正常工作或?qū)ζ瑑?nèi)EPROM燒寫(xiě)程序時(shí),接+5V電源。19:時(shí)鐘XTAL1腳,片內(nèi)振蕩電路的輸入端。18:時(shí)鐘XTAL2腳,片內(nèi)振蕩電路的輸出端。8051的時(shí)鐘有兩種方式,一種是片內(nèi)時(shí)鐘振蕩方式,但需在18和19腳外接石英晶體(2-12MHz)和振蕩電容,振蕩電容的值一般取10p-30p。另外一種是外部時(shí)鐘方式,即將XTAL1接地,外部時(shí)鐘信號(hào)從XTAL2腳輸入。20:接地腳。64材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件65材料加工過(guò)程的單片機(jī)控制81單片機(jī)結(jié)構(gòu)及控制系統(tǒng)組成82課件669:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指鐘寫(xiě)入07H,其它專(zhuān)用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開(kāi)始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),

8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,見(jiàn)下圖。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。9:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電67程序存儲(chǔ)器

一個(gè)微處理器能夠聰明地執(zhí)行某種任務(wù),除了它們強(qiáng)大的硬件外,還需要它們運(yùn)行的軟件,其實(shí)微處理器并不聰明,它們只是完全按照人們預(yù)先編寫(xiě)的程序而執(zhí)行之。那么設(shè)計(jì)人員編寫(xiě)的程序就存放在微處理器的程序存儲(chǔ)器中,俗稱(chēng)只讀程序存儲(chǔ)器(ROM)。程序相當(dāng)于給微處理器處理問(wèn)題的一系列命令。其實(shí)程序和數(shù)據(jù)一樣,都是由機(jī)器碼組成的代碼串。只是程序代碼則存放于程序存儲(chǔ)器中。

MCS-51具有64kB程序存儲(chǔ)器尋址空間,它是用于存放用戶(hù)程序、數(shù)據(jù)和表格等信息。對(duì)于內(nèi)部無(wú)ROM的8031單片機(jī),它的程序存儲(chǔ)器必須外接,空間地址為64kB,此時(shí)單片機(jī)的EA-端必須接地。強(qiáng)制CPU從外部程序存儲(chǔ)器讀取程序。對(duì)于內(nèi)部有ROM的8051等單片機(jī),正常運(yùn)行時(shí),EA-則需接高電平,使CPU先從內(nèi)部的程序存儲(chǔ)中讀取程序,當(dāng)PC值超過(guò)內(nèi)部ROM的容量時(shí),才會(huì)轉(zhuǎn)向外部的程序存儲(chǔ)器讀取程序。

程序存儲(chǔ)器

一個(gè)微處理器能夠聰明地執(zhí)行某種任務(wù),除了688051片內(nèi)有4kB的程序存儲(chǔ)單元,其地址為0000H—0FFFH,單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000H,所以系統(tǒng)將從0000H單元開(kāi)始執(zhí)行程序。但在程序存儲(chǔ)中有些特殊的單元,這在使用中應(yīng)加以注意:

其中一組特殊是0000H—0002H單元,系統(tǒng)復(fù)位后,PC為0000H,單片機(jī)從0000H單元開(kāi)始執(zhí)行程序,如果程序不是從0000H單元開(kāi)始,則應(yīng)在這三個(gè)單元中存放一條無(wú)條件轉(zhuǎn)移指令,讓CPU直接去執(zhí)行用戶(hù)指定的程序。

另一組特殊單元是0003H—002AH,這40個(gè)單元各有用途,它們被均勻地分為五段,它們的定義如下:

0003H—000AH

外部中斷0中斷地址區(qū)。

000BH—0012H

定時(shí)/計(jì)數(shù)器0中斷地址區(qū)。

0013H—001AH

外部中斷1中斷地址區(qū)。

001BH—0022H

定時(shí)/計(jì)數(shù)器1中斷地址區(qū)。

0023H—002AH

串行中斷地址區(qū)。

8051片內(nèi)有4kB的程序存儲(chǔ)單元,其地址為0000H—0F69可見(jiàn)以上的40個(gè)單元是專(zhuān)門(mén)用于存放中斷處理程序的地址單元,中斷響應(yīng)后,按中斷的類(lèi)型,自動(dòng)轉(zhuǎn)到各自的中斷區(qū)去執(zhí)行程序。因此以上地址單元不能用于存放程序的其他內(nèi)容,只能存放中斷服務(wù)程序。但是通常情況下,每段只有8個(gè)地址單元是不能存下完整的中斷服務(wù)程序的,因而一般也在中斷響應(yīng)的地址區(qū)安放一條無(wú)條件轉(zhuǎn)移指令,指向程序存儲(chǔ)器的其它真正存放中斷服務(wù)程序的空間去執(zhí)行,這樣中斷響應(yīng)后,CPU讀到這條轉(zhuǎn)移指令,便轉(zhuǎn)向其他地方去繼續(xù)執(zhí)行中斷服務(wù)程序??梢?jiàn)以上的40個(gè)單元是專(zhuān)門(mén)用于存放中斷處理程序的地址單元,中70數(shù)據(jù)存儲(chǔ)器

數(shù)據(jù)存儲(chǔ)器也稱(chēng)為隨機(jī)存取數(shù)據(jù)存儲(chǔ)器。MCS-51單片機(jī)的數(shù)據(jù)存儲(chǔ)器在物理上和邏輯上都分為兩個(gè)地址空間,一個(gè)是內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)和一個(gè)外部數(shù)據(jù)存儲(chǔ)區(qū)。MCS-51內(nèi)部RAM有128或256個(gè)字節(jié)的用戶(hù)數(shù)據(jù)存儲(chǔ)(不同的型號(hào)有分別),它們是用于存放執(zhí)行的中間結(jié)果和過(guò)程數(shù)據(jù)的。MCS-51的數(shù)據(jù)存儲(chǔ)器均可讀寫(xiě),部分單元還可以位尋址。數(shù)據(jù)存儲(chǔ)器

數(shù)據(jù)存儲(chǔ)器也稱(chēng)為隨機(jī)存取數(shù)據(jù)存儲(chǔ)器。MCS-51718051內(nèi)部RAM共有256個(gè)單元,這256個(gè)單元共分為兩部分。其一是地址從00H—7FH單元(共128個(gè)字節(jié))為用戶(hù)數(shù)據(jù)RAM。從80H—FFH地址單元(也是128個(gè)字節(jié))為特殊寄存器(SFR)單元。內(nèi)部RAM的20H—2FH單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對(duì)它們的位進(jìn)行尋址。位尋址區(qū)共有16個(gè)字節(jié),128個(gè)位,位地址為00H—7FH。CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉(zhuǎn)移,傳送和邏輯等操作。我們常稱(chēng)MCS-51具有布爾處理功能,布爾處理的存儲(chǔ)空間指的就是這些為尋址區(qū)。

8051內(nèi)部RAM共有256個(gè)單元,這256個(gè)單元共分為兩部72

特殊功能寄存器(SFR)也稱(chēng)為專(zhuān)用寄存器,特殊功能寄存器反映了MCS-51單片機(jī)的運(yùn)行狀態(tài)。很多功能也通過(guò)特殊功能寄存器來(lái)定義和控制程序的執(zhí)行。

MCS-51有21個(gè)特殊功能寄存器,它們被離散地分布在內(nèi)部RAM的80H—FFH地址中,這些寄存的功能已作了專(zhuān)門(mén)的規(guī)定,用戶(hù)不能修改其結(jié)構(gòu)。表2是特殊功能寄存器分布一覽表,我們對(duì)其主要的寄存器作一些簡(jiǎn)單的介紹。

特殊功能寄存器(SFR)也稱(chēng)為專(zhuān)用寄存器,特殊功能寄存器73

程序計(jì)數(shù)器PC(programCounter)

程序計(jì)數(shù)器在物理上是獨(dú)立的,它不屬于特殊內(nèi)部數(shù)據(jù)存儲(chǔ)器塊中。PC是一個(gè)16位的計(jì)數(shù)器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64kB,PC有自動(dòng)加1功能,即完成了一條指令的執(zhí)行后,其內(nèi)容自動(dòng)加1,程序執(zhí)行到什么地方,程序計(jì)數(shù)器PC就指到哪里。PC本身并沒(méi)有地址,因而不可尋址,用戶(hù)無(wú)法對(duì)它進(jìn)行讀寫(xiě),但是可以通過(guò)轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以控制程序按我們的要求去執(zhí)行。

程序計(jì)數(shù)器PC(programCounter)

74累加器ACC(Accumulator)

累加器A是一個(gè)最常用的專(zhuān)用寄存器,大部分單操作指令的一個(gè)操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個(gè)操作數(shù)也取自累加器。加、減、乘、除法運(yùn)算的指令,運(yùn)算結(jié)果都存放于累加器A或AB累加器對(duì)中。大部分的數(shù)據(jù)操作都會(huì)通過(guò)累加器A進(jìn)行,它形象于一個(gè)交通要道,在程序比較復(fù)雜的運(yùn)算中,累加器成了制約軟件效率的“瓶頸”,它的功能較多,地位也十分重要。以至于后來(lái)發(fā)展的單片機(jī),有的集成了多累加器結(jié)構(gòu),或者使用寄存器陣列來(lái)代替累加器,即賦予更多寄存器以累加器的功能,目的是解決累加器的“交通堵塞”問(wèn)題。提高單片機(jī)的軟件效率。寄存器B

在乘除法指令中,乘法指令中的兩個(gè)操作數(shù)分別取自累加器A和寄存器B,其結(jié)果存放于AB寄存器對(duì)中。除法指令中,被除數(shù)取自累加器A,除數(shù)取自寄存器B,結(jié)果商存放于累加器A,余數(shù)存放于寄存器B中。累加器ACC(Accumulator)

累加器A是一75

程序狀態(tài)字(ProgramStatusWord)

程序狀態(tài)字是一個(gè)8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,這個(gè)寄存器的一些位可由軟件設(shè)置,有些位則由硬件運(yùn)行時(shí)自動(dòng)設(shè)置的。PSW用來(lái)存放兩類(lèi)信息:一類(lèi)是體現(xiàn)當(dāng)前指令執(zhí)行結(jié)果的各種狀態(tài)信息,如有無(wú)進(jìn)位(CY位),有無(wú)溢出(OV位),奇偶標(biāo)志位(P位)等;另一類(lèi)是存放控制信息,如允許中斷(IF位),跟蹤標(biāo)志(TF位)等。有些機(jī)器中將PSW稱(chēng)為標(biāo)志寄存器FR(FlagRegister)。寄存器的各位定義如下,其中PSW.1是保留位,未使用。下表是它的功能說(shuō)明,并對(duì)各個(gè)位的定義介紹如下:

程序狀態(tài)字(ProgramStatusWord)

76PSW.7(CY)

進(jìn)位標(biāo)志位,此位有兩個(gè)功能:一是存放執(zhí)行某寫(xiě)算數(shù)運(yùn)算時(shí),存放進(jìn)位標(biāo)志,可被硬件或軟件置位或清零。二是在位操作中作累加位使用。PSW.6(AC)

輔助進(jìn)位標(biāo)志位,當(dāng)進(jìn)行加、減運(yùn)算時(shí)當(dāng)有低4位向高4位進(jìn)位或借位時(shí),AC置位,否則被清零。AC輔助進(jìn)位位也常用于十進(jìn)制調(diào)整。PSW.5(F0)

用戶(hù)標(biāo)志位,供用戶(hù)設(shè)置的標(biāo)志位。PSW.4、PSW.3(RS1和RS0)

寄存器組選擇位。PSW.2(OV)

溢出標(biāo)志。帶符號(hào)加減運(yùn)算中,超出了累加器A所能表示的符號(hào)數(shù)有效范圍(-128—+127)時(shí),即產(chǎn)生溢出,OV=1。表明運(yùn)算運(yùn)算結(jié)果錯(cuò)誤。如果OV=0,表明運(yùn)算結(jié)果正確。

PSW.0(P)

奇偶校驗(yàn)位。聲明累加器A的奇偶性,

PSW.7(CY)

進(jìn)位標(biāo)志位,此位有兩個(gè)功能:一是存放執(zhí)行77

數(shù)據(jù)指針(DPTR)

數(shù)據(jù)指針為16位寄存器,編程時(shí),既可以按16位寄存器來(lái)使用,也可以按兩個(gè)8位寄存器來(lái)使用,即高位字節(jié)寄存器DPH和低位字節(jié)DPL。

DPTR主要是用來(lái)保存16位地址,當(dāng)對(duì)64kB外部數(shù)據(jù)存儲(chǔ)器尋址時(shí),可作為間址寄存器使用,此時(shí),使用如下兩條指令:

MOVX

A,

@DPTR

MOVX

@DPTR,

A

在訪(fǎng)問(wèn)程序存儲(chǔ)器時(shí),DPTR可用來(lái)作基址寄存器,采用基址+變址尋址方式訪(fǎng)問(wèn)程序存儲(chǔ)器,這條指令常用于讀取程序存儲(chǔ)器內(nèi)的表格數(shù)據(jù)。

MOVC

A,

@A+@DPTR

數(shù)據(jù)指針(DPTR)

數(shù)據(jù)指針為16位寄存器,編程78

堆棧指針SP(StackPointer)

堆棧是一種數(shù)據(jù)結(jié)構(gòu),它是一個(gè)8位寄存器,它指示堆棧頂部在內(nèi)部RAM中的位置。系統(tǒng)復(fù)位后,SP的初始值為07H,使得堆棧實(shí)際上是從08H開(kāi)始的。但我們從RAM的結(jié)構(gòu)分布中可知,08H—1FH隸屬1—3工作寄存器區(qū),若編程時(shí)需要用到這些數(shù)據(jù)單元,必須對(duì)堆棧指針SP進(jìn)行初始化,原則上設(shè)在任何一個(gè)區(qū)域均可,但一般設(shè)在30H—1FH之間較為適宜。

數(shù)據(jù)的寫(xiě)入堆棧我們稱(chēng)為入棧(PUSH,有些文獻(xiàn)也稱(chēng)作插入運(yùn)算或壓入),從堆棧中取出數(shù)據(jù)稱(chēng)為出棧(POP,也稱(chēng)為刪除運(yùn)算或彈出),堆棧的最主要特征是“后進(jìn)先出”規(guī)則,也即最先入棧的數(shù)據(jù)放在堆棧的最底部,而最后入棧的數(shù)據(jù)放在棧的頂部,因此,最后入棧的數(shù)據(jù)出棧時(shí)則是最先的。

堆棧指針SP(StackPointer)

堆棧79堆棧的設(shè)立是為了中斷操作和子程序的調(diào)用而用于保存數(shù)據(jù)的,即常說(shuō)的斷點(diǎn)保護(hù)和現(xiàn)場(chǎng)保護(hù)。微處理器無(wú)論是在轉(zhuǎn)入子程序和中斷服務(wù)程序的執(zhí)行,執(zhí)行完后,還是要回到主程序中來(lái),在轉(zhuǎn)入子程序和中斷服務(wù)程序前,必須先將現(xiàn)場(chǎng)的數(shù)據(jù)進(jìn)行保存起來(lái),否則返回時(shí),CPU并不知道原來(lái)的程序執(zhí)行到哪一步,原來(lái)的中間結(jié)果如何?所以在轉(zhuǎn)入執(zhí)行其它子程序前,先將需要保存的數(shù)據(jù)壓入堆棧中保存。以備返回時(shí),再?gòu)?fù)原當(dāng)時(shí)的數(shù)據(jù)。供主程序繼續(xù)執(zhí)行。轉(zhuǎn)入中斷服務(wù)程序或子程序時(shí),需要保存的數(shù)據(jù)可能有若干個(gè),都需要一一地保留。如果微處理器進(jìn)行多重子程序或中斷服務(wù)程序嵌套,那么需保存的數(shù)據(jù)就更多,這要求堆棧還需要有相當(dāng)?shù)娜萘?。否則會(huì)造成堆棧溢出,丟失應(yīng)備份的數(shù)據(jù)。輕者使運(yùn)算和執(zhí)行結(jié)果錯(cuò)誤,重則使整個(gè)程序紊亂。

堆棧的設(shè)立是為了中斷操作和子程序的調(diào)用而用于保存數(shù)據(jù)的,即常80

MCS-51的堆棧是在RAM中開(kāi)辟的,即堆棧要占據(jù)一定的RAM存儲(chǔ)單元。同時(shí)MCS-51的堆棧可以由用戶(hù)設(shè)置,SP的初始值不同,堆棧的位置則不一定,不同的設(shè)計(jì)人員,使用的堆棧區(qū)則不同,不同的應(yīng)用要求,堆棧要求的容量也有所不同。堆棧的操作只有兩種,即進(jìn)棧和出棧,但不管是向堆棧寫(xiě)入數(shù)據(jù)還是從堆棧中讀出數(shù)據(jù),都是對(duì)棧頂單元進(jìn)行的,SP就是即時(shí)指示出棧頂?shù)奈恢茫吹刂罚?。在子程序調(diào)用和中斷服務(wù)程序響應(yīng)的開(kāi)始和結(jié)束期間,CPU都是根據(jù)SP指示的地址與相應(yīng)的RAM存儲(chǔ)單元交換數(shù)據(jù)。

堆棧的操作有兩種方法:其一是自動(dòng)方式,即在中斷服務(wù)程序響應(yīng)或子程序調(diào)用時(shí),返回地址自動(dòng)進(jìn)棧。當(dāng)需要返回執(zhí)行主程序時(shí),返回的地址自動(dòng)交給PC,以保證程序從斷點(diǎn)處繼續(xù)執(zhí)行,這種方式是不需要編程人員干預(yù)的。第二種方式是人工指令方式,使用專(zhuān)有的堆

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論