第2章增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu)_第1頁
第2章增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu)_第2頁
第2章增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu)_第3頁
第2章增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu)_第4頁
第2章增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.1 內(nèi)部結(jié)構(gòu)和引腳功能內(nèi)部結(jié)構(gòu)和引腳功能 2.2 輸入輸入/輸出輸出(I/O)口口2.3 存儲(chǔ)器系統(tǒng)存儲(chǔ)器系統(tǒng)2.4 MCS-51外部存儲(chǔ)器的連接外部存儲(chǔ)器的連接2.5 操作時(shí)序操作時(shí)序2.6 復(fù)位及復(fù)位電路復(fù)位及復(fù)位電路 2.7 節(jié)電運(yùn)行狀態(tài)和掉電運(yùn)行狀態(tài)節(jié)電運(yùn)行狀態(tài)和掉電運(yùn)行狀態(tài) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 1. 增強(qiáng)型增強(qiáng)型MCS-51單片機(jī)主要特征單片機(jī)主要特征 1996年3月Intel公司推出了增強(qiáng)型MCS-51內(nèi)核的8XC5X(包括80C52、80C54、80C58、87C52、87C5

2、4、87C58、80C32等型號(hào))系列單片機(jī)芯片,標(biāo)志著增強(qiáng)型MCS-51內(nèi)核8位單片機(jī)時(shí)代的開始,也意味著標(biāo)準(zhǔn)MCS-51內(nèi)核8位單片機(jī)時(shí)代的終結(jié),此后不久Intel、Philips等公司不再生產(chǎn)標(biāo)準(zhǔn)MCS-51內(nèi)核的8位單片機(jī)芯片(如8051/8052、8751/8752、8031/32等型號(hào))。與標(biāo)準(zhǔn)MCS-51內(nèi)核芯片相比,增強(qiáng)型MCS-51內(nèi)核單片機(jī)芯片具有如下特征: 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) (1) 與標(biāo)準(zhǔn)MCS-51保持100%兼容,即可以使用增強(qiáng)型MCS-51芯片替換相應(yīng)型號(hào)的標(biāo)準(zhǔn)MCS-51芯片,如用80C32取代8031/2、用87C51/2取代8751/2。

3、 (2) 片內(nèi)集成了3個(gè)16位定時(shí)/計(jì)數(shù)器,其中T0、T1的功能與標(biāo)準(zhǔn)MCS-51系列相同;T2除了保留標(biāo)準(zhǔn)MCS-52子系列中定時(shí)/計(jì)數(shù)器T2功能外,還增加了向下計(jì)數(shù)和時(shí)鐘輸出功能。 (3) 采用增強(qiáng)型全雙工串行口,即增強(qiáng)型MCS-51串行口除了具有標(biāo)準(zhǔn)MCS-51串行口功能外,還具有幀錯(cuò)誤偵測(cè)和自動(dòng)地址識(shí)別功能。 (4) Philips、Temic Seconductor Technology公司的8XC5X、8XC5XX2芯片具有雙數(shù)據(jù)指針DPTR(為此增加了輔助功能寄存器AUXR1),方便了外部RAM不同存儲(chǔ)單元之間的數(shù)據(jù)傳送。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) (5) 為了降低

4、電磁輻射,允許關(guān)閉地址鎖存信號(hào)ALE。為此,增加了輔助功能寄存器AUXR。 (6) 擴(kuò)展了中斷控制器功能,可以管理具有4個(gè)中斷優(yōu)先級(jí)的6個(gè)中斷源。為此,增加了高8位中斷優(yōu)先級(jí)控制寄存器IPH。 (7) 普遍采用CHMOS工藝,工作電壓低、范圍寬(1.8 V6.0 V),可用電池供電,方便了野外作業(yè)使用。 (8) 改進(jìn)了電源管理功能,即允許通過外部中斷方式喚醒掉電模式。 (9) 提高了時(shí)鐘頻率,標(biāo)準(zhǔn)MCS-51最高時(shí)鐘頻率為12MHz,而增強(qiáng)型MCS-51最高時(shí)鐘頻率可達(dá)33 MHz。 (10) 片內(nèi)程序存儲(chǔ)器以TOP ROM和Flash ROM為主。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2

5、. 增強(qiáng)型增強(qiáng)型MCS-51內(nèi)核主流芯片內(nèi)核主流芯片 表2-1 增強(qiáng)型MCS-51主流芯片性能指標(biāo) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表2-1 增強(qiáng)型MCS-51主流芯片性能指標(biāo) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.1 內(nèi)部結(jié)構(gòu)和引腳功能內(nèi)部結(jié)構(gòu)和引腳功能 2.1.1 內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)P0口驅(qū)動(dòng)器P0.0P0.7P0鎖存器RAMRAM地址寄存器寄存器B累加器Acc暫存器1暫存器2ALUP2鎖存器P2口驅(qū)動(dòng)器P2.0P2.7特殊功能寄存器組堆棧指針SP片內(nèi)程序存儲(chǔ)器PSW定時(shí)/計(jì)數(shù)及控制指令寄存器振蕩器PDRSTPSENP / ALEPPV / EAXTAL1XTAL2P1口驅(qū)動(dòng)器

6、P1.0P1.7P1鎖存器P3鎖存器P3口驅(qū)動(dòng)器P3.0P3.7程序地址寄存器緩沖器PC加1PC數(shù)據(jù)指針DPTR8168VCCVSSIR圖2-1 增強(qiáng)型MCS-51 CPU內(nèi)部結(jié)構(gòu) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.1.2 引腳功能引腳功能 圖圖2-2 增強(qiáng)型增強(qiáng)型MCS-51 CPU常常見封裝形式引腳見封裝形式引腳排列排列(a) DIP封裝;封裝;(b) PLCC封裝;封裝;(c) PQFP封裝封裝 1P1.0P1.12P1.23P1.34P1.45P1.56P1.67P1.78RESET9RXD / P3.010TXD / P3.1111213T0 / P3.414T1 / P3

7、.5151617X218X119GND20P3.2 /INT0P3.3 /INT1P3.6 /WRP3.7 /RD40VCCP0.039P0.138P0.237P0.336P0.435P0.534P0.633323130292827262524232221P0.7PPV /EAP / ALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0標(biāo)準(zhǔn)MCS -51芯片(8051 / 8751)PDIP40或CDIP40封裝引腳排列1P1.0 / T2P1.1 / T2EX2P1.23P1.34P1.45P1.56P1.67P1.78RESET9RXD / P3.010TXD /

8、 P3.1111213T0 / P3.414T1 / P3.5151617X218X119GND20P3.2 /INT0P3.3 /INT1P3.6 /WRP3.7 /RD40VCCP0.039P0.138P0.237P0.336P0.435P0.534P0.633323130292827262524232221P0.7VP /EAP / ALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0增強(qiáng)型MCS-51(8XC51系列)芯片PDIP40或CDIP40封裝引腳排列(a)Pin123456789101112131415FunctionNIC*P1.0 / T2P1.

