單片機(jī)第6章MCS51系列單片機(jī)的擴(kuò)展技術(shù)課件_第1頁
單片機(jī)第6章MCS51系列單片機(jī)的擴(kuò)展技術(shù)課件_第2頁
單片機(jī)第6章MCS51系列單片機(jī)的擴(kuò)展技術(shù)課件_第3頁
單片機(jī)第6章MCS51系列單片機(jī)的擴(kuò)展技術(shù)課件_第4頁
單片機(jī)第6章MCS51系列單片機(jī)的擴(kuò)展技術(shù)課件_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)第6章__MCS-51系列單片機(jī)的擴(kuò)展技術(shù)單片機(jī)第6章__MCS-51系列單片機(jī)的擴(kuò)展技術(shù)

在很多復(fù)雜的應(yīng)用情況下,單片機(jī)內(nèi)的RAM、ROM和I/O接口不夠使用時(shí),就需要進(jìn)行擴(kuò)展。

單片機(jī)的系統(tǒng)擴(kuò)展主要是指外接程序存儲器、數(shù)據(jù)存儲器或I/O接口等,以滿足應(yīng)用系統(tǒng)的需要。2在很多復(fù)雜的應(yīng)用情況下,單片機(jī)內(nèi)的RAM、ROM

單片機(jī)是通過地址總線,數(shù)據(jù)總線和控制總線與外部交換信息的。MCS-51單片機(jī)的總線接口信號見圖。3單片機(jī)是通過地址總線,數(shù)據(jù)總線和控制總線與外部(1)地址總線A0~A15地址總線的高8位是由P2口提供的,低8位是由P0口提供的。在訪問外部存儲器時(shí),由地址鎖存信號ALE的下降沿把P0口的低8位以及P2口的高8位鎖存至地址鎖存器中,從而構(gòu)成系統(tǒng)的16位地址總線。(2)數(shù)據(jù)總線D0~D7數(shù)據(jù)總線是由P0口提供的,因?yàn)镻0口線既用作地址線,又用作數(shù)據(jù)線(分時(shí)使用),因此,需要加一個(gè)8位鎖存器。4(1)地址總線A0~A154(3)控制總線系統(tǒng)控制總線共12根,既P3口的第二功能再加上RESET、EA、ALE和PSEN。實(shí)際應(yīng)用中的常用控制信號如下。使用ALE作為地址鎖存的選通信號,以實(shí)現(xiàn)低8位地址的鎖存。以PSEN信號作為擴(kuò)展程序存儲器的讀選通信號,在取指令碼時(shí)或執(zhí)行MOVC指令時(shí)變?yōu)橛行А?。以EA信號作為內(nèi)、外程序存儲器的選擇信號。以RD和WR作為擴(kuò)展數(shù)據(jù)存儲器和I/O端口的讀、寫選通信號。執(zhí)行MOVX指令時(shí),這兩個(gè)信號分別自動(dòng)有效。5(3)控制總線51.外部程序存儲器時(shí)序分析

程序存儲器擴(kuò)展電路的安排應(yīng)滿足單片機(jī)從外存取指令的時(shí)序要求。從時(shí)序圖中分析ALE、PSEN、P0和P2怎樣配合使程序存儲器完成取指操作,從而得出擴(kuò)展程序存儲器的方法。單片機(jī)一直處于不斷的取指令碼-執(zhí)行-取指令碼-執(zhí)行的工作過程中,在取指令碼時(shí)和執(zhí)行MOVC指令時(shí)PSEN會變?yōu)橛行?,和其它信號配合完成從程序存儲器讀取數(shù)據(jù)。6.1外部存儲器的擴(kuò)展技術(shù)

6.1.1外部程序存儲器的擴(kuò)展技術(shù)61.外部程序存儲器時(shí)序分析6.1外部存儲器的擴(kuò)展技術(shù)

6.外部程序存儲器訪問時(shí)序EA=0,選擇外部ROM。S2P1開始,P2口輸出高8位地址A15-A8,一直持續(xù)到S4。S2P1開始,P0口輸出低8位地址A7-A0,S2P1結(jié)束ALE下降沿鎖存A7-A0。S3P1開始,PSEN讀選通外部存儲器,延時(shí)等待TPLIV存儲器把數(shù)據(jù)送到P0口。在PSEN上升沿來以前,單片機(jī)讀取P0數(shù)據(jù),完成一次外部程序存儲器訪問。一個(gè)機(jī)器周期可訪問兩次外部程序存儲器,讀兩字節(jié)指令。7外部程序存儲器訪問時(shí)序EA=0,選擇外部ROM。72.外部程序存儲器的連接方法三總線分別連接82.外部程序存儲器的連接方法8單片機(jī)外部擴(kuò)展常用程序存儲器芯片為EPROM,其掉電后信息不會丟失,且只有在紫外線的照射下,存儲器的單元信息才可擦除。用作擴(kuò)展的EPROM主要是27系列,如2716、2732、2764、27128、7256等,其中高位數(shù)字27表示該芯片是EPROM,低位數(shù)字表明存儲容量,如2716表示16K個(gè)存儲位,亦即字節(jié)容量為2K的EPROM。常用的還有EEPROM

,即28系列,如2816/2817、2864等,型號含義同上。

3.外部程序存儲器的擴(kuò)展(1)常見的EPROM存儲器及擴(kuò)展電路9單片機(jī)外部擴(kuò)展常用程序存儲器芯片為EPROM,其掉電EPROM除2716外均為28線雙列直插式封裝,各引腳定義如下。

