片機IO(輸入輸出)口.ppt
1,第10講I/O口的擴展,電氣工程系趙志衡E-mail:zhzhhe,2,I/O擴展主要內(nèi)容,可編程I/O芯片8255A的擴展可編程I/O芯片8155H的擴展計數(shù)器芯片8253的擴展利用串口對并行口的擴展采用通用TTL芯片的擴展電路,3,本講主要內(nèi)容,I/O擴展概述8255A的工作原理及其擴展采用通用TTL芯片的I/O擴展編程舉例,4,I/O(輸入/輸出)接口是MCS-51與外設(shè)交換數(shù)字信息的橋梁。,I/O擴展也屬于系統(tǒng)擴展的一部分。,真正用作I/O口線的只有P1口的8位I/O線和P3口的某些位線。,在多數(shù)應(yīng)用系統(tǒng)中,MCS-51單片機都需要外擴I/O接口電路。,I/O擴展概述,5,I/O接口電路可實現(xiàn)以下功能:,1.實現(xiàn)和不同外設(shè)的速度匹配,大多數(shù)的外設(shè)的速度很慢,無法和s量級的單片機速度相比。,單片機只有在確認外設(shè)已為數(shù)據(jù)傳送做好準備的前提下才能進行I/O操作。,想知道外設(shè)是否準備好,需I/O接口電路與外設(shè)之間傳送狀態(tài)信息。,I/O接口的功能,6,2.輸出數(shù)據(jù)鎖存,由于單片機工作速度快,數(shù)據(jù)在數(shù)據(jù)總線上保留的時間十分短暫,無法滿足慢速外設(shè)的數(shù)據(jù)接收。I/O電路應(yīng)具有數(shù)據(jù)鎖存器,以保證接收設(shè)備可靠接收。,3.輸入數(shù)據(jù)三態(tài)緩沖,單片機具有多個輸入設(shè)備時,使得數(shù)據(jù)總線上可“掛”有多個數(shù)據(jù)源,為不發(fā)生沖突,只允許當前正在進行數(shù)據(jù)傳送的數(shù)據(jù)源使用數(shù)據(jù)總線,其余的應(yīng)處于隔離狀態(tài)。,7,I/O端口的編址,首先清楚I/O接口(Interface)和I/O端口(Port)的概念。,I/O端口:簡稱I/O口,指具有端口地址的寄存器或緩沖器。,I/O接口:是指單片機與外設(shè)間的I/O接口芯片。,一個I/O接口芯片可以有多個I/O端口,(1)數(shù)據(jù)口(2)命令口(3)狀態(tài)口,I/O端口編址是給所有I/O接口中的寄存器分配地址。,8,I/O端口編址兩種方式:獨立編址與統(tǒng)一編址,1獨立編址方式,I/O寄存器地址空間和存儲器地址空間分開編址,但需專門讀寫I/O的指令和控制信號。,2統(tǒng)一編址方式,I/O寄存器與數(shù)據(jù)存儲器單元同等對待,統(tǒng)一編址。不需要專門的I/O指令,直接使用訪問數(shù)據(jù)存儲器的指令進行I/O操作,簡單、方便且功能強(MOVX)。,MCS51采用這種方式,9,MCS-51使用統(tǒng)一編址的方式,每一接口芯片中的一個功能寄存器(端口)的地址就相當于一個RAM單元。,I/O數(shù)據(jù)的幾種傳送方式,為實現(xiàn)和不同的外設(shè)的速度匹配,I/O接口必須根據(jù)不同外設(shè)選擇恰當?shù)腎/O數(shù)據(jù)傳送方式。,I/O數(shù)據(jù)傳送的幾種傳送方式是:,(1)同步傳送(2)查詢傳送(3)中斷傳送。,10,1.同步傳送方式(無條件傳送),當外設(shè)速度和單片機的速度相比擬時,常采用同步傳送方式,最典型的同步傳送就是單片機和外部數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送。,2.查詢傳送方式(條件傳送,異步式傳送),查詢外設(shè)“準備好”后,再進行數(shù)據(jù)傳送。,優(yōu)點:通用性好,硬件連線和查詢程序十分簡單,,缺點:效率不高。,為提高效率,通常采用中斷傳送方式。,11,3.中斷傳送方式.,外設(shè)準備好后,發(fā)中斷請求,單片機進入與外設(shè)數(shù)據(jù)傳送的中斷服務(wù)程序,進行數(shù)據(jù)的傳送。中斷服務(wù)完成后又返回主程序繼續(xù)執(zhí)行。工作效率高。,常用的I/O接口電路芯片,Intel公司的配套可編程I/O接口芯片的種類齊全,為擴展I/O接口提供了很大的方便?;蛘卟捎猛ㄓ玫腡TL集成電路芯片。,12,小結(jié),原因:MCS-51單片機本身提供的口線不多(P1、P3)方法:MCS-51單片機將外擴I/O和外部數(shù)據(jù)存儲器統(tǒng)一編址,用戶可以把一部分外部數(shù)據(jù)存儲器的空間(64k)作為I/O地址,通過MOVX指令完成對外擴口的輸入輸出。實現(xiàn):采用專門的外圍接口芯片8155,8255等采用一般的TTL芯片74LS377,74LS373等,13,可編程并行I/O芯片8255A,引腳及結(jié)構(gòu)介紹3個8位并行口PA、PB、PC。PC可分為高4位與低4位D0D7數(shù)據(jù)端口A,B兩組控制電路,雙向三態(tài)數(shù)據(jù)接口控制總線接口復(fù)位控制RESET,高電平有效,14,8255A的端口,8255端口選擇,8255A端口選擇表,15,8255A功能簡述,8255A的三種工作方式方式0基本輸入輸出方式1選通輸入輸出方式2雙向傳送(僅PA口)8255A的工作方式由控制字選擇,16,8255A控制字,工作方式選擇控制字,C口按位置位/復(fù)位控制字,8255A控制字,端口C按位置位/復(fù)位控制字,17,8255A工作方式0(基本I/O方式),兩個8位端口和兩個4位端口任一個端口都可以輸入輸出輸出鎖存而輸入不鎖存數(shù)據(jù)無條件傳送,不需要狀態(tài)端口,18,8255A工作方式1(選通I/O方式),可用作1或2個選通的輸入或輸出口每個端口包括8位數(shù)據(jù)口和3條固定的控制線可選擇1個端口工作于方式1,余下的工作在方式0可選擇2個端口都工作于方式1,19,工作于方式1下的端口,選通輸入/輸出工作方式。A口和B口通常用于I/O數(shù)據(jù)傳送,C口用作A口和B口的聯(lián)絡(luò)線,以中斷或查詢的方式傳送數(shù)據(jù)。,20,8255A接口應(yīng)用舉例1,8255A與8031接口電路,21,8255A的接口應(yīng)用舉例1,端口地址確定,8255A各端口寄存器的地址為:,A口:FF7CHB口:FF7DHC口:FF7EH控制寄存器:FF7FH,確定地址的原則:未使用到的片選地址線置1,22,軟件編程,要求8255A工作在方式0,且A口作為輸入,B口、C口作為輸出,程序如下:,MOVA,#90H;A口方式0輸入,B口、;C口輸出的控制字送AMOVDPTR,#0FF7FH;控制寄存器地址DPTRMOVXDPTR,A;方式控制字控制寄存器,MOVDPTR,#0FF7CH;A口地址DPTRMOVXA,DPTR;從A口讀數(shù)據(jù)MOVDPTR,#0FF7DH;B口地址DPTR,MOVA,#55H;要輸出的數(shù)據(jù)55HAMOVXDPTR,A;將55H送B口輸出MOVDPTR,#0FF7EH;C口地址DPTRMOVA,#60H;60HAMOVXDPTR,A;將60H送C口輸出,23,8255A接口應(yīng)用舉例2,當口A、B工作于非方式0時,要使用到一些C口線,對于這些已被占用的C口不要進行置位、清零操作。,對端口C的置位/復(fù)位。先將C口的PC5置“1”,然后將其置“0”MOVDPTR,#0FF7FH;8255A芯片控制口地址MOVA,#0BH;方式控制字送入AMOVXDPTR,A;方式控制字送入8255APC5=1MOVA,#0AH;方式控制字送入AMOVXDPTR,A;方式控制字送入8255A,PC5=0,端口C按位置位/復(fù)位控制字,24,關(guān)于8255A的使用,一般讓8255A工作于方式0,此時MCS-51相當于多了3個I/O口,其中一個(C口)既可以按字節(jié)操作,又可以按位操作。在使用方式1、方式2時,一定要注意對C口控制時序的理解,而且一定要接支持這種時序的外設(shè),例如打印機等。通常8255A可以由方式1、方式2實現(xiàn)的控制,也可以由方式0實現(xiàn)。,25,采用通用TTL芯片的I/O口擴展,在許多情況下,有些開關(guān)量或并行數(shù)據(jù)需直接輸出或輸入。可采用8D鎖存器和三態(tài)驅(qū)動門等進行擴展。(74LS377、74LS273、74LS244等),26,74LS377作為輸出口,功能說明:74LS377是8D鎖存器,20個管腳,8個輸入(D0D7)、8個輸出(Q0Q7)、一個片選E、一個鎖存端時鐘(CLK)上升沿有效,另外,還有電源、地。,27,74LS377擴展為輸出口,74LS377作為輸出口,試確定其地址,E接P2.7;CLK接WR,377的輸入端接8031的數(shù)據(jù)口,輸出端接8個發(fā)光二極管。地址:7FFFHMovdptr,#7fffhMova,#00hMovxdptr,a,28,74LS273作為輸出口,功能說明:74LS273是8D鎖存器,20個管腳,8個輸入(D0D7)、8個輸出(Q0Q7)、一個清零端(CLR)、一個鎖存端(CLK)上升沿有效,另外,還有電源、地。,29,74LS273作為輸出口,地址:8000HMovdptr,#8000hMova,#00hMovxdptr,a,30,74LS244作為輸入口,功能說明:74LS244是8個三態(tài)線驅(qū)動器,20個管腳,2個4輸入端(1A11A4)、(2A12A4);2個4輸出端(1Y11Y4)、(2Y12Y4),兩個控制端1G、2G(低電平有效,否則三態(tài)輸出),另外,還有電源、地。,31,74LS244作為輸入口,74LS244作為輸入口,試確定其地址,1G、2G均接P2.6、RD的或門輸出端;244的輸出端接8031的數(shù)據(jù)口,輸入端接8個按鍵。地址:BFFFHmovdptr,#0bfffhmovxa,dptr,D0D1D2D7,J0J1J2J7,32,提示:,使用TTL芯片擴展8051單片機的I/O口,實際使用中應(yīng)用很多,要注意加深理解。選擇芯片時,用為輸入的,TTL芯片必須具有三態(tài)輸出。用為輸出的,一般選用具有鎖存功能的TTL芯片,但有時也選用具有三態(tài)輸出的芯片,要看具體電路的功能。,33,END,