9、1 / T2EXP1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0 / RxDNIC*P3.1 / TxDINT0 /P3.2INT1 /P3.3* NIC表示內(nèi)部沒有連接的空腳Pin161718192021222324252627282930FunctionP3.4 / T0XTAL2XTAL1VSSNIC*P2.0 / A8P2.1 / A9P2.2 / A10WR /P3.6RD /P3.7Pin3132333435363738394041424344FunctionP2.7 / A15ALENIC*P0.7 / AD7P3.5 / T1P2.3 / A11P2.4 / A1

10、2P2.5 / A13P2.6 / A14P0.6 / AD6P0.5 / AD5P0.4 / AD4P0.3 / AD3P0.2 / AD2P0.1 / AD1P0.0 / AD0VCCPSENPPV / EA(b)Pin123456789101112131415FunctionP1.5P1.6P1.7RSTP3.0 / RxDNIC*P3.4 / T0P3.1 / TxDWR /P3.6Pin161718192021222324252627282930FunctionVSSP2.0 / A8P2.1 / A9P2.2 / A10Pin3132333435363738394041424344

11、FunctionALENIC*P0.7 / AD7NIC*P2.3 / A11P2.4 / A12P2.5 / A13P2.6 / A14P0.6 / AD6P0.5 / AD5P0.4 / AD4P0.3 / AD3P0.2 / AD2P0.1 / AD1P0.0 / AD0VCCPPV / EA(c)INT0 /P3.2INT1 /P3.3P3.5 / T1RD /P3.7XTAL2XTAL1P2.7 / A15PSENNIC*P1.0 / T2P1.1 / T2EXP1.2P1.3P1.4PQFP122211144343323LCC717182829396140第 2章 增強(qiáng)型MCS-5

12、1單片機(jī)結(jié)構(gòu) 圖2-3 增強(qiáng)型MCS-51 CPU引腳邏輯符號(hào) VCCVSSRDWRT1PORT 0數(shù)據(jù)/地址總線PORT 1T2T2EXPORT 2高8位地址總線PORT 3T0INT1INT0TxDRxDRSTPPV / EAPSENPROG / ALEXTAL2XTAL1第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表表2-2 引腳功能引腳功能 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表表2-2 引腳功能引腳功能 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表表2-2 引腳功能引腳功能 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 圖2-4 增強(qiáng)型MCS-51振蕩電路及連接 5-30 pFC2C1晶體振

13、蕩器XTAL2XTAL1內(nèi)部電阻內(nèi)部電阻接片內(nèi)時(shí)鐘電路與非門APD內(nèi)部電阻第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2 輸入輸入/輸出(輸出(I/O)口)口 圖2-5 MCS-51 I/O口等效電路(a) P1口;(b) P0口;(c) P2口;(d) P3口 三態(tài)門讀鎖存器DQCLKQP1.X腳鎖存器內(nèi)部總線寫鎖存器讀引腳三態(tài)門V2VCC上拉電阻P1.X引腳(a)三態(tài)門讀鎖存器DQCLKQP0.X腳鎖存器內(nèi)部總線寫鎖存器讀引腳三態(tài)門V2VCCP0.X引腳(b)地址/數(shù)據(jù)與門V1控制信號(hào)(0/1)多路開關(guān)三態(tài)門讀鎖存器DQCLKQP2.X腳鎖存器內(nèi)部總線寫鎖存器讀引腳三態(tài)門V2VCCP2.X

14、引腳(c)地址A15A8控制信號(hào)(0/1)多路開關(guān)上拉電阻三態(tài)門讀鎖存器DQCLKQP3.X腳鎖存器內(nèi)部總線寫鎖存器讀引腳三態(tài)門V2VCCP3.X引腳(d)第二功能輸出第二功能輸入上拉電阻與非門第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2.1 P1口內(nèi)部結(jié)構(gòu)及使用口內(nèi)部結(jié)構(gòu)及使用 圖2-6 P1.X作為輸入引腳的示意圖 MCS51P1.X(輸入)輸入低電平RCVCCNPNRb第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 圖2-7 驅(qū)動(dòng)三極管基極時(shí)I/O引腳被鉗位 MCS-51P1.X(輸出)RCVCC第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2.2 P0口內(nèi)部結(jié)構(gòu)及使用口內(nèi)部結(jié)構(gòu)及使用 1作為作

15、為I/O端口時(shí)端口時(shí) P0口作為I/O端口使用時(shí),多路開關(guān)“控制”信號(hào)為“0”(低電平),與門輸出低電平,V1管截止,同時(shí)多路開關(guān)轉(zhuǎn)向鎖存器反相輸出端。輸出時(shí),寫鎖存器脈沖CLK有效,輸出信號(hào)經(jīng)內(nèi)部總線鎖存器輸入端D反相輸出端多路開關(guān)V2 柵極V2漏極到輸出端。由于V1管截止,所以作為輸出口時(shí),P0口是漏極開路輸出,類似于OC門,當(dāng)驅(qū)動(dòng)拉電流負(fù)載時(shí),需要外接上拉電阻,P0口帶有鎖存器,因此具有輸出鎖存功能。P0作為輸入口時(shí),與P1口類似,也必須先執(zhí)行寫端口指令,如:SETB P0.X或MOV P0,#0FFH將P0口鎖存器置“1”,端輸出低電平,使V2管截止(這時(shí)V1、V2均截止,P0.X引腳

16、懸空),否則P0.X引腳也有可能被鉗位在低電平狀態(tài)。在讀引腳信號(hào)作用下,輸入信息經(jīng)P0.X引腳讀引腳三態(tài)門電路到內(nèi)部總線。第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2. 作為地址作為地址/數(shù)據(jù)總線時(shí)數(shù)據(jù)總線時(shí) 在訪問外部存儲(chǔ)器時(shí),P0口作為地址/數(shù)據(jù)總線使用, 這時(shí)多路開關(guān)“控制”信號(hào)為“1”,與門解鎖,與門輸出信號(hào)電平由“地址/數(shù)據(jù)”線信號(hào)決定;同時(shí)多路開關(guān)與反相器的輸出端相連,地址信號(hào)經(jīng)“地址/數(shù)據(jù)”線反相器V2柵極V2 漏極輸出,例如地址信號(hào)為“0”,與門輸出低電平,V1管截止;反相器輸出高電平,V2管導(dǎo)通,輸出引腳的地址信號(hào)為低電平。反之,地址信號(hào)為“1”, 與門輸出高電平,V1管導(dǎo)通;

