第九章擴展輸入輸出_第1頁
第九章擴展輸入輸出_第2頁
第九章擴展輸入輸出_第3頁
第九章擴展輸入輸出_第4頁
第九章擴展輸入輸出_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1第第9 9章章 AT89C51AT89C51單片機單片機 的的I/OI/O擴展擴展12內容概要內容概要AT89C51有4個I/O口P0P3,真正用作I/O口線的只有P1口口的8位I/O口線和P3P3口口的某些位線。因此,大多需要大多需要外部I/O接口的擴展。介紹AT89C51與兩種兩種常用的可編程I/O接口芯片82C55和81C55的擴展接口設計。此外還介紹使用廉價的74LSTTL芯片芯片擴展并行I/O接口以及用AT89C51串行口串行口來擴展并行I/O接口的設計。最后介紹使用I/O口控制口控制的聲音聲音報警報警接口。39.1 I/O接口擴展概述接口擴展概述擴展I/O接口與擴展存儲器一樣,都

2、屬于系統擴展系統擴展的內容。擴展的I/O接口應該具有哪些功能?9.1.1 擴展的擴展的I/O接口功能接口功能擴展的I/O接口電路主要應滿足以下功能要求。1實現和不同外設的速度匹配實現和不同外設的速度匹配大多數外設大多數外設的速度很慢速度很慢,無法和s量級的單片機速度量級的單片機速度相比。單片機在與外設間進行數據傳送時,只有在確認外設已為數據傳送做好準備做好準備的前提下才能進行數據傳送才能進行數據傳送。外設是否準備好,就需要I/O接口電路與外設之間傳送狀態傳送狀態信息信息,以實現單片機與外設之間的速度匹配。342輸出數據鎖存輸出數據鎖存與外設比,單片機的工作速度快,與外設比,單片機的工作速度快,

3、數據在數據總線上保數據在數據總線上保留的時間十分短暫留的時間十分短暫,無法滿足慢速外設的數據接收。所以,無法滿足慢速外設的數據接收。所以在擴展的在擴展的I/O接口電路中接口電路中應有輸出數據鎖存器應有輸出數據鎖存器,以保證輸,以保證輸出數據能出數據能為慢速的接收設備為慢速的接收設備所接收。所接收。3輸入數據三態緩沖輸入數據三態緩沖數據總線數據總線上可能上可能“掛掛”有多個數據源有多個數據源,為使傳送數據時,為使傳送數據時不發生沖突不發生沖突,只允許當前時刻,只允許當前時刻正在接收數據的正在接收數據的I/O接口使接口使用數據總線用數據總線,其余的其余的I/O接口接口應處于隔離狀態應處于隔離狀態,

4、為此要求,為此要求I/O接口電路能為數據輸入提供三態緩沖功能。接口電路能為數據輸入提供三態緩沖功能。459.1.2 I/O端口的編址端口的編址介紹I/O端口編址端口編址之前,首先要弄清楚I/O接口接口和I/O端端口口的概念。I/O接口接口是單片機與外設間的連接電路的總稱。I/O端口端口(簡稱I/O口)是指I/O接口電路中具有單元地址的寄存器或緩沖器。一個I/O接口芯片可以有多個I/O端口,如數據口,命令口,狀態口數據口,命令口,狀態口。當然,并不是所有的外設都一定需要3種端口齊全的I/O接口。每個I/O接口中的端口接口中的端口都要有地址都要有地址,以便AT89C51通過讀寫端口來和外設交換信息

5、和外設交換信息。常用的I/O端口編址端口編址有兩種方式,獨立編址方式獨立編址方式與統一編址方式統一編址方式。561獨立編址獨立編址I/O端口地址空間和存儲器地址空間分開編址。優點是I/O地址空間和存儲器地址空間相互獨立,界限分明。但需要設置一套專門的讀寫I/O端口的指令和控制信號。2統一編址把I/O端口與數據存儲器單元同等對待。I/O端口和外部數據存儲器RAM統一編址統一編址。因此外部數據存儲器空間也包括I/O端口在內。優點優點是不需專門的I/O指令。缺點缺點是需要把數據存儲器是需要把數據存儲器單元地址與單元地址與I/O端口的地址劃分清楚端口的地址劃分清楚,避免數據沖突。679.1.3 I/O