A0~Ai:地址輸入線,i=12~15。

D0~Di:三態(tài)數(shù)據(jù)總線,讀或編程校驗(yàn)時(shí)為數(shù)據(jù)輸出線,編程時(shí)為數(shù)據(jù)輸入線。其余時(shí)間呈高阻狀態(tài)。

PGM:編程脈沖輸入線。

OE:讀出選通線,低電平有效。

CE:片選線,低電平有效。

VPP:編程電源線,其值因芯片及制作廠商而異。

VCC:電源線,接+5V電源。

GND:接地。10EPROM除2716外均為28線雙列直插式封裝,各引腳74LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直接相連。只擴(kuò)展了一片EPROM,片選端接地。PSEN的下降沿使OE有效,由A0~A12指定的單元指令碼從D0~D7輸出。P0讀入指令到單片機(jī),經(jīng)譯碼執(zhí)行。常見的EPROM存儲器及擴(kuò)展電路1174LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直

單片機(jī)擴(kuò)展2716,2732,27128等EPROM的方法與上圖相同,差別僅在于不同的芯片的存儲容量不同,因而使用高8位地址的P2端口線的根數(shù)不同。擴(kuò)展2716(2KB)需使用A8~A10三條高位地址線擴(kuò)展2732(4KB)需要A8~A11四條高位地址線。擴(kuò)展27128(16KB)需要A8~A13六條高位地址線。注意:2764和27128的PGM引腳應(yīng)接Vcc。12

單片機(jī)擴(kuò)展2716,2732,27128等EPRO(2)E2PROM存儲器及擴(kuò)展電路

電可擦除只讀存儲器EEPROM的特點(diǎn)如下:單+5V供電,電可擦除可改寫。使用次數(shù)為1萬次,信息保存時(shí)間為10年。讀出時(shí)間為ns級,寫入時(shí)間為ms級。芯片引腳信號與相應(yīng)的RAM和EPROM芯片兼容。13(2)E2PROM存儲器及擴(kuò)展電路1374LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直接相連。只擴(kuò)展了一片EEPROM,片選端接地。PSEN和RD相與后與OE相連,支持讀指令和讀數(shù)據(jù)操作。WR和WE相連,支持寫數(shù)據(jù)操作。1474LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直(3)多存儲器片選方法①線選法

所謂線選法,就是把單根高位地址線直接加在存貯器芯片的CE端。線選法的優(yōu)點(diǎn)是連接簡單,不必附加邏輯,但擴(kuò)展的存貯芯片地址不連續(xù)。

15(3)多存儲器片選方法15②譯碼法(全譯碼)

譯碼法能提供全部64KB地址空間,且擴(kuò)展的存貯器芯片地址是連續(xù)的。

16②譯碼法(全譯碼)166.1.2外部數(shù)據(jù)存儲器的擴(kuò)展技術(shù)1.外部數(shù)據(jù)存儲器時(shí)序分析

MCS-51單片機(jī)內(nèi)只有128字節(jié)的數(shù)據(jù)RAM,當(dāng)應(yīng)用中需要更多的RAM時(shí),只能在片外擴(kuò)展??蓴U(kuò)展的最大容量為64KB。當(dāng)執(zhí)行指令MOVXA,@Ri或MOVXA,@DPTR時(shí),進(jìn)入外部數(shù)據(jù)RAM的讀周期。C51語言中采用什么指令訪問外部數(shù)據(jù)存儲器?176.1.2外部數(shù)據(jù)存儲器的擴(kuò)展技術(shù)1.外部數(shù)據(jù)存儲器時(shí)序外部數(shù)據(jù)存儲器的讀周期

第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)器周期讀數(shù)據(jù)。P2口輸出高8位地址A15-A8。P0口輸出低8位地址A7-A0。分時(shí)有效,需ALE下降沿鎖存。P0口讀8位數(shù)據(jù)D7-D0。分時(shí)有效,需RD選通外部存儲器。單片機(jī)在RD上升沿之前讀入P0數(shù)據(jù),完成一次外部存儲器讀操作。18外部數(shù)據(jù)存儲器的讀周期第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)外部數(shù)據(jù)存儲器的寫周期第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)器周期寫數(shù)據(jù)。P2口輸出高8位地址A15-A8。P0口輸出低8位地址A7-A0。分時(shí)有效,需ALE下降沿鎖存。P0口讀8位數(shù)據(jù)D7-D0。分時(shí)有效,需WR選通外部存儲器。外部存儲器在WR上升沿之前將P0數(shù)據(jù)寫入指定單元。19外部數(shù)據(jù)存儲器的寫周期第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)器周期寫2.外部數(shù)據(jù)存儲器的連接方法注意:外部數(shù)據(jù)存儲器由RD或WR選通,可讀可寫;202.外部數(shù)據(jù)存儲器的連接方法203.外部數(shù)據(jù)存儲器的擴(kuò)展

6116的地址為0000H~07FFH,由于高位地址線未接入電路中,該芯片地址還可為1000H~17FFH、2000H~27FFH等等。213.外部數(shù)據(jù)存儲器的擴(kuò)展6116的地址為0000完成外部數(shù)據(jù)存儲器RAM讀寫操作的兩種方式:

例如把累加器A的內(nèi)容寫入外部存儲器RAM的02F3H單元中,可有如下兩種程序:第一種:MOVP2,#02H;端口提供高8位地址MOVR0,#0F3H;R0提供低8位地址MOVX@R0,A;A中內(nèi)容寫入02F3H單元第二種:MOVDPTR,#02F3H;DPTR提供16位地址MOVX@DPTR,A;A中內(nèi)容送02F3H單元同樣地,若需將外部數(shù)據(jù)存儲器RAM02F3H地址單元中的內(nèi)容讀入A累加器,其程序可為:第一種:MOVP2,#02H;端口提供高8位地址MOVR0,#0F3H;R0提供低8位地址MOVXA,@R0;02F3H單元內(nèi)容送入A中第二種:MOVDPTR,#02F3H;DPTR提供16位地址MOVXA,@DPTR;02F3H單元內(nèi)容送入A中C51語言中采用什么指令實(shí)現(xiàn)上述功能?22完成外部數(shù)據(jù)存儲器RAM讀寫操作的兩種方式:C51語言中采用6.2并行接口的擴(kuò)展技術(shù)

MCS-51單片機(jī)共有4個(gè)8位并行I/O口,在外部擴(kuò)展時(shí),P0和P2口做為總線使用,因而提供給用戶的I/O口就只有P1或P3口的部分口線。所接的外設(shè)較多時(shí),就必須擴(kuò)展I/O接口。MCS-51單片機(jī)擴(kuò)展的I/O口和外部數(shù)據(jù)存儲器統(tǒng)一編址、采用相同的控制信號、相同的尋址方式和相同的指令,即XBYTE宏定義。236.2并行接口的擴(kuò)展技術(shù)MCS-51單片機(jī)共(1)XBYTE宏定義讀取外設(shè)數(shù)據(jù):變量=XBYTE[地址];RD‘=0;1)送出地址:確定訪問的單元P2口送出高8位;P0口送出低8位2)讀取數(shù)據(jù):變量=P0(2)XBYTE宏定義通過外設(shè)輸出數(shù)據(jù):XBYTE[地址]=數(shù)據(jù);WR‘=0;1)送出地址:確定訪問的單元P2口送出高8位;P0口送出低8位2)輸出數(shù)據(jù):P0=數(shù)據(jù);24(1)XBYTE宏定義讀取外設(shè)數(shù)據(jù):246.2.1簡單輸入/輸出口的擴(kuò)展74LS244的選通信號由RD和P2.0相或產(chǎn)生,當(dāng)執(zhí)行讀該片的指令時(shí),RD和P2.0有效,打開74LS244控制門,從而把數(shù)據(jù)通過74LS244讀入8XX51。74LS244各引腳定義如下:1A1~1A4:第1組4條輸入線1Y1~1Y4:第1組4條輸出線2A1~2A4:第2組4條輸入線2Y1~2Y4:第2組4條輸出線1G:第1組三態(tài)門使能端,低電平有效2G:第2組三態(tài)門使能端,低電平有效VCC:工作電源,接+5V電壓GND:接地256.2.1簡單輸入/輸出口的擴(kuò)展74LS244的選通信號由R程序如下(匯編):MOVDPTR,#FEFFH ;數(shù)據(jù)指針指向74LS244MOVXA,@DPTR;外部數(shù)據(jù)經(jīng)過74LS244送入累加器AMOV61H,A ;數(shù)據(jù)送61H單元保存26程序如下(匯編):26程序如下(C51語言):(1)變量=XBYTE[0xfeff];(2)unsignedcharxdataa_at_0xfeff;(全局變量)變量=a;27程序如下(C51語言):2774LS273的選通信號由WR和P2.0相或產(chǎn)生,通過執(zhí)行對該片的寫指令,WR和P2.0有效,使8XX51的數(shù)據(jù)往74LS273輸出。74LS273各引腳定義如下:D0~D7:輸入線。Q0~Q7:輸出線。CLR:清除控制端,低電平有效。CLK:時(shí)鐘輸入端,上升沿有效。VCC:工作電源,接+5V電壓。GND:接地。2874LS273的選通信號由WR和P2.0相或產(chǎn)生,通過執(zhí)行對從74LS273輸出數(shù)據(jù),可使用如下指令(匯編):MOVDPTR,#0FEFFHMOVX@DPTR,A;向74LS273輸出數(shù)據(jù)29從74LS273輸出數(shù)據(jù),可使用如下指令(匯編):2從74LS273輸出數(shù)據(jù),可使用如下指令(C51語言):(1)XBYTE[0xfeff]=輸出數(shù)據(jù)(2)unsignedcharxdataa_at_0xfeff;(全局變量)a=數(shù)據(jù);30從74LS273輸出數(shù)據(jù),可使用如下指令(C51語言【例】74LS273輸出端接8個(gè)LED發(fā)光二極管,以顯示8個(gè)按鈕開關(guān)狀態(tài),某位低電平時(shí)二極管發(fā)光。74LS244擴(kuò)展輸入口,接8個(gè)按鈕開關(guān)。

31【例】74LS273輸出端接8個(gè)LED發(fā)光二極管,以顯示8個(gè)74LS273和74LS244的工作受AT89C51的P2.0、RD、WR三條控制線控制。電路的工作原理如下:當(dāng)P2.0=0,WR=0(RD=1)選中寫74LS273,AT89C51通過P0口輸出數(shù)據(jù)到74LS273,;當(dāng)P2.0=0,RD=0(WR=1)時(shí)選中讀74LS244,某開關(guān)按下時(shí)則對應(yīng)位輸入為“0”。輸出程序段(匯編):