17、反相器輸出低電平,V2管截止,輸出引腳的地址信號(hào)為高電平??梢?,在輸出“地址/數(shù)據(jù)”信息時(shí),V1、V2交替導(dǎo)通,負(fù)載能力很強(qiáng), 可以直接與存儲(chǔ)器地址線相連,無需增加總線驅(qū)動(dòng)器。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 同時(shí)P0口又作為數(shù)據(jù)總線使用,在訪問外部程序存儲(chǔ)器時(shí),P0口輸出低8 位地址信息后,將變?yōu)閿?shù)據(jù)總線,以便讀指令碼(輸入)。在取指令期間,“控制”信號(hào)為“0”,V1管截止,多路開關(guān)也跟著轉(zhuǎn)向鎖存器反相輸出端;同時(shí),CPU 自動(dòng)將0FFH寫入P0口鎖存器,使V2管截止,在讀引腳信號(hào)控制下,通過讀引腳三態(tài)門電路將指令碼讀到內(nèi)部總線。 如果該指令是輸出數(shù)據(jù),如“MOVX DPTR,A”(

18、將累加器A內(nèi)容通過P0口數(shù)據(jù)總線傳送到外部RAM中),則多路開關(guān)“控制”信號(hào)為“1”,與門解鎖, 與輸出地址信號(hào)類似,數(shù)據(jù)由“地址/數(shù)據(jù)”線反相器V2柵極V2漏極輸出。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 如果該指令是輸入數(shù)據(jù)(讀外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器),如“MOVX A,DPTR”(將外部RAM某一存儲(chǔ)單元內(nèi)容通過P0口數(shù)據(jù)總線輸入到累加器A中),則輸入的數(shù)據(jù)仍通過讀引腳三態(tài)門到內(nèi)部總線,其過程類似于讀指令碼。 通過以上分析,可以看出當(dāng)P0口作為地址/數(shù)據(jù)總線使用時(shí), 在讀指令碼或輸入數(shù)據(jù)前,CPU自動(dòng)向P0口鎖存器寫入0FFH,破壞了P0口原來的狀態(tài)。因此, 不能再作為通用I/O端

19、口,這點(diǎn)在系統(tǒng)硬件設(shè)計(jì)時(shí)務(wù)必注意,即程序中不能再含有以P0 口作為操作數(shù)(包括源操作數(shù)和目的操作數(shù))的指令。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2.3 P2口內(nèi)部結(jié)構(gòu)及使用口內(nèi)部結(jié)構(gòu)及使用 1. 作為作為I/O端口時(shí)端口時(shí) 沒有外部程序存儲(chǔ)器或雖然有外部數(shù)據(jù)存儲(chǔ)器,但容量不大于256字節(jié),不需要高8位地址時(shí)(在這種情況下,不能通過數(shù)據(jù)地址寄存器DPTR讀寫外部數(shù)據(jù)存儲(chǔ)器),P2口可以作為I/O端口使用。這時(shí),“控制”信號(hào)為“0”,多路開關(guān)轉(zhuǎn)向鎖存器同相輸出端Q,輸出信號(hào)經(jīng)內(nèi)部總線鎖存器輸出端Q反相器V2管柵極V2管漏極輸出。由于V2管漏極帶有上拉電阻,可以提供一定的上拉電流,負(fù)載能力

20、約為4個(gè)TTL與非門;作為輸入口前,同樣需要向鎖存器寫入“1”,使反相器輸出低電平,V2管截止,即引腳懸空時(shí)為高電平,防止引腳被鉗位在低電平。讀引腳信號(hào)有效后,輸入信息經(jīng)讀引腳三態(tài)門電路到內(nèi)部數(shù)據(jù)總線。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2. 作為地址總線時(shí)作為地址總線時(shí) P2口作為地址總線時(shí),“控制”信號(hào)為“1”,多路開關(guān)轉(zhuǎn)向“地址”線,地址信息經(jīng)反相器V2管柵極漏極輸出。由于P2口輸出高8位地址,與P0口不同,無需分時(shí)使用,因此P2口上的地址信息(程序存儲(chǔ)器的A15A8)或數(shù)據(jù)地址寄存器高8位DPH保存時(shí)間長(zhǎng),無需鎖存,關(guān)于這點(diǎn)可參看如圖2-19所示的外部存儲(chǔ)器讀寫時(shí)序。 第 2章

21、增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2.4 P3口內(nèi)部結(jié)構(gòu)及使用口內(nèi)部結(jié)構(gòu)及使用 P3口內(nèi)部結(jié)構(gòu)如圖2-5(d)所示,不過P3口是個(gè)多功能口,它除了可以作為一般的I/O口外,還具有第二功能,如表2-2所示。 作為I/O口時(shí),第二功能輸出控制信號(hào)為高電平,與非門等效為一個(gè)反相器,與P2 口情況類似。此外,作為第二功能輸出時(shí),CPU會(huì)自動(dòng)向鎖存器寫入“1”,打開與非門,這時(shí)與非門同樣等效于一個(gè)反相器,第二功能輸出信號(hào)經(jīng)與非門V2管的柵極漏極P3.X引腳;作為第二功能輸入時(shí),“第二功能輸出”控制端、鎖存器輸出端均為“1”, 與非門輸出低電平,V2管截止,輸入信號(hào)經(jīng)引腳緩沖器第二功能輸入。 第 2章 增

22、強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2.5 I/O口負(fù)載能力口負(fù)載能力 圖2-8 P1P3口驅(qū)動(dòng)三極管電路 8XC5X CPUP1.XRCVCCV(a)8XC5X CPUP1.XRCVCCV(b)8XC5X CPUP1.XReVCCV(c)RbRb4.3 k9.1 k第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.2.6 讀鎖存器和讀引腳指令讀鎖存器和讀引腳指令 當(dāng)把P0P3口作為輸入引腳使用時(shí),以I/O口作為源操作數(shù)的數(shù)據(jù)傳送指令、算術(shù)及邏輯運(yùn)算指令、位測(cè)試轉(zhuǎn)移指令等屬于讀引腳指令,如: MOVC, P1.0; 將P1.0引腳信號(hào)讀到位累加器C中 MOVA, P1; 將P1口的P1.0P1.7引腳信

23、號(hào)讀到 累加器A中第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) ANLA, P1 ; 將P1口的P1.0P1.7引腳信號(hào)與累加器A相與ADDA, P1; 將P1口的P1.0P1.7引腳信號(hào)與累加器A相加JBP1.0, LOOP; P1.0引腳信號(hào)為1,則轉(zhuǎn)移JNB P1.0, LOOP ; P1.0引腳信號(hào)為0,則轉(zhuǎn)移而所有的“讀改寫”指令均讀I/O口鎖存器,如:JBC P1.0 , LOOP ; P1.0鎖存器為1轉(zhuǎn)移,且將P1.0鎖存器 清零DEC P1INC P1 CPL P1.0 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.3 存儲(chǔ)器系統(tǒng)存儲(chǔ)器系統(tǒng) 圖圖2-9 8XC5X/8XC5XX2系列