6、數據的傳送方式數據的傳送方式為了實現和不同外設的速度匹配速度匹配,必須根據不同外設選擇恰當的I/O數據傳送方式數據傳送方式。I/O數據傳送方式有:同步傳送、異步傳送和中斷傳送。1同步傳送同步傳送同步傳送又稱無條件傳送。當外設速度和單片機的速度相比擬時,常采用同步傳送方式,典型的同步傳送是單片單片機和外部數據存儲器之間機和外部數據存儲器之間的數據傳送數據傳送。2查詢傳送查詢傳送又稱有條件傳送(也稱異步式傳送)。通過查詢外設“準備好”后,再進行數據傳送。優點是通用性好,硬件連線和查詢程序簡單,但工作效率不高。783中斷傳送中斷傳送為了提高提高單片機對外設的工作效率工作效率,通常采用中斷傳送方式,來

7、實現I/O數據的傳送。單片機只有在外設準備好只有在外設準備好后,才中斷主程序的執行后,才中斷主程序的執行,從而進入與外設數據傳送的中斷服務子程序,進行數據傳送。中斷服務完成后又返回主程序斷點處繼續執行。采用中斷方式可大大提高工作效率提高工作效率。9.1.4 I/O接口電路接口電路常用的外圍I/O接口芯片:(1)82C55:可編程通用并行接口(3個8位I/O口)。89(2)81C55:可編程的IO/RAM擴展接口電路(2個8位I/O口,1個6位I/O口,256RAM單元,1個14位的減法計數器)。都可以和AT89C51直接連接,接口邏輯簡單。9.2 AT89C51擴展擴展I/O接口芯片接口芯片8

8、2C55的設計的設計先介紹可編程并行I/O接口芯片82C55的應用特性應用特性,然后介紹AT89C51與82C55的接口電路接口電路以及軟件設計軟件設計。9.2.1 82C55芯片簡介芯片簡介Intel公司的可編程并行I/O接口芯片,3個個8位并行位并行I/O口,口,3種工作方式,種工作方式,單片機與多種外設連接時的中間接口電路。中間接口電路。引腳及內部結構如圖圖9-1和圖圖9-2所示所示。91010圖圖9-1 82C55的引腳圖的引腳圖 圖圖9-2 82C55的內部結構的內部結構111引腳說明引腳說明共40個引腳個引腳,引腳功能如下引腳功能如下:D7D0:三態雙向數據線,與單片機的P0口連接

9、,用來與單片機之間傳送數據信息。 :片選信號線,低有效,表示本芯片被選中。 :讀信號線,低有效,讀82C55端口數據的控制信號。 :寫信號線,低電平有效,用來向82C55寫入端口數據的控制信號。VCC:+5V電源。11CSRDWR12PA7PA0:端口A輸入/輸出線。PB7PB0:端口B輸入/輸出線。PC7PC0:端口C輸入/輸出線。A1、A0:地址線,用來選擇82C55內部的4個端口。RESET:復位引腳,高電平有效。2內部結構內部結構如圖圖9-2所示所示,3個并行數據輸入個并行數據輸入/輸出端口輸出端口,兩種工作兩種工作方式方式的控制電路,一個讀/寫控制邏輯電路和一個8位數據總線緩沖器。各

10、部件的功能如下:1213(1)端口)端口PA、PB、PC3個8位并行口PA、PB和PC,都可以選為輸入/輸出工作模式,功能和結構上有差異。PA口:口:一個8位數據輸出鎖存器和緩沖器輸出鎖存器和緩沖器;一個8位數據輸入鎖存輸入鎖存器。PB口:口:一個8位數據輸出鎖存器和緩沖器輸出鎖存器和緩沖器;一個8位數據輸入緩沖器輸入緩沖器。PC口:口:一個8位的輸出鎖存器輸出鎖存器;一個8位數據輸入緩沖輸入緩沖器器。通常PA口、口、PB口口作為輸入/輸出口,PC口口既可作為輸入/輸出口,也可在軟件控制下,分為兩個4位的端口,作為端口PA、PB選通方式操作時的狀態控制信號。1314(2)A組和組和B組控制電路

