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