24、單片機(jī)存儲(chǔ)器結(jié)構(gòu)系列單片機(jī)存儲(chǔ)器結(jié)構(gòu) 外部ROM外部ROMFFFFH0000H0EA 片內(nèi)ROM4 KB32 KB1EA 低128字節(jié)內(nèi)部RAM00H高128字節(jié)內(nèi)部RAM7FH80HFFH特殊功能寄存器0000H外部數(shù)據(jù)存儲(chǔ)器空間FFFFH(a)外部ROM外部ROM4 KBFFFFH0000H0EA 片內(nèi)ROM4 KB1EA 00H7FH80HFFH特殊功能寄存器0000H外部數(shù)據(jù)存儲(chǔ)器空間FFFFH(b)1000H0FFFH內(nèi)部RAM第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 在8XC32/8XC52/54/58系列中,盡管高128字節(jié)內(nèi)部RAM地址空間與特殊功能寄存器地址空間重疊,但使用不同

25、尋址方式訪問,也不會(huì)造成混亂,例如: MOV R0, #90H MOV R0,A ; 把累加器A內(nèi)容送內(nèi)部RAM 90H單元。MCS-51規(guī)定,對(duì)于高128 ; 字節(jié)內(nèi)部RAM只能用寄存器間接尋址方式訪問 MOV 90H,A ; 把累加器A內(nèi)容送地址為90H的特殊功能寄存器(即P1口)。MCS-51 ; 規(guī)定特殊功能寄存器只能用直接尋址方式讀寫 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.3.1 程序存儲(chǔ)器程序存儲(chǔ)器 對(duì)于帶有片內(nèi)ROM的MCS-51系列單片機(jī)來說,片內(nèi)程序存儲(chǔ)器和外部程序存儲(chǔ)器地址空間重疊。如果 /VPP引腳為高電平,且程序計(jì)數(shù)器PC小于等于片內(nèi)ROM的地址空間時(shí),將從片內(nèi)程

26、序存儲(chǔ)器取指令(在這種情況下,信號(hào)無效);而當(dāng)PC超出片內(nèi)ROM地址空間時(shí),自動(dòng)到外部程序存儲(chǔ)器取指令, 即在P0口輸出低8位地址(A0A7),在P2口輸出高8位地址(A15A8)。當(dāng)/VPP引腳為低電平時(shí),一律從外部程序存儲(chǔ)器取指令。因此對(duì)于不帶ROM或EPROM的80C31、80C32 CPU來說,/VPP引腳一律接地。 EA第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 增強(qiáng)型MCS-51系列單片機(jī)保留給系統(tǒng)使用的程序存儲(chǔ)器地址空間如下:系統(tǒng)復(fù)位0000H外部中斷0()服務(wù)程序入口地址0003H定時(shí)器0中斷服務(wù)程序入口地址000BH外部中斷1()服務(wù)程序入口地址0013H定時(shí)器1中斷服務(wù)程序入口

27、地址001BH串行口中斷服務(wù)程序入口地址0023H定時(shí)器2中斷服務(wù)程序入口地址002BH 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 復(fù)位后,程序計(jì)數(shù)器PC為0000H,即從程序存儲(chǔ)器的0000H單元讀出第一條指令,因此可在0000H單元內(nèi)放置一條跳轉(zhuǎn)指令,如LJMP XXXX(XXXX表示主程序入口地址)。由于系統(tǒng)給每一中斷服務(wù)程序預(yù)留了8個(gè)字節(jié),因此,用戶主程序一般存放在0033H單元以后,如:ORG 0000H;用偽指令ORG指示隨后的指令碼從0000H單元開 始存放LJMP Main;在0000H單元放一條長(zhǎng)跳轉(zhuǎn)指令,共3個(gè)字節(jié)ORG 0003HLJMP INT0;跳到外中斷服務(wù)程序的入口

28、地址;其他中斷入口地址初始化ORG 50H ;主程序代碼從50H單元開始存放 Main:;Main是主程序入口地址標(biāo)號(hào) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.3.2 片內(nèi)數(shù)據(jù)存儲(chǔ)器片內(nèi)數(shù)據(jù)存儲(chǔ)器 1. 片內(nèi)片內(nèi)RAM 8XC51、8XC31芯片內(nèi)部RAM容量為128字節(jié),根據(jù)用途可劃分為工作寄存器區(qū)、位尋址區(qū)和用戶數(shù)據(jù)存儲(chǔ)器區(qū)(可作用戶RAM和堆棧區(qū)),如表2-3所示;對(duì)于8XC52/54/58芯片來說,內(nèi)部RAM的容量為256字節(jié),除了低128字節(jié)內(nèi)部RAM外,還具有高128 字節(jié)(80HFFH)內(nèi)部RAM,可作為內(nèi)部用戶數(shù)據(jù)存儲(chǔ)區(qū)和堆棧區(qū),即8XC52/54/58芯片內(nèi)部用戶RAM的

29、容量多了128字節(jié)。但由于高128字節(jié)RAM的地址編碼與特殊功能寄存器重疊,因此,只能通過寄存器間接尋址方式讀寫。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表表2-3 內(nèi)部?jī)?nèi)部RAM地址空間地址空間 字節(jié)地址高128字節(jié)內(nèi)部RAMFFH80H用戶RAM和堆棧區(qū)7FH30H第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 續(xù)表 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2. 特殊功能寄存器特殊功能寄存器 由于單片機(jī)內(nèi)集成了一些常用的I/O接口電路,如并行I/O端口、串行口、定時(shí)器/計(jì)數(shù)器、中斷控制器等,因此這些I/O接口單元電路內(nèi)的寄存器也就位于CPU內(nèi)部, 統(tǒng)稱為特殊功能寄存器(SFR,即Special

30、Function Registers)。 MCS-51 CPU與通用微處理不同,除了給I/O接口電路寄存器,如定時(shí)/計(jì)數(shù)器控制寄存器TCON分配字節(jié)地址外,CPU內(nèi)的寄存器也有字節(jié)地址,如累加器Acc字節(jié)為0E0H。增強(qiáng)型MCS-51系列單片機(jī)內(nèi)共有27個(gè)特殊功能寄存器,其地址分散在80HFFH之間,如表2-4所示。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表2-4 特殊功能寄存器地址映象 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表2-4 特殊功能寄存器地址映象 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 表2-4 特殊功能寄存器地址映象 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 1) 累加器Acc

31、 CPU內(nèi)部特有的寄存器, 常用于存放參加算術(shù)或邏輯運(yùn)算的兩個(gè)操作數(shù)中的一個(gè)及運(yùn)算結(jié)果,即用于存放目的操作數(shù),例如: ADD A,30H ;在指令中,累加器Acc常簡(jiǎn)寫為“A” 該指令的含義是以累加器Acc內(nèi)容作為被加數(shù),加數(shù)存放在內(nèi)部RAM的30H單元中,相加后的結(jié)果,即和再存放到累加器Acc中。 由于早期的CPU沒有乘法運(yùn)算功能,乘法運(yùn)算需要通過多次加法運(yùn)算實(shí)現(xiàn), 而在多次加法運(yùn)算中,寄存器Acc總是存放中間結(jié)果,即起了累加功能, 因此也就用“累加器”來稱呼該寄存器。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2) B寄存器 B寄存器也是CPU內(nèi)特有的一個(gè)寄存器,主要用于乘法和除法運(yùn)算。在乘