11、組控制電路是兩組根據AT89C51寫入的“命令字命令字”控制82C55工作方式的控制電路。A組組控制PA口和PC口的上半部上半部(PC7PC4);B組組控制PB口和PC口的下半部下半部(PC3PC0),并可用“命令字”來對端口PC的每一位實現按位置“1”或清“0”。(3)數據總線緩沖器)數據總線緩沖器數據總線緩沖器是一個三態雙向8位緩沖器,作為82C55與系統總線之間的接口,用來傳送用來傳送數據、指令、控制命令以及外部狀態信息。1415(4)讀)讀/寫控制邏輯電路寫控制邏輯電路接收接收AT89C51單片機發來單片機發來的控制信號控制信號 、 、RESET、地址信號地址信號A1、A0等,然后根據

12、控制信號的要求,端口數據被AT89C51單片機讀出,或者將AT89C51單片機送來的數據寫入端口。各端口工作狀態與控制信號的關系見表表9-1。15RDWR1616RDWRCS179.2.2 工作方式選擇控制字及端口工作方式選擇控制字及端口PC置位置位/復位控制字復位控制字可向向82C55控制寄存器寫入兩種控制寄存器寫入兩種不同的控制字不同的控制字。1工作方式選擇控制字工作方式選擇控制字82C55有3種種基本工作方式:(1)方式)方式0基本輸入/輸出;(2)方式)方式1選通輸入/輸出;(3)方式)方式2雙向傳送(僅PA口有此工作方式)。3種工作方式方式控制字來決定。格式格式如圖圖9-3所示所示。

13、最高位D7=1,為本方式控制字的標志標志,以便與另一控制字相區別(最高位D7 = 0)。171818圖圖9-3 82C55的方式控制字格式的方式控制字格式19PCPC口分兩部分口分兩部分,隨,隨PAPA口口稱為稱為A A組組,隨,隨PBPB口口稱為稱為B B組組。其中。其中PAPA口口可工作于方式可工作于方式0 0、1 1和和2 2,而,而PBPB口口只能工作在只能工作在方式方式0 0和和1 1。【例例9-19-1】AT89C51AT89C51向向82C5582C55的控制字寄存器寫入的控制字寄存器寫入工作工作方式控制字方式控制字95H95H,根據,根據圖圖9-39-3,將,將82C5582C

14、55編程設置為:編程設置為:PAPA口口方式方式0 0輸入,輸入,PBPB口方式口方式1 1輸出,輸出,PCPC口的上半部分(口的上半部分(PC7PC7PC4PC4)輸出,輸出,PCPC口的下半部分(口的下半部分(PC3PC3PC0PC0)輸入。)輸入。MOVMOVDPTRDPTR,# #H H;控制字寄存器端口地址;控制字寄存器端口地址;H H送送DPTR DPTR MOV MOV A A,#95H#95H; 方式控制字方式控制字83H83H送送A AMOVXMOVXDPTRDPTR,A A; 控制字控制字83H83H送控制字寄存器送控制字寄存器19202PC口按位置位口按位置位/復位控制字

15、復位控制字為另一控制字。即PC口中任何一位,可用一個寫入82C55控制口的置位置位/復位控制字復位控制字來對PC口按位置置“1”或清“0”。用于位控位控。格式如圖圖9-4所示所示。【例例9-2】 AT89C51向82C55的控制字寄存器寫入工作工作方式控制字方式控制字07H,則PC3置置1;08H寫入控制口,則PC4清清0。程序段如下:MOVDPTR,#H; 控制寄存器端口地址;H送DPTR MOV A,#07H; 方式控制字83H送A2021圖圖9-4 PC口按位置位口按位置位/復位控制字格式復位控制字格式22MOVXDPTR,A; 控制字83H送控制寄存器,把PC3置1MOVDPTR,#H

16、; 控制字寄存器端口地址送DPTR MOV A,#08H; 方式控制字08H送AMOVXDPTR,A; 08H送控制字寄存器,PC4清022239.2.3 82C55的的3種工作方式種工作方式1方式方式0是基本輸入基本輸入/輸出方式輸出方式。T89S51可對82C55進行I/O數據的無條件傳送無條件傳送。例如,例如,AT89C51單片機從82C55的某一輸入口讀入一組開關狀態,從82C55輸出控制一組指示燈的亮、滅。并并不需要任何條件,不需要任何條件,外設I/O數據可在82C55的各端口得到鎖存和緩沖。因此,方式方式0稱為基本輸入基本輸入/輸出方式輸出方式。方式0下,3個端口都可以由軟件設置為

17、輸入或輸出,不需要應答聯絡信號。方式0的基本功能基本功能如下:2324(1)具有兩個8位端口(PA、PB)和兩個4位端口(PC的上半部分和下半部分)。(2)任何端口都可以設定為輸入或輸出,各端口的輸入、輸出共有16種組合。PA口、口、PB口和口和PC口口均可設定為均可設定為方式方式0,并可根據需要,向控制寄存器寫入工作方式控制字,規定各端口為輸入或輸出方式。25【例例9-3】假設82C55的控制字寄存器控制字寄存器端口地址為端口地址為FF7FH,令PA口和口和PC口口的高高4位位為方式0輸出,PB口口和PC口口的低低4位位為方式0輸入,初始化程序:MOVDPTR,#0FF7FH; 端口地址#0

18、FF7F送DPTR MOV A,#83H; 方式控制字83H送AMOVXDPTR,A; 控制字83H送控制字寄存器25262 2方式方式1 1是一種采用應答聯絡應答聯絡的輸入的輸入/輸出工作方式輸出工作方式。PA口、PB口皆可設成這種工作方式。在方式1下,82C55的PA口和口和PB口口通常用于I/O數據的傳送,PC口口用作PA口和PB口的應答聯絡信號線應答聯絡信號線,以實現采用中斷方式來傳送I/O數據。PC口的PC7PC0的應答聯絡線是規定好的應答聯絡線是規定好的,其各位分配如如圖圖9-5和圖圖9-7所示,圖中,標有I/O的各位仍可用作基本輸入/輸出,不作應答聯絡用。下介紹方式1輸入/輸出時

19、的應答聯絡信號應答聯絡信號與工作原理工作原理。2627(1)方式)方式1輸入輸入方式1輸入應答聯絡信號如圖圖9-5所示所示。其中 與IBF為一對一對應答聯絡信號。各應答聯絡信號應答聯絡信號的功能功能如下。n :是由輸入外設輸入外設發給82C55的選通輸入信號選通輸入信號,低有效。nIBF:輸入緩沖器滿,應答信號。82C55通知外設已收到外設發來的且已進入輸入緩沖器的數據,高有效。nINTR:由82C55向AT89C51單片機發出的中斷請求信號,高有效。nINTEA:控制PA口是否允許中斷口是否允許中斷的控制信號,由PC4的置位/復位來控制。27STBSTB28nINTEB:控制PB口是否允許中

