




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
微機原理及其應用普通高等教育“十一五”國家級規劃教材作者丁新民2007年5月第六章微機接口及其應用學習目標1、識記微機輸入輸出接口概念,以及ISA、EISA、VESA、PCI、USB等總線定義。2、識記串行通訊基本概念,8251A可編程串行通訊接口芯片的結構和工作原理。3、理解8251A可編程串行通訊接口編程及其應用。4、識記8255A可編程并行外圍接口芯片的結構和工作原理。5、理解8255A可編程并行外圍接口編程及其應用。6、識記8253可編程計數器/定時器的結構和工作原理及其應用。第六章微機接口及其應用6.1微機I/O接口和總線6.2串行通信和可編程接口8251A6.3并行接口芯片8255A及其應用6.48253可編程計數器/定時器及其應用一、微機I/O接口和總線1.I/O接口2.微機I/O口地址與尋址方式3.總線接口介紹第一節I/O接口1.I/O接口(1)I/O接口概述
I/O接口電路是用于主機和I/O設備之間傳送信息的交換部件,因此也可稱為界面,如圖6-1-1所示。從微機系統角度看到的I/O接口界面,實際是微機底板提供的總線插槽。它根據不同外設的控制要求,選擇相應的I/O控制板(卡)與它連接。1.I/O接口(2)I/O接口的要求
對I/O接口的功能要求如下:①交換主機與I/O設備的狀態信息②匹配主機與I/O設備的傳輸速度差異③實現主機與I/O設備之間的數據傳送④實現數據格式的轉換第二節微機I/O口地址與尋址方式2.微機I/O口地址與尋址方式微機對I/O設備提供獨立編址方式,80X86指令系統中有專用的I/O指令。指令用通用寄存器AL、AX或EAX作為傳輸數據的寄存器,用DX寄存器作為I/O地址,用兩個字節表示的I/O地址,又稱I/O口地址。如圖6-1-2所示為PC系統板I/O口地址以及擴展插槽接口卡口的地址分配。2.微機I/O口地址與尋址方式(1)I/O獨立編址在80X86微機中,普遍采取I/O獨立編址技術。獨立編址的I/O設備地址,就是外部設備在微機系統中的端口地址。
(2)存儲器映象I/O
存儲器映像I/O方式是將一個I/O端口看作為一個存儲單元,訪問存儲器的所有指令均可用來訪問I/O端口。2.微機I/O口地址與尋址方式(3)CPU與外設間的數據傳輸方式
CPU與外設之間的數據傳輸方式有三種:①程序控制方式②中斷方式③直接存儲器存取(DMA)方式表6-1-1展示了三種數據傳送方式的比較情況。表6-1-1三種數據傳送方式特點傳送方式系統運行效率傳輸速率CPU與外設的工作接口電路成本程序控制方式低一般串行簡單低中斷方式高低并行復雜高DMA方式高高并行復雜高第三節總線接口介紹3.總線接口介紹(1)PC/XT總線
PC/XT總線是早期微機使用的總線之一。該總線有62條引腳信號,在每個插槽上也相應有62個引腳。總線信號均與TTL邏輯電平兼容。表6-1-2PC/XT總線引腳IOCHCKIOCHRDYMEMWMEMRIOWIOR引腳信號名稱引腳信號名稱引腳信號名稱引腳信號名稱B1GNDA1B17DACK1A17A14B2RESETDRVA2D7B18DRQ1A18A13B3+5VA3D6B19DACK0A19A12B4IRQ2A4D5B20CLKA20A11B5-5VA5D4B21IRQ7A21A10B6DRQ2A6D3B22IRQ6A22A9B7-12VA7D2B23IRQ5A23A8B8CardSelectA8D1B24IRQ4A24A7B9+12VA9D0B25IRQ3A25A6B10GNDA10B26DACK2A26A5B11A11AENB27T/CA27A4B12A12A19B28ALEA28A3B13A13A18B29+5VA29A2B14A14A17B30OSCA30A1B15DACK3A15A16B31GNDA31A0B16DRQ3A16A15
表6-1-2PC/XT總線引腳IOCHCKIOCHRDYMEMWMEMRIOWIOR引腳信號名稱引腳信號名稱引腳信號名稱引腳信號名稱B1GNDA1B17DACK1A17A14B2RESETDRVA2D7B18DRQ1A18A13B3+5VA3D6B19DACK0A19A12B4IRQ2A4D5B20CLKA20A11B5-5VA5D4B21IRQ7A21A10B6DRQ2A6D3B22IRQ6A22A9B7-12VA7D2B23IRQ5A23A8B8CardSelectA8D1B24IRQ4A24A7B9+12VA9D0B25IRQ3A25A6B10GNDA10B26DACK2A26A5B11A11AENB27T/CA27A4B12A12A19B28ALEA28A3B13A13A18B29+5VA29A2B14A14A17B30OSCA30A1B15DACK3A15A16B31GNDA31A0B16DRQ3A16A15
表6-1-2PC/XT總線引腳IOCHCKIOCHRDYMEMWMEMRIOWIOR引腳信號名稱引腳信號名稱引腳信號名稱引腳信號名稱B1GNDA1B17DACK1A17A14B2RESETDRVA2D7B18DRQ1A18A13B3+5VA3D6B19DACK0A19A12B4IRQ2A4D5B20CLKA20A11B5-5VA5D4B21IRQ7A21A10B6DRQ2A6D3B22IRQ6A22A9B7-12VA7D2B23IRQ5A23A8B8CardSelectA8D1B24IRQ4A24A7B9+12VA9D0B25IRQ3A25A6B10GNDA10B26DACK2A26A5B11A11AENB27T/CA27A4B12A12A19B28ALEA28A3B13A13A18B29+5VA29A2B14A14A17B30OSCA30A1B15DACK3A15A16B31GNDA31A0B16DRQ3A16A15
3.總線接口介紹(2)ISA總線
ISA總線或者稱工業標準結構總線,是一個16位的標準總線。它與PC/XT總線完全兼容,區別是在PC/XT總線的基礎上,再擴展36根信號線,如表6-1-3所示。3.總線接口介紹(3)EISA總線
EISA總線是一個擴展的ISA總線的32位標準。但是最大速度仍然是8.33MHz。在32位微機系統,在80486系統就顯得慢了。(4)VESA局部總線針對EISA總線的特點,視頻電子標準協會推出的一個全開放通用的局部總線標準VL-BUS。最大數據傳輸率為132MB/s。
總線插槽比其他總線的插槽長,前半部分是IBMMCA插槽標準,可用于8位、16位和32位接口板;后半部分為ISA插槽標準。3.總線接口介紹(4)VESA局部總線
VL總線引腳定義如表6-1-4所示。3.總線接口介紹(5)PCI局部總線
PCI局部總線被稱為外部設備連接總線,是目前微機系統常用的總線,它有32位和64位兩個標準。64位的數據傳輸率達到276MB/s。
結構上僅保留MCA總線設計方式,而取消ISA總線插槽。PCI總線以其64位處理能力和設備即插即用的特性,取得了在最新微機系統中的應用地位。PCI接口包含一個256字節的配置存儲器,允許CPU訪問PCI接口,這是專為系統能自動識別PCI插板配置的。3.總線接口介紹(5)PCI局部總線3.總線接口介紹(6)通用串行總線USB
通用串行總線USB是一種用于將適用USB的外圍設備連接到主機的外部總線結構,主要用在中速和低速的外圍設備。同時,它又是一種通信協議,支持主機和USB外圍設備之間的數據傳輸。
USB系統是一個星形拓撲結構,如圖6-1-4所示由主機,集線器和USB設備三個基本部分組成。二、串行通信和可編程接口8251A1.串行通信的基本概念2.可編程串行接口8251A第一節串行通信的基本概念1.串行通信的基本概念(1)串行數據傳送方式串行數據傳送時,數據在兩個設備之間傳送,按傳送方向可分成單工、半雙工和全雙工三種形式,如圖6-2-1所示。1.串行通信的基本概念(1)串行數據傳送方式①單工數據只能按一個固定的方向傳送,且是非交互式的,如圖6-2-1(a)所示。②半雙工數據可以在兩個設備之間作單向傳輸,不能同時收發,如圖6-2-1(b)所示。③全雙工允許通信雙方同時進行發送和接收,如圖6-2-1(c)所示。1.串行通信的基本概念(2)串行傳送的兩種基本工作方式①異步串行通信通信的雙方進行異步串行通信必須遵守異步通信控制規程。該規程也稱異步通信協議,其特點是通信雙方以一個字符作為數據傳輸單位,且發送方傳送字符的間隔是可變的、隨機的。異步傳輸格式,如圖6-2-2所示。1.串行通信的基本概念(2)串行傳送的兩種基本工作方式①異步串行通信一個字符單位除表示字符信息的數據位(5~8位可選)外,還有幾個附加位:起始位(1位,恒為“0”),校驗位(1位,可選),停止位(1、1.5或2位,可選,恒為“1”)。傳送一個字符,必須以起始位開始,以停止位結束。這個過程稱為一幀數據,兩個幀數據之間可有空閑位。1.串行通信的基本概念(2)串行傳送的兩種基本工作方式②同步串行通信同步串行通信有別于異步串行通信的一個特點是,允許連續發送一個序列字符,而每個字符的數據位數都相同,且不需要起始位和停止位。同步傳輸格式,如圖6-2-3所示。1.串行通信的基本概念(3)串行傳輸速率在串行通信中,常用波特率來表示數據傳輸的速率。所謂波特率是指單位時間內傳送二進制數據的位數,以b/s為單位,所以有時也叫數據位率。例如一個串行字符由1個起始位、7個數據位、1個奇偶校驗位和1個停止位10個數位構成。若每秒鐘傳送120個字符,則數據傳送的波特率為:(10b/字符)×(120字符/s)=1200b/s。傳送每位信息所占用的時間為:1b/1200b/s=0.833ms。1.串行通信的基本概念(4)發送時鐘和接收時鐘串行通信中,數據以二進制形式傳送。為了使發送和接收的數據保持一致,要求每一位數的持續時間必須是固定的,因此在發送端和接收端都必須用一個時鐘來定時,它們被稱為發送時鐘和接收時鐘。異步和同步通信對時鐘的要求不一樣。異步通信的信息長度只有10~11位,接收時僅要求起始位保持同步。同步通信的信息長度較長,要求精確同步。1.串行通信的基本概念(5)信號的調制與解調計算機網絡、遠程交換等場合,一般都通過電話線來進行信息傳輸。由于電話線頻帶較窄,用于數字傳輸會影響數字的正確性。為此,在發送數據時,先把數字信號轉換成音頻信號后,再利用電話線進行傳輸,接收數據時再將音頻信號恢復成數字信號。前一種轉換稱為調制,后一種轉換稱為解調。完成調制和解調功能的設備稱為MODEM。1.串行通信的基本概念(6)串行通信接口RS-232C標準
RS-232C標準是美國電子工業協會EIA在1969年制定的,現已發展成國際通用的串行通信接口標準。微機系統中的串行接口,也用此來作為連接外部設備、調制解調器、計算機終端或另一臺計算機等的標準。EIA-RS232C標準具體規定如下:①信號電平
EIA規定的傳輸電氣規格,如表6-2-1所示。表6-2-1EIA規定的傳輸電氣特性狀態邏輯高電平邏輯低電平電壓范圍3~25V-3~-25V邏輯表示011.串行通信的基本概念(6)串行通信接口RS-232C標準
②接插件規格
RS-232C串行接口規定使用25芯的D型插頭、插座進行連接。
③微機中常用信號如表6-2-2。圖6-2-5零調制解調器連接方式示意
計算機A計算機B符號表示引腳號引腳號符號表示TxD22TxDRxD33RxDRTS44RTSCTS55CTSDSR66DSRGND77GNDDCD88DCDDTR2020DTRRI2222RITxD22TxDRxD33RxDGND77GND圖6-2-4最簡單連接方式示意
計算機A計算機B符號表示引腳號引腳號符號表示1.串行通信的基本概念(6)串行通信接口RS-232C標準
④常見的連接方式●最簡單連接
●零調制解調器連接●用MODEM的控制和狀態信號作為微機之間的握手信號圖6-2-6用MODEM的控制和狀態信號作為握手信號
計算機A計算機B符號表示引腳號引腳號符號表示TxD22TxDRxD33RxDRTS44RTSCTS55CTSDSR66DSRGND77GNDDCD88DCDDTR2020DTRRI2222RI
計算機A計算機B符號表示引腳號引腳號符號表示TxD22TxDRxD33RxDRTS44RTSCTS55CTSDSR66DSRGND77GNDDCD88DCDDTR2020DTRRI
2222RI第二節可編程串行接口8251A2.可編程串行接口8251A(1)8251A的結構8251A的結構如圖6-2-7所示,可分成五個主要部分:數據總線緩沖器、接收器、發送器、調制解調控制電路及讀/寫控制邏輯電路。圖6-2-78251A的結構圖內部數據總線接收控制電路RxRDYRxCSYNDET發送緩沖器TxD發送控制電路TxRDYTxETxC接收緩沖器RxD數據總線緩沖器D7-D0RESETCLKC/DRDWR讀/寫控制電路CS調制解調控制電路DSRDTRCTSRTS2.可編程串行接口8251A(1)8251A的結構①數據總線緩沖器數據總線緩沖器是8251A與系統總線之間的接口,內部包含三個具有三態、雙向功能的8位緩沖器,即狀態緩沖器、接收數據緩沖器和發送數據/命令緩沖器。②接收器接收器有關的信號有:接收數據RxD,接收數據準備好RxRDY,同步檢測/斷點檢測SYNDET/BRKDET,接收時鐘RxC。2.可編程串行接口8251A(1)8251A的結構③發送器發送器有關的信號有:發送數據TxD,發送器準備好TxRDY,發送器空TxE,發送器時鐘TxC。
④調制解調控制電路調制解調控制有關的信號有:數據終端準備就緒DTR,數據裝置準備好DSR,請求發送信號RTS,清除發送信號CTS。2.可編程串行接口8251A(1)8251A的結構⑤讀/寫控制電路讀/寫控制有關的信號有:復位信號RESET,時鐘CLK,寫WR,讀RD,片選CS,控制/數據C/D。C/D表6-2-38251A讀、寫操作表RDWRCS操作0010CPU從8251A讀數據0100CPU向8251A寫數據1010CPU讀取8251A的狀態字1100CPU向8251寫入控制字*110數據總線浮空***1數據總線浮空2.可編程串行接口8251A(2)工作原理①接收器工作原理
●
異步方式:CPU發出允許接收數據的命令時,接收器就一直監視著RxD端的信號電平,一旦檢測到低電平,即作為起始位,并且啟動接收器內的計數器時鐘脈沖進行計數。若接收的時鐘頻率為波特率的16倍,則計數器計到半個數位傳輸時間,也就是計到8時,如檢測RxD端仍是低電平,就確認收到了一個有效的起始位。2.可編程串行接口8251A(2)工作原理①接收器工作原理
●
同步方式:8251A監視著RxD端,把接收到的每一位數據送入移位寄存器,并與同步字符寄存器的內容進行比較。如果兩者不等,則繼續接收數據和進行移位比較等操作;若兩者相同,則8251A將SYNDET端置為高電平,表示已實現同步過程。2.可編程串行接口8251A(2)工作原理②發送器工作原理
●
異步方式:當程序置TxEN=1和CTS=0時,才開始發送過程。發送時,發送器為每個字符加上一個起始位,并且按編程要求加上奇/偶校驗以及停止位。起始位、數據位、校驗位和停止位總是在發送時鐘TxC的下降沿時從8251A發出,數據傳輸的波特率是發送時鐘頻率的1、1/16或1/64。2.可編程串行接口8251A(2)工作原理②發送器工作原理
●
同步方式:程序置TxEN=1和CTS=0時,才開始發送過程。發送器先按編程要求發送一個或兩個同步字符,然后發送數據塊。1.8255A的結構和功能(3)8251A與CPU及外設的連接圖6-2-8是8251A與CPU及某個串行接口的外設的連線示意圖。1.8255A的結構和功能(4)8251A的編程圖6-2-9所示,8251A初始化流程。系統復位后,首先應將方式字寫入控制口,確定8251A的工作方式。同步工作方式,寫入方式字后,接著寫入同步字符,最后寫入命令字。異步工作方式,只要寫入命令字。1.8255A的結構和功能(4)8251A的編程①方式字圖6-2-10,同步和異步方式字格式。
1.8255A的結構和功能(4)8251A的編程②命令字圖6-2-11,命令字格式。③狀態字圖6-2-12,狀態字格式。
D7
D6
D5D4
D3
D2D1D0EHIRRTSERSBRKRxEDTRTxEN
圖6-2-11命令字格式D7D6
D5D4
D3D2D1D0DSRSYNDETFEOEPETxERxRDYTxRD
圖6-2-12狀態字格式1.8255A的結構和功能(5)8251A的編程①異步方式初始化程序接通電源時,8251A能通過硬件電路自動進入復位狀態。為了保證8251A正確復位,首先應向8251A的控制口連續寫入三個全“0”,然后再向該端口送入一個復位字(40H)。其次才寫入方式字和命令字。下面給出程序段。
REVTIMEMACRO MOVCX,02;需要4個時鐘周期
D0:LOOPD0;延時16個時鐘周期
ENDM1.8255A的結構和功能(5)8251A的編程①異步方式初始化程序例如:異步方式,波特率系數為16,7個數據位,一個停止位,采用偶校驗,控制口地址為3F2H,初始化程序為:
MOVDX,3F2H;控制口
MOVAL,00HOUTDX,AL;向控制口寫入第一個“0”
REVTIME
;調用延時子程序
OUTDX,AL
;向控制口寫入第二個“0”
REVTIIMEOUTDX,AL
;向控制口寫入第三個“0”1.8255A的結構和功能(5)8251A的編程①異步方式初始化程序(續)
REVTIME;調用延時子程序
MOVAL,40H
;恢復字
OUTDX,ALREVTIME;調用延時子程序
MOVAL,7AH;波特率16、數據7位、一個停止位、偶校驗
OUTDX,AL;寫入方式字
REVTIME;調用延時子程序
MOVAL,15H;允許接收、發送數據,清錯誤標志
OUTDX,AL;寫入命令字
1.8255A的結構和功能(5)8251A的編程②同步方式初始化程序同步方式時的初始化程序與異步方式相似,先寫入三個全“0”和軟件復位命令字(40H),再寫入方式字,然后再送同步字符(常用16H作為同步字符),最后寫入命令字。例如:8251A口地址3F2H,內同步方式,采用雙同步字符(同步字符為16H)、奇校驗、7位數據位。初始化程序為:1.8255A的結構和功能(5)8251A的編程②同步方式初始化程序(續)
MOVDX,3F2H;控制口 ┇;復位操作,同上
MOVAL,18H;雙同步、內同步、奇校驗、7位數據位
OUTDX,AL
;送方式字
REVTIME ;調用延時子程序
MOVAL,16HOUTDX,AL
;送第一個同步字符
REVTIME;調用延時子程序
OUTDX,AL
;送第二個同步字符1.8255A的結構和功能(5)8251A的編程②同步方式初始化程序(續)
REVTIMEMOVAL,95H;啟動搜索同步字符、標志復位、允許收、發
OUTDX,AL
┇1.8255A的結構和功能(6)8251A應用舉例假如兩臺8086微機之間進行通信,用8251A作接口芯片,并通過RS-232C串行接口實現通信,硬件電路如圖6-2-13所示。1.8255A的結構和功能(6)8251A應用舉例設8251A的數據口和控制口地址為1F0H、1F2H,兩機之間采用查詢方式、異步傳送、半雙工通信。則發送和接收程序如下: ┇;先寫三個全“0”,再寫40H,使系統復位
START-T:MOVDX,1F2H;控制口
MOVAL,7AH;異步方式,7個數據位,1個停止位,偶校驗、波特率因子16
OUTDX,AL
;寫方式字
MOVCX,02H;延時
DELAY1:LOOPDELAY1 MOVAL,11H
;命令字:清錯誤標志,允許發送
OUTDX,AL MOVCX,02H
;延時1.8255A的結構和功能(6)8251A應用舉例
DELAY2:LOOPDELAY2
MOVDI,BUFF-T
;發送緩沖區起始地址
MOVCX,COUNT-T;發送數據個數
NEXT-T:INAL,DX
;讀入狀態
TESTAL,01H
;TxRDY有效嗎?
JZNEXT-T
;否,則等待
MOVDX,1F0H MOVAL,[DI];從緩沖區取一個數據
OUTDX,AL;向8251A輸出一個數據
INCDI
;修改緩沖區指針
LOOPNEXT-T;發送數據未結束,則繼續 ┇
START-R:MOVDX,1F2H MOVAL,7AH1.8255A的結構和功能(6)8251A應用舉例
OUTDX,AL;送方式字,與發送部分相同
MOVCX,02H;延時
DELAY3:LOOPDELAY3 MOVAL,14H OUTDX,AL;輸出命令字:清錯誤標志,允許接收
MOVCX,02H;延時
DELAY4:LOOPDELAY4 MOVDI,BUFF-R;接收緩沖區起始地址
MOVCX,COUNT-R;接收數據個數
NEXT-R:INAL,DX;讀入狀態字
TESTAL,02H;RxRDY有效嗎?
JZNEXT-R
;否,循環等待
TESTAL,38H;是,查是否有錯1.8255A的結構和功能(6)8251A應用舉例
JNZERROR
;有錯,則轉出錯處理程序
MOVDX,1F0H;無錯
INAL,DX
;讀入一個數據
MOV[DI],AL;輸入數據送緩沖區
INCDI
;修改緩沖區指針
LOOPNEXT-R;接收數據未結束,則繼續 ┇
ERROR:…;出錯處理三、并行接口芯片8255A及其應用1.8255A的結構和功能2.8255A控制字和工作方式3.8255A應用舉例第一節8255A的結構和功能1.8255A的結構和功能8255A內部結構如圖6-3-1所示。1.8255A的結構和功能(1)數據端口PA、PB和PC8255A內部包含三個8位的輸入/輸出端口PA、PB和PC,通過外部的24根輸入/輸出線與外設交換數據或進行通信聯絡。PA口和PB口都可以作為8位的輸入/輸出數據口,PC口既可以作為一個`8位的輸入/輸出口用,又可作為兩個4位的輸入輸出口使用,還可用來配合PA口和PB口產生控制信號和輸入PA口和PB口的狀態信號。1.8255A的結構和功能(2)A組和B組控制電路這兩組根據CPU編程命令控制8255A工作的電路。有控制寄存器,用來接收來自CPU的命令字,分別決定A組和B組的工作方式,或對PC口的每一位執行置位/復位等操作。
PA口和PC口的上半部分(PC7~PC4),由A組控制邏輯管理。PB口和PC口的下半部分(PC3~PC0)由B組控制邏輯管理。1.8255A的結構和功能(3)數據總線緩沖器是一個雙向三態的8位緩沖器是數據總線的接口。(4)讀/寫控制邏輯用來管理內部或外部信息、控制字或狀態字的傳送過程。第二節8255A控制字和工作方式2.8255A控制字和工作方式(1)8255A控制字
①方式選擇控制字2.8255A控制字和工作方式(1)8255A控制字
②置位/復位控制字2.8255A控制字和工作方式(2)8255A的工作方式①方式0
例如:8255A端口地址80H,PA口和PB口工作于方式0,PA口、PB口和PC口上半部分作輸入,PC口的下半部分為輸出,表示為:
MOVAL,10011010BOUT80H,AL2.8255A控制字和工作方式(2)8255A的工作方式②方式1●方式1輸入
●方式1輸出
2.8255A控制字和工作方式(2)8255A的工作方式③方式2第三節8255A應用舉例3.8255A應用舉例(1)基本輸入/輸出應用舉例例如某系統有八個開關S7~S0,要求檢測它們的狀態,通過發光二極管LED7~LED0顯示。開關斷開,相對應的LED點亮;反之,熄滅。選用8086,8255A和74LS138譯碼器等芯片,構成應用電路。如圖6-3-8所示,8255A的PA口作輸入口,8個開關S7~S0分別接PA7~PA0。PB口為輸出口。3.8255A應用舉例(1)基本輸入/輸出應用舉例
PA口為方式0輸入,PB口為方式0輸出,PC口未用,其中的各位置“0”,寫入控制口F6H的控制字為90H。完成初始化后,將PA口的開關狀態讀入寄存器AL。3.8255A應用舉例(1)基本輸入/輸出應用舉例其程序段如下:
MOVDX,0F6H;控制字寄存器
MOVAL,90H
;控制字
OUTDX,AL
;寫入控制字
TEST:MOVDX,0F0H;指向PA口
INAL,DX;從PA口讀入開關狀態
MOVDX,0F2H
;指向PB口
OUTDX,AL;寫PB口控制LED,指示開關狀態
JMPTEST
;循環檢測
3.8255A應用舉例(2)鍵盤接口圖6-3-9以機械式開關構成4行×4列鍵盤,接到由兩片8255A構成的端口,其中PA口作輸出,PB口作輸入。4條行線接到PA口的PA3~PA0和PB的PB7~PB4,4條列線接到PB口的PB3~PB0。3.8255A應用舉例(2)鍵盤接口在無鍵壓下時,由于接到+5V上的上拉電阻的作用,列線被置成高電平。壓下某一鍵后,該鍵所在的行線和列線接通。當從PB口讀取列線信號時,便能根據讀入的行和列狀態中低電平的位置,便能確定哪個鍵被壓下了。確認有鍵壓下后,再確定被壓下鍵所在的行、列號。以圖6-3-9為例,行號和列號構成16個鍵的矩陣,當按下0鍵時,在PB口上可讀得PB7、PB3位皆為“0”,其余位為“1”,那么數字0的編碼為01110111B,即77H。若按下6鍵,3.8255A應用舉例(2)鍵盤接口
PB口的PB6、PB1位皆為“0”,其余位為“1”,得到數字6的編碼為10111101B,即BDH。類似地,將各鍵的編碼值列成表,放在數據段中,用查表程序來查對,便能確定按下的鍵值。程序段如下:
PORT_AEQU0FF9H
;8255APA口地址
PORT_BEQU0FFBH
;8255APB口地址
PORT_CTLEQU0FFFH;8255A控制口地址
DATASEGMENT3.8255A應用舉例(2)鍵盤接口
TABLEDB77H,7BH,7DH,7EH,0B7,0BBH,0BDH,0BEH;數據段,鍵盤掃描碼表
DB0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHDATAENDSSTACKSEGMENTSTACK
DW50DUP(0)
TOP_STACLABELWORDSTACKENDSCODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,STACK
MOVSS,AX3.8255A應用舉例(2)鍵盤接口
LEASP,TOP_STACK
MOVAX,DATA MOVDS,AX;初試化8255A,方式0,PA口作輸出,PB口和PC口為輸入
MOVDX,PORT_CTL;指向控制口
MOVAL,8BH
;控制字
OUTDX,AL MOVDX,PORT_A MOVAL,00H OUTDX,AL
;向PA口各位輸出0;讀列,查看是否所有鍵均松開
MOVDX,PORT_B3.8255A應用舉例(2)鍵盤接口
WAIT-O:INAL,DX;鍵盤狀態讀入PB口
ANDAL,0FH
;只查低4位(列值)
CMPAL,0FH
;是否都為“1”(各鍵均松開)?
JNEWAIT
;否,繼續查;各鍵均已松開,再查列是否有0,即是否有鍵壓下
WAIT-P:INAL,DX;讀PB口
ANDAL,0FH
;只查低4位
CMPAL,0FH
;是否有鍵壓下
JEWAIT-P
;無,等待;有鍵壓下,延時20ms,消抖動
MOVCX,16EA3.8255A應用舉例(2)鍵盤接口
DELAY:LOOPDELAY;延時20ms;再查列,看鍵是否仍被壓著
INAL,DX ANDAL,0FH CMPAL,0FH JEWAIT-P
;已松開,轉出等待壓鍵;鍵仍被壓著,確定哪一個鍵被壓下
MOVAL,0FEH;先使D0=0 MOVCL,AL
;CL=11111110B NEXT-R:MOVDX,PORT-A OUTDX,AL
;向一行輸出低電平3.8255A應用舉例(2)鍵盤接口
MOVDX,PORT-B INAL,DX
;讀入PB口狀態
ANDAL,0FH
;只截取列值
CMPAL,0FH
;是否均為“1”?
JNEENCODE
;否,表示有鍵壓下,轉去編碼
ROLCL,01
;均為“1”,使下行輸出“0”
MOVAL,CL JMPNEXT-R
;查看下行;已找到有一行為低電平,對壓鍵的行列值編碼
ENCODE:MOVBX,000FH;地址指針指向F鍵對應的地址
INAL,DX
;從PB口讀入行列號3.8255A應用舉例(2)鍵盤接口
NEXT-TRY:CMPAL,TABLE[BX];讀入行列值與表中查得的相等嗎?
JEDONE
;相等,轉出
DECBX
;不等,指向下一個地址
JNSNEXT-TRY;若地址未減為負值,繼續查
MOVAX,01;若減為“0”,置出錯碼01→AX中
JMPEXIT
;退出
DONE:MOVAL,BL;BX中存有鍵的16進制代碼
MOVAH,00;AX=0,讀到有效鍵值
EXIT:HLTCODEENDS END四、8253可編程計數器/定時器及其應用1.8253內部結構2.編程命令和工作方式3.8253應用舉例第一節8253內部結構1.8253內部結構如圖6-4-1所示,8253內部結構由數據總線緩沖器、讀寫控制邏輯電路、控制寄存器和三個計數通道四部分組成。①數據總線緩沖器這是8253和CPU之間的數據接口,采用8位雙向三態緩沖器。1.8253內部結構②讀寫控制邏輯電路讀寫控制邏輯電路是8253內部的控制部分。
③控制寄存器初始化編程時,控制寄存器用來存放CPU寫入的控制字,確定計數通道的工作方式。
④計數通道0、1和2三個計數通道功能是完全相同的,每個計數通道都包括一個16位計數器。每個計數通道有六種工作方式。1.8253內部結構④計數通道0、1和2每個計數通道有三條引腳線,如下:●通道輸入時鐘CLK2~CLK0。●通道的門控信號CATE2~CATE0。●通道輸出OUT2~OUT0。表6-4-2門控制信號GATE的功能工作方式GATE為低電平或下降沿GATE為上升沿GATE為高電平方式0禁止計數無意義允許計數方式1無意義從初值開始計數無意義方式2禁止計數,使輸出變高從初值開始計數允許計數方式3禁止計數,使輸出變高從初值開始計數允許計數方式4禁止計數無意義允許計數方式5無意義從初值開始計數無意義第二節編程命令和工作方式2.編程命令和工作方式(1)編程結構控制寄存器的格式如圖6-4-2所示。2.編程命令和工作方式(3)8253的讀、寫操作和編程
8253沒有RESET復位引腳,因此,在使用前必須首先進行初始化。初始化就是對控制寄存器和計數寄存器的寫入,寫入要注意:●先寫控制寄存器,后寫計數寄存器。●寫入計數寄存器初始值時,要按控制字格式寫入。例如,8253控制寄存器地址為36H,三個計數通道地址為30H、32H和34H。2.編程命令和工作方式(3)8253的讀、寫操作和編程要求對通道1作初始化,采用方式3、二進制計數、計數初值為1234H。初始化如下:
MOVAL,76H;通道1、方式3、二進制計數,先讀、寫低8位,后高8位
OUT36H,AL
;寫控制寄存器
MOVAL,34H
;低字節34H送ALOUT32H,AL
;寫計數通道1的低8位
MOVAL,12H
;高字節12H送ALOUT32H,AL
;寫計數通道1的高8位2.編程命令和工作方式(3)8253的讀、寫操作和編程●8253讀操作只能讀計數寄存器,不能讀控制寄存器。接上例,采用計數鎖存命令,讀取計數寄存器的當前值。其程序片段如下:
MOVAL,46H;通道1、方式3、計數器鎖存
OUT36H,AL;寫控制寄存器
INAL,32H
;讀通道1低8位計數值送ALMOVAH,AL
;低8位暫存AHINAL,32H
;讀通道1高8位計數值送ALXCHGAH,AL;計數值保存在AX第三節8253應用舉例3.8253應用舉例圖6-4-3所示,8253的數據總線D7~D0與CPU的低8位相連,端口地址線A0、A1與CPU的地址線A2、A1相連,8253的片
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 郵政快遞賠償標準調整補充協議
- 長期承租設備協議書
- 贍養問題調解協議書
- 隧道支護承包協議書
- 鄰居快遞賠償協議書
- 車廂買賣合同協議書
- 酒店雙方諒解協議書
- 資產收購居間協議書
- 道路清洗保潔協議書
- 寫字樓合同解除協議書
- 會計原始憑證說課公開課一等獎市優質課賽課獲獎課件
- 下腔靜脈濾器置入與取出術
- 伍德密封強度計算
- 重度子癇前期子癇急救演練
- 產婦可以吃蛹蟲草嗎:哺乳期婦女可以吃蛹蟲草嗎
- 《化工原理》課程思政教學案例(一等獎)
- 國家統一法律職業資格官方題庫:刑事訴訟法-考試題庫(含答案)
- 【超星爾雅學習通】《美術鑒賞》2020章節測試題及答案
- 多發性損傷的急診
- 洛寧華泰礦業洛寧縣陸院溝金礦(新增儲量)采礦權出讓收益評估報告摘要
- 新高考統編教材必背古詩文-教材外篇目(廣東省適用)
評論
0/150
提交評論