32、法運(yùn)算中,被乘數(shù)放在累加器Acc中,乘數(shù)放在B寄存器中,積的高8位存放B寄存器中,低8位放在累加器Acc中,如: MUL AB ; BAAB 在除法運(yùn)算中,被除數(shù)放在累加器Acc中,除數(shù)放在B寄存器中。運(yùn)算后,商放在累加器Acc中,而余數(shù)放在B寄存器中。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 3) 程序狀態(tài)字寄存器PSW 程序狀態(tài)字寄存器有時(shí)也稱為“標(biāo)志寄存器”,由一些標(biāo)志位組成,用于存放指令運(yùn)行的狀態(tài),MCS-51中PSW寄存器各位含義如下: b7b6b5b4b3b2b1b0CyACF0RS1RS0OV-P Cy:進(jìn)位標(biāo)志。在進(jìn)行加法運(yùn)算時(shí),當(dāng)最高位即b7位有進(jìn)位,或執(zhí)行減法運(yùn)算最高位有借

33、位時(shí),Cy為1;反之為0。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) AC:輔助進(jìn)位標(biāo)志。在進(jìn)行加法運(yùn)算時(shí),當(dāng)b3位有進(jìn)位,或執(zhí)行減法運(yùn)算b3位有借位時(shí),AC為1,反之為0。設(shè)置輔助進(jìn)位標(biāo)志AC的目的是為了便于BCD碼加法、減法運(yùn)算的調(diào)正。 OV: 溢出標(biāo)志。在計(jì)算機(jī)內(nèi),帶符號(hào)數(shù)一律用補(bǔ)碼表示。在8位二進(jìn)制中,補(bǔ)碼所能表示的范圍是-128+127,而當(dāng)運(yùn)算結(jié)果超出這一范圍時(shí),OV 標(biāo)志為1,即溢出;反之為0。 P: 奇偶標(biāo)志。該標(biāo)志位始終體現(xiàn)累加器Acc中“1”的個(gè)數(shù)的奇偶性。 如果累加器Acc中“1”的個(gè)數(shù)為奇數(shù),則P位置1;當(dāng)累加器A中“1”的個(gè)數(shù)為偶數(shù)(包括 0個(gè))時(shí),P位為“0”,即MC

34、S-51采用奇校驗(yàn)方式。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 【例2.1】 分析執(zhí)行如下指令后,PSW寄存器各標(biāo)志位的值。 MOV A,#10101101B ; 把立即數(shù)0ADH傳送到累加器A中, 由于立即數(shù)0ADH 中共; 有5個(gè)“1”,因此該指令執(zhí)行后,奇偶 標(biāo)志位P為“1”ADD A,#01111101B ; 0ADH與7DH相加,結(jié)果存放在A中 1 0 1 0 1 1 0 1 ; 173(無符號(hào)數(shù));-83(帶符號(hào)數(shù))+ 0 1 1 1 1 1 0 1 ; 125(無符號(hào)數(shù));+125(帶符號(hào)數(shù)) 1 0 0 1 0 1 0 1 0 ; 作為無符號(hào)數(shù)時(shí),和為12AH(由于結(jié) 果超出

35、FFH,前面的“1” ; 自然丟失,寄存器A的內(nèi)容為2AH), 即298;作為有符號(hào)數(shù)時(shí), ; 和為2AH,即42 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 【例2.2】 分析執(zhí)行如下指令后,PSW寄存器各標(biāo)志位的值。MOV A,#10101101B; 把立即數(shù)0ADH傳送到累加器A中,由于立 即數(shù)0ADH 中共; 有5個(gè)“1”,因此該指令執(zhí)行后,奇偶標(biāo)志 位P為“1”ADD A,#10011101B; 0ADH與9DH相加,結(jié)果存放在A中 1 0 1 0 1 1 0 1 ; 173(無符號(hào)數(shù));-83(帶符號(hào)數(shù)) + 1 0 0 1 1 1 0 1 ; 157(無符號(hào)數(shù));-99(帶符號(hào)數(shù))

36、1 0 1 0 0 1 0 1 0 ; 作為無符號(hào)數(shù)時(shí),和為14AH(由于結(jié)果超出 FFH,前面的“1”; 自然丟失,寄存器A內(nèi)容為4AH),即330; 作為有符號(hào)數(shù)時(shí),; 和為-182 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 由于b7位向前進(jìn)位,因此Cy為“1”;b3位也有進(jìn)位,AC位也為“1”;而作為帶符號(hào)數(shù)時(shí),結(jié)果為4AH,即+74,顯然不對(duì),因?yàn)閮蓚€(gè)負(fù)數(shù)相加結(jié)果為正數(shù)是不可能的。之所以出錯(cuò),是因?yàn)?83加-99的結(jié)果為-182,超出-128+127。因此,OV標(biāo)志位為“1”。 兩個(gè)同號(hào)數(shù)相加,結(jié)果可能溢出,而當(dāng)OV標(biāo)志位為“1”時(shí),說明存放在目的操作數(shù)中的結(jié)果不正確。 不難發(fā)現(xiàn):兩個(gè)同

37、號(hào)數(shù)相加,結(jié)果可能溢出;兩個(gè)異號(hào)數(shù)相加,結(jié)果肯定不會(huì)溢出。兩個(gè)同號(hào)數(shù)相減,結(jié)果肯定不會(huì)溢出;而兩個(gè)異號(hào)數(shù)相減,結(jié)果可能溢出。而當(dāng)溢出標(biāo)志OV為1時(shí),結(jié)果不正確。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) RS1、RS0:工作寄存器組選擇位,前面已介紹過。 F0:用戶標(biāo)志位,可通過位操作指令將該位置1或0。 PSW.1:保留位。 在計(jì)算機(jī)中, 對(duì)于沒有定義的位或字節(jié),我們必須注意是否存在物理存儲(chǔ)單元與之對(duì)應(yīng)。當(dāng)存在物理存儲(chǔ)單元與之對(duì)應(yīng)時(shí),用戶就可以讀寫。而沒有相應(yīng)物理存儲(chǔ)單元與之對(duì)應(yīng)時(shí), 則不能使用,否則讀操作結(jié)果將不確定,而寫入的數(shù)據(jù)將丟失,如特殊功能寄存器地址映象空間內(nèi)80HFFH中,許多單元