20、斷的控制信號,由PC2的置位/復位來控制。方式1輸入如圖圖9-6所示所示。下面以PA口的方式1輸入為例,介紹方式方式1輸入的工作過程。輸入的工作過程。 當外設向82C55輸入一個數據并送到PA7PA0時,外設自動在 上向82C55發送一個低電平選通信號。 82C55收到 后,先把PA7PA0輸入的數據存存入入PA口的輸入數據緩沖/鎖存器,然后使輸出應答線IBF變為高,通知輸入外設,PA口已收到它送來的數據。 82C55檢測到 由低電平變為高電平、IBFA(PC5)為“1”狀態和中斷允許INTEA(PC4)=1時,使28STBSTBSTB29INTRA(PC3)變為高電平)變為高電平,向單片機發

21、出中斷請求。INTEA的狀態可由用戶通過指令對PC4的單一置位/復位控制字來控制。 單片機響應中斷后,進入中斷服務子程序進入中斷服務子程序來讀取讀取PA口的外設發來的輸入數據口的外設發來的輸入數據。當輸入數據被單片機讀走后,82C55撤銷撤銷INTRA上的中斷請求上的中斷請求,并使IBFA變低低,通知輸通知輸入外設入外設可傳送下一個輸入數據。293030圖圖9-5 方式方式1輸入應答聯絡信號輸入應答聯絡信號3131圖圖9-6 PA口方式口方式1輸入工作過程示意圖輸入工作過程示意圖32(2)方式)方式1輸出輸出方式1輸出時,應答聯絡信號如圖圖9-7所示所示。 與與 構成一對一對應答聯絡信號應答聯

22、絡信號,應答聯絡信號功能如下。n :端口輸出緩沖器滿信號,低有效,它是82C55發給外設的聯絡信號,表示外設可以將數據取走。n :外設應答信號,低有效。表示外設已把82C55發出的數據取走。nINTR:中斷請求信號,高有效。表示該數據已被外設取走,向單片機單片機發出中斷請求,如果AT89C51響應該中斷,在中斷服務子程序中向82C55寫入要輸出的下一數據。32OBFACKOBFACK33nINTEA控制PA口是否允許中斷,由PC6控制。nINTEB控制PB口是否允許中斷,由PC2控制。方式1輸出工作示意如圖圖9-8所示所示。以PB口的方式口的方式1輸出輸出為例,介紹工作過程。 AT89C51可