MOVA,#data;數(shù)據(jù)→A MOVDPTR,#0FEFFH;I/O地址→DPTR MOVX@DPTR,A;WR為低,數(shù)據(jù)經(jīng)74LS273口輸出輸入程序段(匯編):

MOVDPTR,#0FEFFH;I/O地址→DPTRMOVXA,@DPTR ;RD為低,74LS244口;數(shù)據(jù)讀入內(nèi)部RAM3274LS273和74LS244的工作受AT89C51輸出程序段(C51語言):

(1)XBYTE[0xfeff]=輸出數(shù)據(jù)(2)unsignedcharxdataa_at_0xfeff;(全局變量)a=輸出數(shù)據(jù)輸入程序段(C51語言):

(1)變量=XBYTE[0xfeff];(2)unsignedcharxdataa_at_0xfeff;(全局變量)變量=a;33輸出程序段(C51語言):輸入程序段(C51語言):33例1

編寫程序把按鈕開關(guān)狀態(tài)通過上圖的發(fā)光二極管顯示出來。程序如下:DDIS: MOVDPTR,#0FEFFH ;輸入口地址→DPTRLP: MOVXA,@DPTR ;按鈕開關(guān)狀態(tài)讀入A中MOVX@DPTR,A ;A中數(shù)據(jù)送輸出口SJMPLP ;反復(fù)連續(xù)執(zhí)行#include<reg51.h>#include<absacc.h>voidmain(){unsignedchara;while(1){a=XBYTE[0xfeff];XBYTE[0xfeff]=a;}}#include<reg51.h>unsignedcharxdataa_at_0xfeff;voidmain(){unsignedcharb;while(1) {b=a; a=b; }}34例1編寫程序把按鈕開關(guān)狀態(tài)通過上圖的發(fā)光二極管顯示出來。一、8255的內(nèi)部結(jié)構(gòu)及引腳功能

8255A是可編程并行輸入/輸出接口芯片,內(nèi)含A、B、C三個(gè)8位的輸入輸出數(shù)據(jù)端口,A、B兩組控制電路,讀/寫控制邏輯電路以及數(shù)據(jù)總線緩沖器,其內(nèi)部結(jié)構(gòu)與引腳配置如下圖所示。6.2.2可編程并行輸入/輸出口8255的擴(kuò)展35一、8255的內(nèi)部結(jié)構(gòu)及引腳功能6.2.2可編程并行8255A控制信號與端口信號傳送的I/O操作關(guān)系A(chǔ)1A0RD*WR*CS*工作狀態(tài)00010讀端口A:A口數(shù)據(jù)→數(shù)據(jù)總線讀端口B:B口數(shù)據(jù)→數(shù)據(jù)總線讀端口C:C口數(shù)據(jù)→數(shù)據(jù)總線010101001000100寫端口A:總線數(shù)據(jù)→A口寫端口B:總線數(shù)據(jù)→B口寫端口C:總線數(shù)據(jù)→C口寫控制字:總線數(shù)據(jù)→控制字寄存器011001010011100××××1數(shù)據(jù)總線為三態(tài)11010非法狀態(tài)××110數(shù)據(jù)總線為三態(tài)368255A控制信號與端口信號傳送的I/O操作關(guān)系A(chǔ)1A0二、8255A的工作方式及選擇

8255A在三種基本的方式下工作:方式0:基本輸入/輸出。方式1:選通的輸入/輸出。方式2:雙向傳輸。1、方式選擇控制字其中A口可工作于方式0、1、和2,而B口只能工作在方式0和方式1。例寫入工作方式控制字95H

可將8255A編程為:A口方式0輸入,B口方式1輸出,C口的上半部分(PC7~PC4)輸出,C口的下半部分(PC3~PC0)輸入。37二、8255A的工作方式及選擇8255A在三種基本的方式下2.C口按位置位/復(fù)位控制字可對C口8位中的任一位置“1”或清“0”。用于位控。例

控制字07H寫入控制口,置“1”PC3;08H寫入控制口,清“0”PC4。382.C口按位置位/復(fù)位控制字可對C口8位中的任一位置“1”三、AT89C51單片機(jī)和8255的接口1.硬件接口電路

如圖是89C51擴(kuò)展1片8255A的電路圖。74LS373是地址鎖存器,P0.1、P0.0經(jīng)74LS373與8255A的地址線A1、A0連接;P0.7經(jīng)74LS373與片選端相連,其他地址線懸空。39三、AT89C51單片機(jī)和8255的接口1.硬件接口電路2.確定8255A端口地址圖中8255A各端口寄存器的地址為:A口:FF7CHB口:FF7DHC口:FF7EH控制寄存器:FF7FH402.確定8255A端口地址圖中8255A各端口寄存器的地址為3.軟件編程例要求8255A工作在方式0,且A口作為輸入,B口、C口作為輸出,程序如下: MOV A,#90H ;A口方式0輸入,B口、 ;C口輸出的控制字送A MOV DPTR,#0FF7FH ;控制寄存器地址→DPTR MOVX@DPTR,A ;方式控制字→控制寄存器MOV DPTR,#0FF7CH ;A口地址→DPTRMOVXA,@DPTR ;從A口讀數(shù)據(jù)MOVDPTR,#0FF7DH ;B口地址→DPTRMOV A,#DATA1 ;要輸出的數(shù)據(jù)DATA1→AMOVX@DPTR,A ;將DATA1送B口輸出MOVDPTR,#0FF7EH ;C口地址→DPTR413.軟件編程例要求8255A工作在方式0,且A口作為輸入,MOVA,#DATA2 ;DATA2→AMOVX@DPTR,A ;將數(shù)據(jù)DATA2送C口輸出C51語言程序:#include<reg51.h>#include<absacc.h>voidmain(){unsignedchara,b,c;XBYTE[0xff7f]=0x90;//寫入控制字a=XBYTE[0xff7C]; //讀A口數(shù)據(jù),存入變量a中XBYTE[0xff7D]=b; //寫B(tài)口,變量b通過B口輸出XBYTE[0xff7e]=c; //寫C口,變量C通過C口輸出}42MOVA,#DATA2 ;DATA2→AC5【練習(xí)】用8255的PA、PB、PC口分別作為輸入口接八只控制開關(guān),或作為輸出口接八只發(fā)光二極管,編寫控制程序,八只發(fā)光二極管分別受各自對應(yīng)的控制開關(guān)的控制。43【練習(xí)】用8255的PA、PB、PC口分別作為輸入口接八只

