8051有4組8位I/O口:P0、P1、P2和P3口,P1、P2和P3為準(zhǔn)雙向口,P0口則為雙向三態(tài)輸入輸出口,下面我們分別介紹這幾個(gè)口線: ????·P0口和P2口: ????右圖為P0口和P2口其中一位的電路圖,由圖可見,電路中包含一個(gè)數(shù)據(jù)輸出鎖存器和兩個(gè)三態(tài)數(shù)據(jù)輸入緩沖器,另外還有一個(gè)數(shù)據(jù)輸出的驅(qū)動(dòng)和控制電路。這兩組口線用來作為CPU與外部數(shù)據(jù)存儲(chǔ)器、外部程序存儲(chǔ)器和I/O擴(kuò)展口,而不能象P1、P3直接用作輸出口。它們一起可以作為外部地址總線,P0口身兼兩職,既可作為地址總線,也可作為數(shù)據(jù)總線。參考圖2。 |
????P2口作為外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器的地址總線的高8位輸出口AB8-AB15,P0口由ALE選通作為地址總線的低8位輸出口AB0-AB7。外部的程序存儲(chǔ)器由PSEN信號(hào)選通,數(shù)據(jù)存儲(chǔ)器則由WR和RD讀寫信號(hào)選通,因?yàn)?16=64k,所以8051最大可外接64kB的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。 ???? |
????·P1口: ????右圖為P1口其中一位的電路圖,P1口為8位準(zhǔn)雙向口,每一位均可單獨(dú)定義為輸入或輸出口,當(dāng)作為輸入口時(shí),1寫入鎖存器,Q(非)=0,T2截止,內(nèi)上拉電阻將電位拉至"1",此時(shí)該口輸出為1,當(dāng)0寫入鎖存器,Q(非)=1,T2導(dǎo)通,輸出則為0。 ????作為輸入口時(shí),鎖存器置1,Q(非)=0,T2截止,此時(shí)該位既可以把外部電路拉成低電平,也可由內(nèi)部上拉電阻拉成高電平,正因?yàn)檫@個(gè)原因,所以P1口常稱為準(zhǔn)雙向口。需要說明的是,作為輸入口使用時(shí),有兩種情況,其一是:首先是讀鎖存器的內(nèi)容,進(jìn)行處理后再寫到鎖存器中,這種操作即讀—修改—寫操作,象JBC(邏輯判斷)、CPL(取反)、INC(遞增)、DEC(遞減)、ANL(與邏輯)和ORL(邏輯或)指令均屬于這類操作。其二是:讀P1口線狀態(tài)時(shí),打開三態(tài)門G2,將外部狀態(tài)讀入CPU。 |
????·P3口: ????P3口的電路如上圖所示,P3口為準(zhǔn)雙向口,為適應(yīng)引腳的第二功能的需要,增加了第二功能控制邏輯,在真正的應(yīng)用電路中,第二功能顯得更為重要。由于第二功能信號(hào)有輸入輸出兩種情況,我們分別加以說明。 ????P3口的輸入輸出及P3口鎖存器、中斷、定時(shí)/計(jì)數(shù)器、串行口和特殊功能寄存器有關(guān),P3口的第一功能和P1口一樣可作為輸入輸出端口,同樣具有字節(jié)操作和位操作兩種方式,在位操作模式下,每一位均可定義為輸入或輸出。 ????我們著重討論P(yáng)3口的第二功能,P3口的第二功能各管腳定義如下: ????·P3.0????串行輸入口(RXD) ????·P3.1????串行輸出口(TXD) ????·P3.2????外中斷0(INT0) ????·P3.3????外中斷1(INT1) ????·P3.4????定時(shí)/計(jì)數(shù)器0的外部輸入口(T0) ????·P3.5????定時(shí)/計(jì)數(shù)器1的外部輸入口(T1) ????·P3.6????外部數(shù)據(jù)存儲(chǔ)器寫選通(WR) ????·P3.7????外部數(shù)據(jù)存儲(chǔ)器讀選通(RD) |
????對(duì)于第二功能為輸出引腳,當(dāng)作I/O口使用時(shí),第二功能信號(hào)線應(yīng)保持高電平,與非門開通,以維持從鎖存器到輸出口數(shù)據(jù)輸出通路暢通無阻。而當(dāng)作第二功能口線使用時(shí),該位的鎖存器置高電平,使與非門對(duì)第二功能信號(hào)的輸出是暢通的,從而實(shí)現(xiàn)第二功能信號(hào)的輸出。對(duì)于第二功能為輸入的信號(hào)引腳,在口線上的輸入通路增設(shè)了一個(gè)緩沖器,輸入的第二功能信號(hào)即從這個(gè)緩沖器的輸出端取得。而作為I/O口線輸入端時(shí),取自三態(tài)緩沖器的輸出端。這樣,不管是作為輸入口使用還是第二功能信號(hào)輸入,輸出電路中的鎖存器輸出和第二功能輸出信號(hào)線均應(yīng)置“1”。 |
?????程序存儲(chǔ)器
????一個(gè)微處理器能夠聰明地執(zhí)行某種任務(wù),除了它們強(qiáng)大的硬件外,還需要它們運(yùn)行的軟件,其實(shí)微處理器并不聰明,它們只是完全按照人們預(yù)先編寫的程序而執(zhí)行之。那么設(shè)計(jì)人員編寫的程序就存放在微處理器的程序存儲(chǔ)器中,俗稱只讀程序存儲(chǔ)器(ROM)。程序相當(dāng)于給微處理器處理問題的一系列命令。其實(shí)程序和數(shù)據(jù)一樣,都是由機(jī)器碼組成的代碼串。只是程序代碼則存放于程序存儲(chǔ)器中。
????MCS-51具有64kB程序存儲(chǔ)器尋址空間,它是用于存放用戶程序、數(shù)據(jù)和表格等信息。對(duì)于內(nèi)部無ROM的8031單片機(jī),它的程序存儲(chǔ)器必須外接,空間地址為64kB,此時(shí)單片機(jī)的端必須接地。強(qiáng)制CPU從外部程序存儲(chǔ)器讀取程序。對(duì)于內(nèi)部有ROM的8051等單片機(jī),正常運(yùn)行時(shí),則需接高電平,使CPU先從內(nèi)部的程序存儲(chǔ)中讀取程序,當(dāng)PC值超過內(nèi)部ROM的容量時(shí),才會(huì)轉(zhuǎn)向外部的程序存儲(chǔ)器讀取程序。
????8051片內(nèi)有4kB的程序存儲(chǔ)單元,其地址為0000H—0FFFH,單片機(jī)啟動(dòng)復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000H,所以系統(tǒng)將從0000H單元開始執(zhí)行程序。但在程序存儲(chǔ)中有些特殊的單元,這在使用中應(yīng)加以注意:
????其中一組特殊是0000H—0002H單元,系統(tǒng)復(fù)位后,PC為0000H,單片機(jī)從0000H單元開始執(zhí)行程序,如果程序不是從0000H單元開始,則應(yīng)在這三個(gè)單元中存放一條無條件轉(zhuǎn)移指令,讓CPU直接去執(zhí)行用戶指定的程序。
????另一組特殊單元是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ū)。
????可見以上的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ù)程序。
?????數(shù)據(jù)存儲(chǔ)器
????數(shù)據(jù)存儲(chǔ)器也稱為隨機(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é)的用戶數(shù)據(jù)存儲(chǔ)(不同的型號(hào)有分別),它們是用于存放執(zhí)行的中間結(jié)果和過程數(shù)據(jù)的。MCS-51的數(shù)據(jù)存儲(chǔ)器均可讀寫,部分單元還可以位尋址。
????8051內(nèi)部RAM共有256個(gè)單元,這256個(gè)單元共分為兩部分。其一是地址從00H—7FH單元(共128個(gè)字節(jié))為用戶數(shù)據(jù)RAM。從80H—FFH地址單元(也是128個(gè)字節(jié))為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結(jié)構(gòu)分布。 ????在00H—1FH共32個(gè)單元中被均勻地分為四塊,每塊包含八個(gè)8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那么在程序中怎么區(qū)分和使用它們呢?聰明的INTEL工程師們又安排了一個(gè)寄存器——程序狀態(tài)字寄存器(PSW)來管理它們,CPU只要定義這個(gè)寄存的PSW的第3和第4位(RS0和RS1),即可選中這四組通用寄存器。對(duì)應(yīng)的編碼關(guān)系如圖2所示。 |
????內(nèi)部RAM的20H—2FH單元為位尋址區(qū),既可作為一般單元用字節(jié)尋址,也可對(duì)它們的位進(jìn)行尋址。位尋址區(qū)共有16個(gè)字節(jié),128個(gè)位,位地址為00H—7FH。位地址分配如表1所示,CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、求“反”、轉(zhuǎn)移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲(chǔ)空間指的就是這些為尋址區(qū)。 |
表1??RAM位尋址區(qū)地址表 | |||||||||
單元地址 | MSB????????位地址????????LSB | ||||||||
2FH | 7FH | 7EH | 7DH | 7CH | 7BH | 7AH | 79H | 78H | |
2EH | 77H | 76H | 75H | 74H | 73H | 72H | 71H | 70H | |
2DH | 6FH | 6EH | 6DH | 6CH | 6BH | 6AH | 69H | 68H | |
2CH | 67H | 66H | 65H | 64H | 63H | 62H | 61H | 60H | |
2BH | 5FH | 5EH | 5DH | 5CH | 5BH | 5AH | 59H | 58H | |
2AH | 57H | 56H | 55H | 54H | 53H | 52H | 51H | 50H | |
29H | 4FH | 4EH | 4DH | 4CH | 4BH | 4AH | 49H | 48H | |
28H | 47H | 46H | 45H | 44H | 43H | 42H | 41H | 40H | |
27H | 3FH | 3EH | 3DH | 3CH | 3BH | 3AH | 39H | 38H | |
26H | 37H | 36H | 35H | 34H | 33H | 32H | 31H | 30H | |
25H | 2FH | 2EH | 2DH | 2CH | 2BH | 2AH | 29H | 28H | |
24H | 27H | 26H | 25H | 24H | 23H | 22H | 21H | 20H | |
23H | 1FH | 1EH | 1DH | 1CH | 1BH | 1AH | 19H | 18H | |
22H | 17H | 16H | 15H | 14H | 13H | 12H | 11H | 10H | |
21H | 0FH | 0EH | 0DH | 0CH | 0BH | 0AH | 09H | 08H | |
20H | 07H | 06H | 05H | 04H | 03H | 02H | 01H | 00H |
????特殊功能寄存器(SFR)也稱為專用寄存器,特殊功能寄存器反映了MCS-51單片機(jī)的運(yùn)行狀態(tài)。很多功能也通過特殊功能寄存器來定義和控制程序的執(zhí)行。
????MCS-51有21個(gè)特殊功能寄存器,它們被離散地分布在內(nèi)部RAM的80H—FFH地址中,這些寄存的功能已作了專門的規(guī)定,用戶不能修改其結(jié)構(gòu)。表2是特殊功能寄存器分布一覽表,我們對(duì)其主要的寄存器作一些簡單的介紹。
?????程序計(jì)數(shù)器PC(program Counter) ????程序計(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。PC本身并沒有地址,因而不可尋址,用戶無法對(duì)它進(jìn)行讀寫,但是可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以控制程序按我們的要求去執(zhí)行。 ?????累加器ACC(Accumulator) ????累加器A是一個(gè)最常用的專用寄存器,大部分單操作指令的一個(gè)操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個(gè)操作數(shù)也取自累加器。加、減、乘、除法運(yùn)算的指令,運(yùn)算結(jié)果都存放于累加器A或AB累加器對(duì)中。大部分的數(shù)據(jù)操作都會(huì)通過累加器A進(jìn)行,它形象于一個(gè)交通要道,在程序比較復(fù)雜的運(yùn)算中,累加器成了制約軟件效率的“瓶頸”,它的功能較多,地位也十分重要。以至于后來發(fā)展的單片機(jī),有的集成了多累加器結(jié)構(gòu),或者使用寄存器陣列來代替累加器,即賦予更多寄存器以累加器的功能,目的是解決累加器的“交通堵塞”問題。提高單片機(jī)的軟件效率。 |
|
?????寄存器B ????在乘除法指令中,乘法指令中的兩個(gè)操作數(shù)分別取自累加器A和寄存器B,其結(jié)果存放于AB寄存器對(duì)中。除法指令中,被除數(shù)取自累加器A,除數(shù)取自寄存器B,結(jié)果商存放于累加器A,余數(shù)存放于寄存器B中。 ?????程序狀態(tài)字(Program Status Word) ????程序狀態(tài)字是一個(gè)8位寄存器,用于存放程序運(yùn)行的狀態(tài)信息,這個(gè)寄存器的一些位可由軟件設(shè)置,有些位則由硬件運(yùn)行時(shí)自動(dòng)設(shè)置的。寄存器的各位定義如下,其中PSW.1是保留位,未使用。下表是它的功能說明,并對(duì)各個(gè)位的定義介紹如下: |
表3???程序狀態(tài)字 | ||||||||
位序 | PSW.7 | PSW.6 | PSW.5 | PSW.4 | PSW.3 | PSW.2 | PSW.1 | PSW.0 |
位標(biāo)志 | CY | AC | F0 | RS1 | RS0 | OV | - | P |
?????PSW.7(CY)?進(jìn)位標(biāo)志位,此位有兩個(gè)功能:一是存放執(zhí)行某寫算數(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)?用戶標(biāo)志位,供用戶設(shè)置的標(biāo)志位。 ?????PSW.4、PSW.3(RS1和 RS0)?寄存器組選擇位??蓞⒁姳菊碌膱D2定義。 ?????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é)果正確。 ????執(zhí)行加法指令ADD時(shí),當(dāng)位6向位7進(jìn)位,而位7不向C進(jìn)位時(shí),OV=1?;蛘呶?不向位7進(jìn)位,而位7向C進(jìn)位時(shí),同樣OV=1。 ????除法指令,乘積超過255時(shí),OV=1。表面乘積在AB寄存器對(duì)中。若OV=0,則說明乘積沒有超過255,乘積只在累加器A中。 ????除法指令,OV=1,表示除數(shù)為0,運(yùn)算不被執(zhí)行。否則OV=0。 ?????PSW.0(P)?奇偶校驗(yàn)位。聲明累加器A的奇偶性,每個(gè)指令周期都由硬件來置位或清零,若值為1的位數(shù)奇數(shù),則P置位,否則清零。 |
????數(shù)據(jù)指針為16位寄存器,編程時(shí),既可以按16位寄存器來使用,也可以按兩個(gè)8位寄存器來使用,即高位字節(jié)寄存器DPH和低位字節(jié)DPL。
????DPTR主要是用來保存16位地址,當(dāng)對(duì)64kB外部數(shù)據(jù)存儲(chǔ)器尋址時(shí),可作為間址寄存器使用,此時(shí),使用如下兩條指令:
????????????MOVX????A,?@DPTR
????????????MOVX????@DPTR,?A
????在訪問程序存儲(chǔ)器時(shí),DPTR可用來作基址寄存器,采用基址+變址尋址方式訪問程序存儲(chǔ)器,這條指令常用于讀取程序存儲(chǔ)器內(nèi)的表格數(shù)據(jù)。
????????????MOVC????A,?@A+@DPTR
?????堆棧指針SP(Stack Pointer)
????堆棧是一種數(shù)據(jù)結(jié)構(gòu),它是一個(gè)8位寄存器,它指示堆棧頂部在內(nèi)部RAM中的位置。系統(tǒng)復(fù)位后,SP的初始值為07H,使得堆棧實(shí)際上是從08H開始的。但我們從RAM的結(jié)構(gòu)分布中可知,08H—1FH隸屬1—3工作寄存器區(qū),若編程時(shí)需要用到這些數(shù)據(jù)單元,必須對(duì)堆棧指針SP進(jìn)行初始化,原則上設(shè)在任何一個(gè)區(qū)域均可,但一般設(shè)在30H—1FH之間較為適宜。
????數(shù)據(jù)的寫入堆棧我們稱為入棧(PUSH,有些文獻(xiàn)也稱作插入運(yùn)算或壓入),從堆棧中取出數(shù)據(jù)稱為出棧(POP,也稱為刪除運(yùn)算或彈出),堆棧的最主要特征是“后進(jìn)先出”規(guī)則,也即最先入棧的數(shù)據(jù)放在堆棧的最底部,而最后入棧的數(shù)據(jù)放在棧的頂部,因此,最后入棧的數(shù)據(jù)出棧時(shí)則是最先的。這和我們往一個(gè)箱里存放書本一樣,需將最先放入箱底部的書取出,必須先取走最上層的書籍。這個(gè)道理非常相似。 ????那么堆棧有何用途呢?堆棧的設(shè)立是為了中斷操作和子程序的調(diào)用而用于保存數(shù)據(jù)的,即常說的斷點(diǎn)保護(hù)和現(xiàn)場保護(hù)。微處理器無論是在轉(zhuǎn)入子程序和中斷服務(wù)程序的執(zhí)行,執(zhí)行完后,還是要回到主程序中來,在轉(zhuǎn)入子程序和中斷服務(wù)程序前,必須先將現(xiàn)場的數(shù)據(jù)進(jìn)行保存起來,否則返回時(shí),CPU并不知道原來的程序執(zhí)行到哪一步,原來的中間結(jié)果如何?所以在轉(zhuǎn)入執(zhí)行其它子程序前,先將需要保存的數(shù)據(jù)壓入堆棧中保存。以備返回時(shí),再復(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è)程序紊亂。 ????MCS-51的堆棧是在RAM中開辟的,即堆棧要占據(jù)一定的RAM存儲(chǔ)單元。同時(shí)MCS-51的堆??梢杂捎脩粼O(shè)置,SP的初始值不同,堆棧的位置則不一定,不同的設(shè)計(jì)人員,使用的堆棧區(qū)則不同,不同的應(yīng)用要求,堆棧要求的容量也有所不同。堆棧的操作只有兩種,即進(jìn)棧和出棧,但不管是向堆棧寫入數(shù)據(jù)還是從堆棧中讀出數(shù)據(jù),都是對(duì)棧頂單元進(jìn)行的,SP就是即時(shí)指示出棧頂?shù)奈恢茫吹刂罚?。在子程序調(diào)用和中斷服務(wù)程序響應(yīng)的開始和結(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ù)的。第二種方式是人工指令方式,使用專有的堆棧操作指令進(jìn)行進(jìn)出棧操作,也只有兩條指令:進(jìn)棧為PUSH指令,在中斷服務(wù)程序或子程序調(diào)用時(shí)作為現(xiàn)場保護(hù)。出棧操作POP指令,用于子程序完成時(shí),為主程序恢復(fù)現(xiàn)場。 ?????I/O口專用寄存器(P0、P1、P2、P3) ????I/O口寄存器P0、P1、P2和P3分別是MCS-51單片機(jī)的四組I/O口鎖存器。MCS-51單片機(jī)并沒有專門的I/O口操作指令,而是把I/O口也當(dāng)作一般的寄存器來使用,數(shù)據(jù)傳送都統(tǒng)一使用MOV指令來進(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位寄存來使用。 ?????定時(shí)/計(jì)數(shù)器方式選擇寄存器(TMOD) ????TMOD寄存器是一個(gè)專用寄存器,用于控制兩個(gè)定時(shí)計(jì)數(shù)器的工作方式,TMOD可以用字節(jié)傳送指令設(shè)置其內(nèi)容,但不能位尋址,各位的定義如下,更詳細(xì)的內(nèi)容,我們將在《MCS-51定時(shí)器和中斷系統(tǒng)》章節(jié)中敘述。 |
表4???定時(shí)/計(jì)數(shù)器工作方式控制寄存器?TMOD | ||||||||
位序 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
位標(biāo)志 | GATE | M1 | M0 | GATE | M1 | M0 | ||
? | 定時(shí)/計(jì)數(shù)器1 | 定時(shí)/計(jì)數(shù)器0 |
?????串行數(shù)據(jù)緩沖器(SBUF) ????串行數(shù)據(jù)緩沖器SBUF用來存放需發(fā)送和接收的數(shù)據(jù),它由兩個(gè)獨(dú)立的寄存器組成,一個(gè)是發(fā)送緩沖器,另一個(gè)是接收緩沖器,要發(fā)送和接收的操作其實(shí)都是對(duì)串行數(shù)據(jù)緩沖器進(jìn)行。 ?????其他控制寄存器(TMOD) ????除了以上我們簡述的幾個(gè)專用寄存外,還有IP、IE、TCON、SCON和PCON等幾個(gè)寄存器,這幾個(gè)控制寄存器主要用于中斷和定時(shí)的,我們將在《MCS-51定時(shí)器和中斷系統(tǒng)》中詳細(xì)說明。 |
評(píng)論