23、以通過“MOVX Ri,A”指令把輸出數據送到B口的輸出數據鎖存器,82C55收到后便令輸出緩沖器滿引腳 (PC1)變低,以通知輸出設備輸出的數據已在PB口的PB7PB0上。 輸出外設收到 上低電平后,先從PB7PB0上取走輸出數據,然后使 B 變低電平,以通知82C55輸出外設已收到82C55輸出的數據。33OBFACKOBF3434圖圖9-7 方式方式1輸出應答聯絡信號輸出應答聯絡信號35 圖圖9-8 PB口方式口方式1輸出工作過程示意圖輸出工作過程示意圖3536 82C55從應答輸入線 B收到低電平后就對 B 和中斷允許控制位INTEB狀態進行檢測,若皆為高電平,則INTRB變為高電平變

24、為高電平而向單片機請求中斷。 AT89C51單片機響應響應INTRB上中斷請求后便可通過中斷服務程序把下一個輸出數據下一個輸出數據送到PB口的輸出數據鎖存器。重復上述過程,完成數據的輸出。3方式方式2只有PA口才有方式2。圖圖9-9為工作示意圖。方式方式2是是方方式式1輸入輸入和和輸出輸出組合組合。PA7PA0為雙向I/O總線。當作為輸入口使用,PA7PA0受STBA 和IBFA控制;當作輸出輸出端口端口使用,PA7PA0受 A、 A 控制。36ACKOBFACKOBF3737圖圖9-9 PA口在方式口在方式2下的工作示意圖下的工作示意圖38方式方式2特別適用于像鍵盤、顯示器一類的外部設備特別

25、適用于像鍵盤、顯示器一類的外部設備,因為有時需要把鍵盤上輸入的編碼信號通過PA口送給單片機,有時又需把單片機發出的數據通過PA口送給顯示器顯示。9.2.4 AT89C51單片機與單片機與82C55的接口設計的接口設計1硬件接口電路硬件接口電路如圖9-10為AT89C51擴展一片82C55的電路。P0.1、P0.0經經74LS373與與82C55的的A1、A0連接連接;P0.7經74LS373與片選端 相連,其它地址線懸空;82C55的控制線 、 直接與單片機 和和 端相連;單片機數據總線P0.0P0.7與82C55數據線D0D7連接。38CSRDWRRDWR392確定確定82C55端口地址端口

26、地址圖圖9-10中中82C55只有只有3條線與條線與AT89C51地址線相接,片地址線相接,片選端選端 、端口地址選擇端、端口地址選擇端A1、A0,分別接于,分別接于P0.7、P0.1和和P0.0,其他地址線全懸空。顯然只要保證,其他地址線全懸空。顯然只要保證P0.7為低為低電平時,電平時,即可選中即可選中82C55;若;若P0.1、P0.0再為再為“00”,則,則選中選中82C55的的PA口。同理口。同理P0.1、P0.0為為“01”、“10”、“11”分別選中分別選中PB口、口、PC口及控制口。口及控制口。若端口地址用若端口地址用16位表示,其他無用端全設為位表示,其他無用端全設為“1”(

27、也(也可把無用端全設為可把無用端全設為“0”),則),則82C55的的A、B、C及控制及控制口口地址地址分別為分別為FF7CH、FF7DH、FF7EH、FF7FH。39CS4040圖圖9-10 AT89C51單片機擴展一片單片機擴展一片82C55的接口電路的接口電路41如果沒有用到的位取“0”,則4個端口地址分別為個端口地址分別為0000H、0001H、0002H、0003H,只要保證 、A1、A0的狀態,無用位設為“0”或“1”均可。3軟件編程軟件編程在實際設計中,須根據外設的類型選擇82C55的操作方式,并在初始化程序中把相應控制字寫入控制口在初始化程序中把相應控制字寫入控制口。下面根據圖