ORG0000H AJMPMAIN ORG0250H MAIN:MOVDPTR,#0FFfeH MOVA,#90H ;A口輸入、B口輸出MOVX@DPTR,A ;寫控制字?jǐn)?shù)據(jù)LOOP:MOVDPTR,#0FF3eH MOVXA,@DPTR ;讀輸入口數(shù)據(jù)MOVDPTR,#0FF7eH MOVX@DPTR,A ;寫輸出口數(shù)據(jù)SJMPLOOP END ;程序結(jié)束44ORG0000H 44C51語言程序:#include<reg51.g>#include<absacc.h>voidmain(){ unsignedchara; XBYTE[0xfffe]=0x90; while(1) { a=XBYTE[0xff3e]; XBYTE[0xff7e]=a; }}#include<reg51.g>unsignedcharxdataa_at_0xfffe;unsignedcharxdatab_at_0xff3e;unsignedcharxdatac_at_0xff7e;voidmain(){ unsignedchard; a=0x90; while(1) { d=b; c=d; }}45C51語言程序:#include<reg51.g>45單片機(jī)第6章__MCS-51系列單片機(jī)的擴(kuò)展技術(shù)單片機(jī)第6章__MCS-51系列單片機(jī)的擴(kuò)展技術(shù)

在很多復(fù)雜的應(yīng)用情況下,單片機(jī)內(nèi)的RAM、ROM和I/O接口不夠使用時(shí),就需要進(jìn)行擴(kuò)展。

單片機(jī)的系統(tǒng)擴(kuò)展主要是指外接程序存儲器、數(shù)據(jù)存儲器或I/O接口等,以滿足應(yīng)用系統(tǒng)的需要。47在很多復(fù)雜的應(yīng)用情況下,單片機(jī)內(nèi)的RAM、ROM

單片機(jī)是通過地址總線,數(shù)據(jù)總線和控制總線與外部交換信息的。MCS-51單片機(jī)的總線接口信號見圖。48單片機(jī)是通過地址總線,數(shù)據(jù)總線和控制總線與外部(1)地址總線A0~A15地址總線的高8位是由P2口提供的,低8位是由P0口提供的。在訪問外部存儲器時(shí),由地址鎖存信號ALE的下降沿把P0口的低8位以及P2口的高8位鎖存至地址鎖存器中,從而構(gòu)成系統(tǒng)的16位地址總線。(2)數(shù)據(jù)總線D0~D7數(shù)據(jù)總線是由P0口提供的,因?yàn)镻0口線既用作地址線,又用作數(shù)據(jù)線(分時(shí)使用),因此,需要加一個(gè)8位鎖存器。49(1)地址總線A0~A154(3)控制總線系統(tǒng)控制總線共12根,既P3口的第二功能再加上RESET、EA、ALE和PSEN。實(shí)際應(yīng)用中的常用控制信號如下。使用ALE作為地址鎖存的選通信號,以實(shí)現(xiàn)低8位地址的鎖存。以PSEN信號作為擴(kuò)展程序存儲器的讀選通信號,在取指令碼時(shí)或執(zhí)行MOVC指令時(shí)變?yōu)橛行?。。以EA信號作為內(nèi)、外程序存儲器的選擇信號。以RD和WR作為擴(kuò)展數(shù)據(jù)存儲器和I/O端口的讀、寫選通信號。執(zhí)行MOVX指令時(shí),這兩個(gè)信號分別自動(dòng)有效。50(3)控制總線51.外部程序存儲器時(shí)序分析

程序存儲器擴(kuò)展電路的安排應(yīng)滿足單片機(jī)從外存取指令的時(shí)序要求。從時(shí)序圖中分析ALE、PSEN、P0和P2怎樣配合使程序存儲器完成取指操作,從而得出擴(kuò)展程序存儲器的方法。單片機(jī)一直處于不斷的取指令碼-執(zhí)行-取指令碼-執(zhí)行的工作過程中,在取指令碼時(shí)和執(zhí)行MOVC指令時(shí)PSEN會變?yōu)橛行?,和其它信號配合完成從程序存儲器讀取數(shù)據(jù)。6.1外部存儲器的擴(kuò)展技術(shù)

6.1.1外部程序存儲器的擴(kuò)展技術(shù)511.外部程序存儲器時(shí)序分析6.1外部存儲器的擴(kuò)展技術(shù)