38、并沒有相應(yīng)的物理存儲(chǔ)器。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 4) 堆棧指針SP 在計(jì)算機(jī)內(nèi),需要一塊具有“先進(jìn)后出”(First In Last Out,簡(jiǎn)稱FILO)特性的存儲(chǔ)區(qū),用于存放子程序調(diào)用(包括中斷響應(yīng))時(shí)程序計(jì)數(shù)器PC的當(dāng)前值,以及需要保存的CPU內(nèi)各寄存器的值(即現(xiàn)場(chǎng)),以便子程序或中斷服務(wù)程序執(zhí)行結(jié)束后能正確返回主程序。這一存儲(chǔ)區(qū)稱為堆棧區(qū)。為了正確存取堆棧區(qū)內(nèi)的數(shù)據(jù),需要一個(gè)寄存器來指示最后進(jìn)入堆棧的數(shù)據(jù)所在存儲(chǔ)單元的地址,堆棧指針SP寄存器就是為此設(shè)計(jì)的。 在增強(qiáng)型MCS-51系列單片機(jī)中,SP可以指向內(nèi)部RAM中任一單元,且堆棧向上生長(zhǎng),即將數(shù)據(jù)壓入堆棧后,SP寄

39、存器內(nèi)容增大。假設(shè)SP當(dāng)前值為2FH,則入堆指令“PUSH B”(將寄存器B內(nèi)容壓入堆棧)的執(zhí)行過程如圖2-10所示。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 圖2-10 “PUSH B”指令的執(zhí)行過程(a) PUSH B指令執(zhí)行前;(b)SP加1;(c) 寄存器B存入SP指定的單元中 32H31H30H2FHSP(a)32H31H30H2FHSP(b)32H31H30H2FHSP(c)B第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 圖2-11 “POP B”指令的執(zhí)行過程(a) POP B指令執(zhí)行前;(b) 將SP指定單元內(nèi)容傳送到寄存器B中;(SP減1 (a)(b)(c)32H31H30H2FH

40、SPB32H31H30H2FHSP32H31H30H2FHSP第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 數(shù)據(jù)入棧的操作過程為:先將SP加1(即SPSP+1),然后將要入棧的數(shù)據(jù)存放在SP指定的存儲(chǔ)單元中。而將數(shù)據(jù)從堆棧中彈出時(shí),先將SP寄存器指定的存儲(chǔ)單元內(nèi)容傳送到POP指令給定的寄存器或內(nèi)部RAM單元中,然后SP減1(即SPSP-1)。 另外,可以看出堆棧的底部是固定的,而堆棧的頂部則隨著數(shù)據(jù)入棧和出棧而上下浮動(dòng)。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 系統(tǒng)復(fù)位后,PSW的b4、b3位為00,即選擇了工作寄存器區(qū)中的0區(qū)作為當(dāng)前工作寄存器區(qū),SP寄存器的初值為07H,當(dāng)有數(shù)據(jù)進(jìn)入堆棧時(shí),將從

41、08H單元開始存放,這一般是不允許的,因?yàn)?8H1FH屬于工作寄存器區(qū),不宜占用;20H2FH是位地址區(qū),也需要部分或全部保留。因此,必須通過數(shù)據(jù)傳送指令重新設(shè)置SP的初值,將堆棧底部設(shè)在30H7FH(對(duì)于只有128字節(jié)內(nèi)部RAM的8XC31/8XC51)或30HFFH(對(duì)于具有256字節(jié)內(nèi)部RAM的8XC32/8XC52/54/58)之間,如: MOV SP,#5FH ; 將堆棧設(shè)在60H單元之后 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) CPU內(nèi)30HFFH單元既可以作為堆棧區(qū),同時(shí)也是用戶數(shù)據(jù)存儲(chǔ)區(qū)。由于單元數(shù)量有限,必須充分利用,因此應(yīng)認(rèn)真考慮將堆棧底部設(shè)在何處。隨著入棧數(shù)據(jù)的增多,對(duì)于

42、僅有低128字節(jié)內(nèi)部RAM的80C31、80C51來說,當(dāng)SP超出7FH時(shí)發(fā)生上溢,這將出現(xiàn)不可預(yù)料的后果。因此,在設(shè)置SP初值時(shí),必須考慮堆棧最大深度。子程序或中斷嵌套層數(shù)越多,所需的堆棧深度就越大。為了避免堆棧頂部進(jìn)入用戶數(shù)據(jù)存儲(chǔ)區(qū)而造成混亂, 一般將堆棧設(shè)在用戶數(shù)據(jù)存儲(chǔ)區(qū)之上。如在某一應(yīng)用系統(tǒng)中,需要32個(gè)字節(jié)作為用戶 數(shù)據(jù)存儲(chǔ)區(qū)(如30H4FH), 則初始化時(shí)將堆棧底部設(shè)在50H,即堆棧深度為48個(gè)字節(jié)(50H7FH)。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) MOV SP, #4FH;SP初值為4FH 對(duì)于具有高128字節(jié)的8XC32、8XC52/54/58等CPU來說,最好將堆棧區(qū)

43、設(shè)在80H0FFH之間的高128字節(jié)內(nèi)部RAM中,而將具有直接尋址功能的低128字節(jié)內(nèi)部RAM作為用戶數(shù)據(jù)存儲(chǔ)區(qū),以便可用多種尋址方式存取用戶數(shù)據(jù)。當(dāng)然,SP也不允許超出0FFH,否則同樣發(fā)生上溢。例如預(yù)計(jì)某系統(tǒng)所需最大堆棧深度為32字節(jié),可通過如下指令將棧底設(shè)在0E0H處。 MOV SP, #0DFH ;SP初值為0DFH 涉及入棧出棧操作的指令有: PUSH direct ; 將內(nèi)部RAM單元壓入堆棧中 POP direct ; 從堆棧中將數(shù)據(jù)彈入內(nèi)部RAM單元中 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 5) 數(shù)據(jù)指針DPTR 數(shù)據(jù)指針DPTR是一個(gè)16位的專用寄存器,由DPH(數(shù)據(jù)指針高

44、8位)和DPL(數(shù)據(jù)指針低8位)組成,用于存放外部數(shù)據(jù)存儲(chǔ)器的存儲(chǔ)單元地址。由于DPTR是16位的寄存器,因此通過DPTR寄存器間接尋址方式可以訪問0000HFFFFH全部64 KB的外部數(shù)據(jù)存儲(chǔ)器空間。 例如,可用如下指令將累加器A的內(nèi)容傳送到外部數(shù)據(jù)存儲(chǔ)器的107FH單元中: MOV DPTR,#107FH ; 將外部數(shù)據(jù)存儲(chǔ)地址107FH以立即數(shù)方式 傳送到DPTR寄存器 MOVX DPTR,A ; 將累加器A的內(nèi)容傳送到DPTR 寄存器內(nèi)容 指定的外部數(shù)據(jù)存儲(chǔ)器; 單元中 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 為了方便外部RAM之間的數(shù)據(jù)塊傳送,增強(qiáng)型MCS-51采用雙數(shù)據(jù)指針,由輔