28、圖9-10,介紹對82C55進行操作的編程。【例例9-4】要求82C55工作在方式0,且PA口作為輸入,PB口、PC口作為輸出,程序如下:MOVA,#90H ;控制字送A MOVDPTR,#0FF7FH;控制寄存器地址FF7FHDPTR4142MOVXDPTR,A;方式控制字控制寄存器MOVDPTR,#0FF7CH;PA口地址FF7CHDPTRMOVXA,DPTR;從PA口讀入數據AMOVDPTR,#0FF7DH;PB口地址FF7DHDPTRMOVA,#data1;要輸出的數據#data1AMOVXDPTR,A;將#data1送PB口輸出MOVDPTR,#0FF7EH;PC口地址DPTRMOV

29、A,# data 2;數據#data 2AMOVXDPTR,A;將數據#data 2送PC口輸出4243【例例9-5】對端口PC的置位/復位。1PC口1中的任1一位,均可用指令來置位或復位。例如,如果想把PC口的PC5置“1”,相應的控制字為00001011B = 0BH(關于82C55的PC口置位/復位的控制字說明見圖9-4)。程序如下:MOVR1,7FH;控制口地址;控制口地址7FHR1MOV A,0BH ;控制字;控制字0BHAMOVX R1, A ;控制字;控制字7FH控制口,把控制口,把PC5置置14344如果想把PC口的PC5復位復位,相應的控制字0AH,程序如下:MOV R1,7

30、FH;控制口地址;控制口地址7FH R1MOV A,0AH;控制字;控制字0AHAMOVX R1,A;控制字;控制字7FH控制口,控制口, PC5清清082C55接口芯片在AT89C51單片機應用系統中廣泛用于與各種外部數字設備的連接,如打印機、鍵盤、顯示器以及作為數字信息的輸入、輸出接口。44459.4 利用利用74LSTTL電路擴展并行電路擴展并行I/O口口在單片機應用中,有些場合有些場合需要降低成本、縮小體積,這時采用TTL電路、CMOS電路鎖存器或三態門電路也可構成各種類型的簡單輸入/輸出口。如圖圖9-20所示為一個利用用74LS244和和74LS273芯片芯片,將將P0口擴展成簡單的

31、輸入口擴展成簡單的輸入/輸出口的電路輸出口的電路。74LS244和74LS273的工作受AT89C51的P2.0、 、 3條條控制線控制。74LS244作為擴展輸入口,8個輸個輸入端入端分別接8個按鈕開關。74LS273是8D鎖存器擴展輸出擴展輸出口口,接8個個LED發光二極管發光二極管,以顯示以顯示8個按鈕個按鈕開關狀態。開關狀態。45RDWR46圖圖9-20 74LSTTL I/O擴展舉例擴展舉例47當某條輸入口線的按鈕開關按下時,該輸入口線為低電為低電平平,讀入單片機后,其相應位為“0”,然后再將口線的狀態經74LS273輸出,某位低電平時二極管發光,從而顯示出按下的按鈕開關的位置。該電

32、路的工作原理電路的工作原理如下。當P2.0=0, =0( =1)時,選中74LS244芯片,此時若無按鈕開關按下,輸入全為高電平。當某開關按下時則對應位輸入為“0”,74LS244的輸入端不全為“1”,其輸入狀態通過P0口數據線被讀入AT89C51片內。47RDWR48當P2.0 = 0, =1 ( = 0)時,選中74LS273芯片,CPU通過P0口輸出數據鎖存到74LS273,74LS273的輸出端低電平位對應的LED發光二極管點亮。總之,在圖9-20中只要保證P2.0為“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(無效位全為“1”),或用0000H(無效位全為“0”)都可。

33、48RDWR49輸入程序段:輸入程序段:MOV DPTR,#0FEFFH;I/O地址地址DPTRMOVX A,DPTR ; 為低,為低,74LS244數據被讀入數據被讀入A中中輸出程序段:輸出程序段:MOV A,#data;數據;數據#dataAMOV DPTR,#0FEFFH;I/O地址地址#0FEFFHDPTRMOVXDPTR,A; 為低,數據經為低,數據經74LS273口輸出口輸出49RDWR50【例例9-9】編寫程序把按鈕開關狀態通過圖9-20的發光二極管顯示出來。程序如下:DDIS:MOV DPTR,#0FEFFH ;輸入口地址;輸入口地址DPTRLP:MOVX A,DPTR;按鈕開