6.外部程序存儲器訪問時(shí)序EA=0,選擇外部ROM。S2P1開始,P2口輸出高8位地址A15-A8,一直持續(xù)到S4。S2P1開始,P0口輸出低8位地址A7-A0,S2P1結(jié)束ALE下降沿鎖存A7-A0。S3P1開始,PSEN讀選通外部存儲器,延時(shí)等待TPLIV存儲器把數(shù)據(jù)送到P0口。在PSEN上升沿來以前,單片機(jī)讀取P0數(shù)據(jù),完成一次外部程序存儲器訪問。一個(gè)機(jī)器周期可訪問兩次外部程序存儲器,讀兩字節(jié)指令。52外部程序存儲器訪問時(shí)序EA=0,選擇外部ROM。72.外部程序存儲器的連接方法三總線分別連接532.外部程序存儲器的連接方法8單片機(jī)外部擴(kuò)展常用程序存儲器芯片為EPROM,其掉電后信息不會丟失,且只有在紫外線的照射下,存儲器的單元信息才可擦除。用作擴(kuò)展的EPROM主要是27系列,如2716、2732、2764、27128、7256等,其中高位數(shù)字27表示該芯片是EPROM,低位數(shù)字表明存儲容量,如2716表示16K個(gè)存儲位,亦即字節(jié)容量為2K的EPROM。常用的還有EEPROM

,即28系列,如2816/2817、2864等,型號含義同上。

3.外部程序存儲器的擴(kuò)展(1)常見的EPROM存儲器及擴(kuò)展電路54單片機(jī)外部擴(kuò)展常用程序存儲器芯片為EPROM,其掉電EPROM除2716外均為28線雙列直插式封裝,各引腳定義如下。

A0~Ai:地址輸入線,i=12~15。

D0~Di:三態(tài)數(shù)據(jù)總線,讀或編程校驗(yàn)時(shí)為數(shù)據(jù)輸出線,編程時(shí)為數(shù)據(jù)輸入線。其余時(shí)間呈高阻狀態(tài)。

PGM:編程脈沖輸入線。

OE:讀出選通線,低電平有效。

CE:片選線,低電平有效。

VPP:編程電源線,其值因芯片及制作廠商而異。

VCC:電源線,接+5V電源。

GND:接地。55EPROM除2716外均為28線雙列直插式封裝,各引腳74LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直接相連。只擴(kuò)展了一片EPROM,片選端接地。PSEN的下降沿使OE有效,由A0~A12指定的單元指令碼從D0~D7輸出。P0讀入指令到單片機(jī),經(jīng)譯碼執(zhí)行。常見的EPROM存儲器及擴(kuò)展電路5674LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直

單片機(jī)擴(kuò)展2716,2732,27128等EPROM的方法與上圖相同,差別僅在于不同的芯片的存儲容量不同,因而使用高8位地址的P2端口線的根數(shù)不同。擴(kuò)展2716(2KB)需使用A8~A10三條高位地址線擴(kuò)展2732(4KB)需要A8~A11四條高位地址線。擴(kuò)展27128(16KB)需要A8~A13六條高位地址線。注意:2764和27128的PGM引腳應(yīng)接Vcc。57

單片機(jī)擴(kuò)展2716,2732,27128等EPRO(2)E2PROM存儲器及擴(kuò)展電路

電可擦除只讀存儲器EEPROM的特點(diǎn)如下:單+5V供電,電可擦除可改寫。使用次數(shù)為1萬次,信息保存時(shí)間為10年。讀出時(shí)間為ns級,寫入時(shí)間為ms級。芯片引腳信號與相應(yīng)的RAM和EPROM芯片兼容。58(2)E2PROM存儲器及擴(kuò)展電路1374LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直接相連。只擴(kuò)展了一片EEPROM,片選端接地。PSEN和RD相與后與OE相連,支持讀指令和讀數(shù)據(jù)操作。WR和WE相連,支持寫數(shù)據(jù)操作。5974LS373為8D鎖存器在ALE下跳沿鎖存地址,高位地址直(3)多存儲器片選方法①線選法

所謂線選法,就是把單根高位地址線直接加在存貯器芯片的CE端。線選法的優(yōu)點(diǎn)是連接簡單,不必附加邏輯,但擴(kuò)展的存貯芯片地址不連續(xù)。

60(3)多存儲器片選方法15②譯碼法(全譯碼)

譯碼法能提供全部64KB地址空間,且擴(kuò)展的存貯器芯片地址是連續(xù)的。

61②譯碼法(全譯碼)166.1.2外部數(shù)據(jù)存儲器的擴(kuò)展技術(shù)1.外部數(shù)據(jù)存儲器時(shí)序分析

MCS-51單片機(jī)內(nèi)只有128字節(jié)的數(shù)據(jù)RAM,當(dāng)應(yīng)用中需要更多的RAM時(shí),只能在片外擴(kuò)展??蓴U(kuò)展的最大容量為64KB。當(dāng)執(zhí)行指令MOVXA,@Ri或MOVXA,@DPTR時(shí),進(jìn)入外部數(shù)據(jù)RAM的讀周期。C51語言中采用什么指令訪問外部數(shù)據(jù)存儲器?626.1.2外部數(shù)據(jù)存儲器的擴(kuò)展技術(shù)1.外部數(shù)據(jù)存儲器時(shí)序外部數(shù)據(jù)存儲器的讀周期