45、助功能寄存器1(AUXR1)控制,該寄存器各位含義如下: AUXR1(字節(jié)為0A2H) b7b6b5b4b3b2b1b0-GF20-DPS第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 其中: GF2可作為用戶標(biāo)志位。 DPS數(shù)據(jù)指針切換位。當(dāng)DPS=0時(shí),DPTR寄存器對(duì)應(yīng)物理指針DPTR0;當(dāng)DPS=1時(shí),DPTR寄存器對(duì)應(yīng)物理指針DPTR1。 b2位恒為0,且不能寫入。這樣就可以通過INC AUXR1指令快速切換數(shù)據(jù)指針,而不影響GF2標(biāo)志(由于b2位不能寫入,加1操作時(shí),b1向b2進(jìn)位將自動(dòng)丟失,影響不到b7b3位)。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 6) I/O端口寄存器 P0、P1

46、、P2、P3口寄存器實(shí)際上就是P0P3口對(duì)應(yīng)的I/O端口鎖存器,用于鎖存通過端口輸出的數(shù)據(jù)。 在增強(qiáng)型MCS-51中,特殊功能寄存器分別隸屬于CPU內(nèi)不同的單元電路,具體如下: CPU單元包含的寄存器:Acc、B、SP、PSW、DPTR、AUXR、AUXR1和程序計(jì)數(shù)器PC。 PC是一個(gè)16位的地址寄存器,用于存放當(dāng)前指令碼在程序存儲(chǔ)器中的地址,但PC不屬于特殊功能寄存器,它沒有物理地址。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 另外,MCS-51系列單片機(jī)有些特別,CPU單元內(nèi)的寄存器,如累加器A、寄存器B、堆棧指針SP、程序狀態(tài)字PSW,以及工作寄存器組R7R0等具有字節(jié)地址,這樣在匯編語

47、言指令中,對(duì)這些寄存器操作時(shí),可以使用寄存器名,也可以直接引用這些寄存器對(duì)應(yīng)的字節(jié)地址。例如: MOV A,#30H ; 將立即數(shù)30H傳送到累加器A中,這條指 令的目的操作數(shù)使用了寄存器; 尋址方式 MOV 0E0H,#30H ; 將立即數(shù)30H傳送到直接地址0E0H 中,這條指令的目的操作數(shù)使用了 直接; 尋址方式 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 定時(shí)/計(jì)數(shù)器單元包含的寄存器:TMOD、TCON、T2CON、T2MOD、TH0與TL0(分別是定時(shí)器T0的高8位和低8位) 、TH1與TL1(分別是定時(shí)器T1的高8位和低8位)、TH2與TL2(分別是定時(shí)器T2的高8位和低8位)以及定時(shí)

48、器T2的重裝捕捉寄存器RCAPL2、RCAPH2。 并行I/O端口寄存器:P0P3。 中斷單元電路內(nèi)的寄存器:IE、IP、IPH。 串行通訊單元電路內(nèi)的寄存器:SCON、SBUF、PCON、SADDR、SADEN。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 3. 內(nèi)部數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)傳送及尋址方式內(nèi)部數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)傳送及尋址方式 (1) 00H7FH共128字節(jié)的內(nèi)部RAM存儲(chǔ)器, 可以通過直接尋址方式或寄存器間接尋址方式讀寫,如: MOV 30H,#35H ;直接尋址方式 該指令將立即數(shù)35H寫入內(nèi)部數(shù)據(jù)存儲(chǔ)器地址編碼為30H的單元中。所謂直接尋址,就是在指令中直接給出了內(nèi)部RAM單

49、元的地址編碼。 MOV R0,#35H ;寄存器間接尋址方式 該指令將立即數(shù)35H寫入由R0寄存器內(nèi)容指定的內(nèi)部RAM單元中。如果該指令執(zhí)行前,R0的內(nèi)容為30H,則上述兩條指令執(zhí)行后,效果相同,均把立即數(shù)35H寫入內(nèi)部RAM的30H單元內(nèi)。所謂寄存器間接尋址,就是將內(nèi)部RAM的地址存放在寄存器R0或R1中。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) (2) 對(duì)于特殊功能寄存器只能使用直接尋址方式訪問,如: MOV 0E0H,#35H ;直接給出累加器Acc的地址 對(duì)于特殊功能寄存器來說,使用直接尋址方式不夠直觀。由于每一個(gè)特殊功能寄存器均有一個(gè)與之相應(yīng)的寄存器名,因此在指令中最好直接引用特殊功

50、能寄存器名,如累加器用Acc,P1、AUXR1等取代對(duì)應(yīng)的特殊功能寄存器地址,例如上述指令可以寫作: MOV Acc,#35H ;指令中直接給出特殊功能寄存器名 又如:MOV 90H,#0FFH指令也可以寫作: MOV P1,#0FFH 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 其實(shí),對(duì)于特殊功能寄存器來說,用直接地址和寄存器名尋址沒有區(qū)別,匯編時(shí),匯編程序?qū)⑼ㄟ^查表方式將寄存器名換成直接地址。但必須注意引用特殊功能寄存器名,僅是為了提高程序的可讀性,與寄存器尋址方式不同,例如: MOV Acc,#35H ; 用特殊功能寄存器名,在本質(zhì)上目的操 作數(shù)屬于直接尋址,該指令 ; 操作碼為:75H,E

51、0H,35H。其中75H是 操作碼,E0H是Acc的地址, ; 35H 是立即數(shù) MOV A,#35H ; 寄存器尋址,操作碼為74H,35H。同 樣,35H也是立即數(shù) 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) (3) 高128字節(jié)(80HFFH)內(nèi)部RAM的訪問。對(duì)于具有256字節(jié)內(nèi)部RAM的52系列來說,高128字節(jié)內(nèi)部RAM地址空間與特殊功能寄存器的地址重疊,讀寫時(shí)需要通過不同的尋址方式加以區(qū)別:規(guī)定用寄存器間接尋址方式訪問高128字節(jié)(80HFFH)的內(nèi)部RAM; 用直接尋址方式訪問特殊功能寄存器。如在52系列中,“MOV 0E0H,#35H”指令的含義是將立即數(shù)35H寫入累加器A中,與

52、“MOV A,#35H ”含義相同,而不是把立即數(shù) 35H 寫入內(nèi)部RAM的0E0H單元中。將立即數(shù)35H傳送到內(nèi)部RAM的0E0H單元中只能通過如下指令進(jìn)行:MOV R0,#0E0H ;將內(nèi)部RAM地址E0H寫入R0寄存器中 MOV R0,#35H ;高128字節(jié)內(nèi)部RAM只能通過寄存器間接 尋址訪問 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) (4) 位尋址區(qū)。MCS-51系列單片機(jī)既是8位機(jī),同時(shí)也是一個(gè)功能完善的一位機(jī)。 作為一位機(jī)時(shí),它有自己的CPU、位存儲(chǔ)區(qū)(位于內(nèi)部RAM的20H2FH單元)、位寄存器, 如將進(jìn)位標(biāo)志Cy作為“位累加器”,以及具有完整的位操作指令,包括置1、清零、非(