34、關狀態讀入;按鈕開關狀態讀入A中中 MOVX DPTR,A;A中數據送顯示輸出口中數據送顯示輸出口 SJMP LP ;反復連續執行;反復連續執行由程序可看出,對于擴展接口的輸入/輸出就像從外部RAM讀/寫數據一樣方便。圖圖9-20僅僅擴展了兩片,如果僅僅擴展了兩片,如果仍不夠用,還可擴展多片仍不夠用,還可擴展多片74LS244、74LS273之類的芯片之類的芯片。但作為輸入輸入口時,一定要求有三態功能要求有三態功能,否則將影響總線的正常工作。50519.5 用用AT89C51單片機的串行口擴展并行口單片機的串行口擴展并行口串口的方式方式0用于用于I/O擴展擴展。方式0為同步移位寄存器同步移位寄

35、存器工作方式,波特率為fosc/12。數據由數據由RXD端(端(P3.0)輸入)輸入,同步移位時鐘由TXD端(端(P3.1)輸出。9.5.1 用用74LS165擴展并行輸入口擴展并行輸入口圖9-21串口擴展兩個擴展兩個8位并行輸入口。位并行輸入口。74LS165是8位并行輸入串行輸出的寄存器。當74LS165的S/ 端由高到低跳變,并行輸入端的數據被置入寄存器;當S/ = 1,且時鐘禁止端(15腳)為低時,允許TXD(P3.1)移位時鐘輸入,在該脈沖作用下,數據由右向左方向移動。51LL52TXD與所有74LS165的的CP相連相連;RXD與74LS165的串串行輸出端行輸出端QH相連;P1.

36、0與 S/ 相連,控制74LS165的串行移位或并行輸入;15腳接地,允許時鐘輸入。當擴展多個8位輸入口時,相鄰兩芯片的首尾(QH與SIN)相連。 圖圖9-21 利用74LS165擴展并行輸入口52L53【例例9-10】從16位擴展口讀入5組數據(每組2B),把它們轉存到內部RAM 20H開始的單元。 MOVR7,#05H;設置讀入組數;設置讀入組數 MOV R0,#20H;設置內部;設置內部RAM數據區首址數據區首址START:CLR P1.0;并行置入數據,;并行置入數據,S/ =0 SETB P1.0;允許串行移位,;允許串行移位,S/ =1 MOV R2,#02H;設每組字節數,;設每

37、組字節數, 即即74LS165的個數的個數RXDATA:MOV SCON,#00010000H;設置串口方式;設置串口方式0,允許,允許;接收,啟動接收過程;接收,啟動接收過程5354WAIT:JNB RI,WAIT;未接收完一幀,循環等待;未接收完一幀,循環等待 CLR RI;RI標志清標志清“0”,準備下次接,準備下次接收收 MOV A,SBUF;讀入數據;讀入數據 MOV R0,A;送至;送至RAM緩沖區緩沖區 INC R0;指向下一個地址;指向下一個地址 DJNZ R2,RXDATA;未讀完一組數據,;未讀完一組數據, 繼續繼續 DJNZ R7,START;5組數據未讀完重新并行置入組

38、數據未讀完重新并行置入 ;對數據進行處理;對數據進行處理5455串行接收過程采用查詢等待查詢等待的方式,如必要,可改中斷中斷方式方式。9.5.2 用用74LS164擴展并行輸出口擴展并行輸出口圖圖9-22為串口外接兩片兩片74LS164(8位串入并出移位寄存器)擴展兩個8位并行輸出口的接口電路。 圖圖9-22 利用74LS164擴展并行輸出口5556當串口工作在方式0的發送,串行數據由串行數據由P3.0(RXD)送出,移位時鐘由送出,移位時鐘由P3.1(TXD)送出)送出。注意,由于74LS164無并行輸出控制端無并行輸出控制端,在串行輸入中,其輸出端的輸出端的狀態會不斷變化狀態會不斷變化,故

39、某些場合,在74LS164輸出端應加接輸出三態門控制,以便保證串行輸入結束后再輸出數據。【例例9-11】將內部RAM單元30H、31H的內容經串行口由74LS164并行輸出的子程序。START:MOVR7,#02H;設置要發送的字節個數;設置要發送的字節個數 MOV R0,#30H;設置地址指針;設置地址指針 MOV SCON,#00H;設置串行口為方式;設置串行口為方式05657SEND: MOV A,R0 MOV SBUF,A;啟動串行口發送過程;啟動串行口發送過程WAIT:JNB TI,WAIT;一幀未發完,等待;一幀未發完,等待 CLR TI INC R0;取下一個數;取下一個數 DJNZ

溫馨提示

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

評論

0/150

提交評論