第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)器周期讀數(shù)據(jù)。P2口輸出高8位地址A15-A8。P0口輸出低8位地址A7-A0。分時(shí)有效,需ALE下降沿鎖存。P0口讀8位數(shù)據(jù)D7-D0。分時(shí)有效,需RD選通外部存儲器。單片機(jī)在RD上升沿之前讀入P0數(shù)據(jù),完成一次外部存儲器讀操作。63外部數(shù)據(jù)存儲器的讀周期第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)外部數(shù)據(jù)存儲器的寫周期第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)器周期寫數(shù)據(jù)。P2口輸出高8位地址A15-A8。P0口輸出低8位地址A7-A0。分時(shí)有效,需ALE下降沿鎖存。P0口讀8位數(shù)據(jù)D7-D0。分時(shí)有效,需WR選通外部存儲器。外部存儲器在WR上升沿之前將P0數(shù)據(jù)寫入指定單元。64外部數(shù)據(jù)存儲器的寫周期第一個(gè)機(jī)器周期讀指令,第二個(gè)機(jī)器周期寫2.外部數(shù)據(jù)存儲器的連接方法注意:外部數(shù)據(jù)存儲器由RD或WR選通,可讀可寫;652.外部數(shù)據(jù)存儲器的連接方法203.外部數(shù)據(jù)存儲器的擴(kuò)展

6116的地址為0000H~07FFH,由于高位地址線未接入電路中,該芯片地址還可為1000H~17FFH、2000H~27FFH等等。663.外部數(shù)據(jù)存儲器的擴(kuò)展6116的地址為0000完成外部數(shù)據(jù)存儲器RAM讀寫操作的兩種方式:

例如把累加器A的內(nèi)容寫入外部存儲器RAM的02F3H單元中,可有如下兩種程序:第一種:MOVP2,#02H;端口提供高8位地址MOVR0,#0F3H;R0提供低8位地址MOVX@R0,A;A中內(nèi)容寫入02F3H單元第二種:MOVDPTR,#02F3H;DPTR提供16位地址MOVX@DPTR,A;A中內(nèi)容送02F3H單元同樣地,若需將外部數(shù)據(jù)存儲器RAM02F3H地址單元中的內(nèi)容讀入A累加器,其程序可為:第一種:MOVP2,#02H;端口提供高8位地址MOVR0,#0F3H;R0提供低8位地址MOVXA,@R0;02F3H單元內(nèi)容送入A中第二種:MOVDPTR,#02F3H;DPTR提供16位地址MOVXA,@DPTR;02F3H單元內(nèi)容送入A中C51語言中采用什么指令實(shí)現(xiàn)上述功能?67完成外部數(shù)據(jù)存儲器RAM讀寫操作的兩種方式:C51語言中采用6.2并行接口的擴(kuò)展技術(shù)

MCS-51單片機(jī)共有4個(gè)8位并行I/O口,在外部擴(kuò)展時(shí),P0和P2口做為總線使用,因而提供給用戶的I/O口就只有P1或P3口的部分口線。所接的外設(shè)較多時(shí),就必須擴(kuò)展I/O接口。MCS-51單片機(jī)擴(kuò)展的I/O口和外部數(shù)據(jù)存儲器統(tǒng)一編址、采用相同的控制信號、相同的尋址方式和相同的指令,即XBYTE宏定義。686.2并行接口的擴(kuò)展技術(shù)MCS-51單片機(jī)共(1)XBYTE宏定義讀取外設(shè)數(shù)據(jù):變量=XBYTE[地址];RD‘=0;1)送出地址:確定訪問的單元P2口送出高8位;P0口送出低8位2)讀取數(shù)據(jù):變量=P0(2)XBYTE宏定義通過外設(shè)輸出數(shù)據(jù):XBYTE[地址]=數(shù)據(jù);WR‘=0;1)送出地址:確定訪問的單元P2口送出高8位;P0口送出低8位2)輸出數(shù)據(jù):P0=數(shù)據(jù);69(1)XBYTE宏定義讀取外設(shè)數(shù)據(jù):246.2.1簡單輸入/輸出口的擴(kuò)展74LS244的選通信號由RD和P2.0相或產(chǎn)生,當(dāng)執(zhí)行讀該片的指令時(shí),RD和P2.0有效,打開74LS244控制門,從而把數(shù)據(jù)通過74LS244讀入8XX51。74LS244各引腳定義如下:1A1~1A4:第1組4條輸入線1Y1~1Y4:第1組4條輸出線2A1~2A4:第2組4條輸入線2Y1~2Y4:第2組4條輸出線1G:第1組三態(tài)門使能端,低電平有效2G:第2組三態(tài)門使能端,低電平有效VCC:工作電源,接+5V電壓GND:接地706.2.1簡單輸入/輸出口的擴(kuò)展74LS244的選通信號由R程序如下(匯編):MOVDPTR,#FEFFH ;數(shù)據(jù)指針指向74LS244MOVXA,@DPTR;外部數(shù)據(jù)經(jīng)過74LS244送入累加器AMOV61H,A ;數(shù)據(jù)送61H單元保存71程序如下(匯編):26程序如下(C51語言):(1)變量=XBYTE[0xfeff];(2)unsignedcharxdataa_at_0xfeff;(全局變量)變量=a;72程序如下(C51語言):2774LS273的選通信號由WR和P2.0相或產(chǎn)生,通過執(zhí)行對該片的寫指令,WR和P2.0有效,使8XX51的數(shù)據(jù)往74LS273輸出。74LS273各引腳定義如下:D0~D7:輸入線。Q0~Q7:輸出線。CLR:清除控制端,低電平有效。CLK:時(shí)鐘輸入端,上升沿有效。VCC:工作電源,接+5V電壓。GND:接地。7374LS273的選通信號由WR和P2.0相或產(chǎn)生,通過執(zhí)行對從74LS273輸出數(shù)據(jù),可使用如下指令(匯編):MOVDPTR,#0FEFFHMOVX@DPTR,A;向74LS273輸出數(shù)據(jù)74從74LS273輸出數(shù)據(jù),可使用如下指令(匯編):2從74LS273輸出數(shù)據(jù),可使用如下指令(C51語言):(1)XBYTE[0xfeff]=輸出數(shù)據(jù)(2)unsignedcharxdataa_at_0xfeff;(全局變量)a=數(shù)據(jù);75從74LS273輸出數(shù)據(jù),可使用如下指令(C51語言【例】74LS273輸出端接8個(gè)LED發(fā)光二極管,以顯示8個(gè)按鈕開關(guān)狀態(tài),某位低電平時(shí)二極管發(fā)光。74LS244擴(kuò)展輸入口,接8個(gè)按鈕開關(guān)。