53、取反)、與、或、異或、傳送、測(cè)試轉(zhuǎn)移等。 對(duì)于位存儲(chǔ)器(即20H2FH單元中的128個(gè)位),只能使用直接尋址方式確定操作數(shù)所在的存儲(chǔ)單元,如: 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) MOV C,23H ; 位傳送指令,即將位地址23H單元(對(duì)應(yīng)20H字節(jié) 單元的b3位)內(nèi)容傳送到; 位累加器C中 CLR 23H ; 位清零指令,即將位地址23H單元清零 SETB 23H ; 位置1指令,即將位地址23H單元置1 CPL 23H ; 位取反操作,即將位地址23H單元內(nèi)容取反 ORL C,23H ; 或運(yùn)算,23H位單元與位累加器C相或, 結(jié)果存 放在位累加器C中 ANL C,23H ; 與運(yùn)算

54、,23H位單元與位累加器C相與, 結(jié)果存 放在位累加器C中 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 對(duì)于具有位地址的特殊功能寄存器中的位,除了使用位地址尋址外,還可以使用“位定義名”或“寄存器名.位”表示,如將程序狀態(tài)字寄存器PSW中的b3 位置0,可以用: CLR D3H ; 位地址方式 CLR RS0 ; 位定義名方式(作為一個(gè)良好的習(xí)慣,建議使用 位定義名方式) CLR PSW.3 ;“寄存器名.位”方式 盡管書寫形式不同,但匯編時(shí),匯編程序均自動(dòng)將它們轉(zhuǎn)換成位地址方式,因此這三條指令完全等效,不過使用“位定義名”和“寄存器名.位”的方式更容易理解。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)

55、構(gòu) 2.3.3 外部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器 通過P0、P2口最多可以連接64 KB的外部數(shù)據(jù)存儲(chǔ)器,有關(guān)外部數(shù)據(jù)存儲(chǔ)器的連接及讀寫方式參閱“外存儲(chǔ)器連接”部分。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2.4 MCS-51外部存儲(chǔ)器的連接外部存儲(chǔ)器的連接 由于下列原因,在MCS-51系列單片機(jī)系統(tǒng)中,可能需要擴(kuò)展外部程序存儲(chǔ)器,尤其是外部數(shù)據(jù)存儲(chǔ)器或I/O端口:部分型號(hào)CPU,如80C31、80C32沒有內(nèi)置EPROM或OTP ROM,需要外部程序存儲(chǔ)器;片內(nèi)數(shù)據(jù)存儲(chǔ)器容量小,當(dāng)需要大容量的數(shù)據(jù)存儲(chǔ)器時(shí),就需要擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器;MCS-51可用的I/O引腳數(shù)目有限,常需要擴(kuò)展I/O口,而在

56、MCS-51中,擴(kuò)展I/O端口是外部數(shù)據(jù)存儲(chǔ)器空間的一部分。因此,在MCS-51系列單片機(jī)控制系統(tǒng)中,不可避免地涉及存儲(chǔ)器的擴(kuò)展問題。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 在單片機(jī)系統(tǒng)中,一般只使用EPROM、EEPROM、Flash ROM以及靜態(tài)RAM存儲(chǔ)器芯片擴(kuò)展系統(tǒng)存儲(chǔ)器,很少使用動(dòng)態(tài)RAM。因此,外存儲(chǔ)器芯片與CPU的接口電路較簡(jiǎn)單,只需考慮如下幾個(gè)問題即可: (1) CPU三總線(地址總線、數(shù)據(jù)總線、控制總線)的負(fù)載能力。CPU三總線可直接驅(qū)動(dòng)一個(gè)到數(shù)個(gè)TTL門電路,或者說CPU三總線的負(fù)載能力為一個(gè)或數(shù)個(gè)TTL負(fù)載門。而存儲(chǔ)器多為MOS器件,直流輸入阻抗大,直流負(fù)載很小,但輸

57、入電容較大。因此,當(dāng)存儲(chǔ)器芯片與CPU連接時(shí),主要考慮交流負(fù)載能力。 第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) (2) 確定存儲(chǔ)器三總線與CPU三總線之間的連接方式。即需要確定存儲(chǔ)器地址總線與CPU地址總線的連接方式,存儲(chǔ)器數(shù)據(jù)總線與CPU數(shù)據(jù)總線的連接方式,存儲(chǔ)器控制線(讀/寫控制信號(hào)、片選信號(hào)、輸出允許信號(hào))與CPU相應(yīng)控制線的連接方式。 (3) CPU讀寫時(shí)序與存儲(chǔ)器存取速度的匹配問題。存儲(chǔ)器的讀寫速度應(yīng)與CPU要求的讀寫速度相同或更快,否則必須降低CPU時(shí)鐘信號(hào)頻率或選用讀寫速度更快的存儲(chǔ)器芯片。因?yàn)樵趩纹瑱C(jī)系統(tǒng)中,CPU讀寫時(shí)序不是通過插入等待狀態(tài)來存取低速的外存儲(chǔ)器。 第 2章 增強(qiáng)

58、型MCS-51單片機(jī)結(jié)構(gòu) 2.4.1 CPU地址線與存儲(chǔ)器地址線的連接地址線與存儲(chǔ)器地址線的連接 1. 全譯碼法全譯碼法 圖圖2-12 存儲(chǔ)器與存儲(chǔ)器與CPU的連接方式一的連接方式一(全譯碼法全譯碼法) A0A1109A28A37A46A55A64A73A825A924A102123226222027VPP1A11A12A13OECEPGM27128IC2D0D1D2D3D4D5D6D71112131516181917A0A1109A28A37A46A55A64A73A825A924A102123226222027VPP1A11A12A13OECEPGM27128IC1D0D1D2D3D4D5

59、D6D71112131516181917A13A0PSEN5 VY0Y1Y2Y3456774LS139123ABEA14A15D7D0第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 2. 部分譯碼法部分譯碼法 圖2-13 存儲(chǔ)器與CPU的連接方式二(部分譯碼法) A0A1109A28A37A46A55A64A73A825A924A102123226222027VPP1A11A12A13OECEPGM27128IC2D0D1D2D3D4D5D6D71112131516181917A0A1109A28A37A46A55A64A73A825A924A102123226222027VPP1A11A12A13O

60、ECEPGM27128IC1D0D1D2D3D4D5D6D71112131516181917A13A0PSEN5 VA14D7D021IC3A7404第 2章 增強(qiáng)型MCS-51單片機(jī)結(jié)構(gòu) 3. 線選法線選法 圖圖2-14 存儲(chǔ)器與存儲(chǔ)器與CPU的連接方式三(線選法)的連接方式三(線選法) A0A1109A28A37A46A55A64A73A825A924A1021232222726CS220A11A12OEWECS16264IC2D0D1D2D3D4D5D6D71112131516181917A12A0WRA13D7D0A0A1109A28A37A46A55A64A73A825A924A10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論