你了解MCS-51單片機(jī)的片外并行總線嗎?
單片機(jī)的數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器和I/O接口必須通過(guò)總線與單片機(jī)的微處理器(CPU)連接。總線是連接單片機(jī)系統(tǒng)各部件的一組公共信號(hào)線,可分為地址總線、數(shù)據(jù)總線和控制總線。
總線的作用
地址總線用于傳輸存儲(chǔ)器單元或I/O端口的地址,傳輸方向是單向的,只能由單片機(jī)向外傳送。另外,地址線的根數(shù)m決定了地址總線所能“尋址”的存儲(chǔ)單元的個(gè)數(shù)和I/O端口的總數(shù)。這是因?yàn)槊扛刂肪€能傳輸高電平和低電平兩種信號(hào),可分別用二進(jìn)制數(shù)“1”和“0”表示,而二進(jìn)制數(shù)的每個(gè)邏輯組可以對(duì)應(yīng)一個(gè)地址。具有m根地址線的地址總線可以傳輸m位的二進(jìn)制數(shù),共2m個(gè)地址。
數(shù)據(jù)總線是雙向總線,可在單片機(jī)和存儲(chǔ)單元及I/O端口之間傳輸數(shù)據(jù)。數(shù)據(jù)總線的位數(shù)一般與單片機(jī)CPU的字長(zhǎng)一致。控制總線由若干條線組成,有的用于向存儲(chǔ)器或I/O端口發(fā)送CPU的控制信號(hào),有的用于向CPU傳送存儲(chǔ)器或I/O端口的狀態(tài)信息。
MCS-51單片機(jī)片外總線的構(gòu)成
MCS-51單片機(jī)沒(méi)有專(zhuān)用的片外地址總線和數(shù)據(jù)總線,這兩種總線的功能由單片機(jī)的并行輸入、輸出口P0和P2提供。MCS-51單片機(jī)的擴(kuò)展總線結(jié)構(gòu)如圖5-1所示。
圖5-1 MCS-51單片機(jī)的擴(kuò)展總線結(jié)構(gòu)
1.P0數(shù)據(jù)/地址分時(shí)復(fù)用總線
MCS-51單片機(jī)有8位片外數(shù)據(jù)總線(D7~D0),由P0口提供。另外,MCS-51單片機(jī)有16位外部地址總線,P0口傳送其中的低8位地址(A7~A0)。當(dāng)單片機(jī)訪問(wèn)片外擴(kuò)展的存儲(chǔ)器和I/O接口時(shí),P0口先傳送片外地址的低8位,然后再傳送數(shù)據(jù),即P0口是地址與數(shù)據(jù)分時(shí)復(fù)用的總線。由此可知,當(dāng)數(shù)據(jù)出現(xiàn)在P0口上時(shí),低8位地址已從P0口上消失,而圖5-1中的地址鎖存器可以在低8位地址消失前將其鎖存,并提供給片外擴(kuò)展的存儲(chǔ)器或I/O端口。
2.P2地址總線高8位
在進(jìn)行片外擴(kuò)展時(shí),P2口是地址總線的高8位。與P0口不同的是,P2口僅傳送地址,不復(fù)用。由P2口和P0口構(gòu)成的16位片外地址線,使MCS-51單片機(jī)具有216=65536個(gè)片外地址。MCS-51單片機(jī)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)單元均是按字節(jié)尋址的(即每個(gè)字節(jié)型存儲(chǔ)單元都有地址)。因此,MCS-51單片機(jī)可以擴(kuò)展的片外程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的容量均為216個(gè)字節(jié)(Byte),即64KB。
3.控制總線
控制總線有ALE、PSEN、WR和RD,其作用分別如下:
(1)ALE
如前所述,P0口是地址和數(shù)據(jù)分時(shí)復(fù)用的總線,必須通過(guò)鎖存器將其傳送的低8位地址鎖存。而何時(shí)驅(qū)動(dòng)地址鎖存器鎖存低8位地址非常關(guān)鍵,因?yàn)楸仨毐WC地址鎖存器鎖存時(shí),P0口上傳送的是地址,而不是之后傳送的數(shù)據(jù)。
ALE是地址鎖存使能引腳。在單片機(jī)進(jìn)行外部存儲(chǔ)器和I/O端口訪問(wèn)時(shí),該引腳將在P0從地址線變?yōu)閿?shù)據(jù)線之前輸出一個(gè)下降沿信號(hào)??捎迷撘_作為地址鎖存器(假設(shè)為下降沿或低電平鎖存的鎖存器)的鎖存驅(qū)動(dòng)信號(hào),以保證被鎖存的是低8位地址。
(2)PSEN
PSEN是程序存儲(chǔ)器輸出使能引腳,低電平有效。該引腳用于片外程序存儲(chǔ)器擴(kuò)展。當(dāng)單片機(jī)進(jìn)行片外程序存儲(chǔ)器的讀操作時(shí),該引腳將輸出低電平,以選通被訪問(wèn)的程序存儲(chǔ)器。程序存儲(chǔ)器的訪問(wèn)包括單片機(jī)從程序存儲(chǔ)器中讀取指令和使用MOVC指令從程序存儲(chǔ)器中讀取數(shù)據(jù)。
(3)WR和RD
單片機(jī)P3口的P3.6和P3.7引腳工作于第二功能時(shí),分別對(duì)應(yīng)于WR和RD。WR和RD用于片外數(shù)據(jù)存儲(chǔ)器(或I/O接口)的擴(kuò)展,分別為片外數(shù)據(jù)存儲(chǔ)器(或I/O接口)的寫(xiě)選通和讀選通信號(hào),均為低電平有效??僧a(chǎn)生片外數(shù)據(jù)存儲(chǔ)器(或I/O接口)讀操作的指令有“MOVX A,@DPTR”和“MOVX A,@Ri”,可產(chǎn)生寫(xiě)操作的指令有“MOVX@DPTR,A”和“MOVX@Ri,A”。
當(dāng)單片機(jī)從片外數(shù)據(jù)存儲(chǔ)器(或I/O接口)讀數(shù)據(jù),并將數(shù)據(jù)送上片外數(shù)據(jù)總線時(shí),RD引腳為低電平、WR引腳為高電平。相反地,當(dāng)向片外數(shù)據(jù)存儲(chǔ)器(或I/O接口)寫(xiě)數(shù)據(jù)時(shí),WR引腳為低電平、RD引腳為高電平。
需要注意的是,PSEN、WR和RD這三個(gè)引腳中的任何兩個(gè)都不會(huì)同時(shí)為低電平,即片外數(shù)據(jù)存儲(chǔ)器(或I/O接口)的讀和寫(xiě)以及片外程序存儲(chǔ)器讀這三種操作不會(huì)同時(shí)發(fā)生。
4.地址鎖存器的作用
如前所述,圖5-1中的地址鎖存器用于鎖存P0口上傳送的地址信息,即利用ALE引腳上的下降沿信號(hào)觸發(fā)地址鎖存器的鎖存操作。因此,圖5-1中的地址鎖存器應(yīng)當(dāng)是下降沿觸發(fā)的鎖存器,如芯片74LS373。如果使用上升沿(或高電平)觸發(fā)的鎖存器(如芯片74LS273和74LS377等),則必須將ALE引腳信號(hào)取反后再連接至鎖存器的觸發(fā)端。