76【例】74LS273輸出端接8個(gè)LED發(fā)光二極管,以顯示8個(gè)74LS273和74LS244的工作受AT89C51的P2.0、RD、WR三條控制線控制。電路的工作原理如下:當(dāng)P2.0=0,WR=0(RD=1)選中寫74LS273,AT89C51通過P0口輸出數(shù)據(jù)到74LS273,;當(dāng)P2.0=0,RD=0(WR=1)時(shí)選中讀74LS244,某開關(guān)按下時(shí)則對應(yīng)位輸入為“0”。輸出程序段(匯編):

MOVA,#data;數(shù)據(jù)→A MOVDPTR,#0FEFFH;I/O地址→DPTR MOVX@DPTR,A;WR為低,數(shù)據(jù)經(jīng)74LS273口輸出輸入程序段(匯編):

MOVDPTR,#0FEFFH;I/O地址→DPTRMOVXA,@DPTR ;RD為低,74LS244口;數(shù)據(jù)讀入內(nèi)部RAM7774LS273和74LS244的工作受AT89C51輸出程序段(C51語言):

(1)XBYTE[0xfeff]=輸出數(shù)據(jù)(2)unsignedcharxdataa_at_0xfeff;(全局變量)a=輸出數(shù)據(jù)輸入程序段(C51語言):

(1)變量=XBYTE[0xfeff];(2)unsignedcharxdataa_at_0xfeff;(全局變量)變量=a;78輸出程序段(C51語言):輸入程序段(C51語言):33例1

編寫程序把按鈕開關(guān)狀態(tài)通過上圖的發(fā)光二極管顯示出來。程序如下:DDIS: MOVDPTR,#0FEFFH ;輸入口地址→DPTRLP: MOVXA,@DPTR ;按鈕開關(guān)狀態(tài)讀入A中MOVX@DPTR,A ;A中數(shù)據(jù)送輸出口SJMPLP ;反復(fù)連續(xù)執(zhí)行#include<reg51.h>#include<absacc.h>voidmain(){unsignedchara;while(1){a=XBYTE[0xfeff];XBYTE[0xfeff]=a;}}#include<reg51.h>unsignedcharxdataa_at_0xfeff;voidmain(){unsignedcharb;while(1) {b=a; a=b; }}79例1編寫程序把按鈕開關(guān)狀態(tài)通過上圖的發(fā)光二極管顯示出來。一、8255的內(nèi)部結(jié)構(gòu)及引腳功能

8255A是可編程并行輸入/輸出接口芯片,內(nèi)含A、B、C三個(gè)8位的輸入輸出數(shù)據(jù)端口,A、B兩組控制電路,讀/寫控制邏輯電路以及數(shù)據(jù)總線緩沖器,其內(nèi)部結(jié)構(gòu)與引腳配置如下圖所示。6.2.2可編程并行輸入/輸出口8255的擴(kuò)展80一、8255的內(nèi)部結(jié)構(gòu)及引腳功能6.2.2可編程并行8255A控制信號與端口信號傳送的I/O操作關(guān)系A(chǔ)1A0RD*WR*CS*工作狀態(tài)00010讀端口A:A口數(shù)據(jù)→數(shù)據(jù)總線讀端口B:B口數(shù)據(jù)→數(shù)據(jù)總線讀端口C:C口數(shù)據(jù)→數(shù)據(jù)總線010101001000100寫端口A:總線數(shù)據(jù)→A口寫端口B:總線數(shù)據(jù)→B口寫端口C:總線數(shù)據(jù)→C口寫控制字:總線數(shù)據(jù)→控制字寄存器011001010011100××××1數(shù)據(jù)總線為三態(tài)11010非法狀態(tài)××110數(shù)據(jù)總線為三態(tài)818255A控制信號與端口信號傳送的I/O操作關(guān)系A(chǔ)1A0二、8255A的工作方式及選擇

8255A在三種基本的方式下工作:方式0:基本輸入/輸出。方式1:選通的輸入/輸出。方式2:雙向傳輸。1、方式選擇控制字其中A口可工作于方式0、1、和2,而B口只能工作在方式0和方式1。例寫入工作方式控制字95H

可將8255A編程為:A口方式0輸入,B口方式1輸出,C口的上半部分(PC7~PC4)輸出,C口的下半部分(PC3~PC0)輸入。82二、8255A的工作方式及選擇8255A在三種基本的方式下2.C口按位置位/復(fù)位控制字可對C口8位中的任一位置“1”或清“0”。用于位控。例

控制字07H寫入控制口,置“1”PC

溫馨提示

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

評論

0/150

提交評論