第八章接口技術_第1頁
第八章接口技術_第2頁
第八章接口技術_第3頁
第八章接口技術_第4頁
第八章接口技術_第5頁
已閱讀5頁,還剩206頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1第八章接口技術2第八章接口技術8.1計(數)(定)時器8.2并行傳輸及其接口8.3DMA傳輸和DMA控制器8.4串行傳輸及串行接口8.5模擬接口I/O接口可分為計時電路(計數器或定時器)、并行接口、串行接口、DMA控制器和模擬接口等。

3主要用于:周期時鐘產生串行傳輸波特率發生器,方波發生器,高速脈沖輸出(HSO)各種限時器(單穩態電路、軟硬件看門狗電路)各種時間間隔,頻率和相位的測量;生成各種占空比的脈沖寬度調制(PWM)輸出。

8.1計數定時器48.1.1計時器的一般工作原理計數定時器實際上是一個計數器電路,其時鐘由一標準時鐘發生器提供,由它作為計時標準。所以,計時器可提供高精度的時間測量和作為高精度限時器。5圖8.1計時器的一般構成

外部CLK定時計數68.1.2計時器的啟動(觸發)方式計數器的觸發方式是指“從什么時間開始計時”的決定方式。定時器有內(軟件)觸發和外(硬件)觸發兩種觸發方式。GATE門控信號:使能端78.1.3計時器在計算機中的應用(1)用作硬件延時器,可節約CPU時間。(2)用作周期中斷觸發源,可進行刷新、時鐘、間隔控制等。(3)用作波特率發生器,方波發生器等固定波形的生成。(4)作可重復觸發的單穩態電路

8

圖8.2限時器的原理波形

τ98.1.4計時器功能的改進:輸人捕獲和輸出比較

對計時器的改進,使它能更精確地測量事件發生的時間,這就是輸入捕獲和輸出比較功能。

101.輸入捕獲功能其工作原理是,當計數器在某標準時鐘信號驅動下不斷計數時,若外部來了某信號的一個有效沿(上升或下降沿),就產生一個捕獲信號,該信號把計數器的當前值裝入捕獲寄存器,同時產生中斷信號。11

圖8.3計數器的輸入捕獲原理

122.比較輸出圖8.4比較器輸出原理138.1.5PWM輸出功能與直流馬達轉速控制

若把輸出比較功能作些改進,它可以變成另一種很有用的電路,即脈沖寬度調制輸出(PWM)。

14圖8.5PWM的工作原理158.1.6定時計數器芯片舉例定時與計數本質上是一致的:定時的信號具有周期性,計數的信號具有隨機性。定時:提供的時間基準。可分為內部、外部定時。計數:

對脈沖的個數進行累計。實現定時控制可分為三種方法:16(2)硬件定時采用中小規模IC構成。

如555定時IC。不增加CPU負擔,成本低,定時值不可改變。不能滿足精確度和靈活性的要求。(3)可編程硬件定時

8253:最高工作頻率2.6

MHz8254:最高工作頻率

10MHz

(1)軟件定時

通過軟件指令周期方法定時,如執行循環程序。增加CPU負擔,通用性差,一般用于短延時。采用可編程定時/計數器完成,由編程軟件改變計數值。171.8253/8254芯片的對外引腳和內部結構圖8.6(a)8353/8254引腳18

圖8.6(b)8353/8254內部結構

CPU接口:

譯碼、操作外設接口:

時鐘信號、控制、輸出內部邏輯三個計數器各自獨立19圖8.6(c)8353/8254每個計數通道邏輯框圖16位當前計數值鎖存器OL16位減1計數器CE16位計數初值寄存器CROUT(減1至0時)MSBLSB鎖存后讀出當前值MSBLSB裝入/讀出初值&CLKGATE最大計數值為64K時鐘輸入門控信號計數器輸出DBDB(計數初值與CLK時鐘周期的積)CR:16位寫入[兩次]、清零CE:16位寫入、計數、輸出OL:16位先鎖存再讀出20(1)數據總線緩沖器:CPU向其輸出指令將控制字和計數值寫入內部寄存器,亦可用輸入指令讀取其內部的數據。(2)讀/寫邏輯:接收CPU的控制信號、片選信號及端口選擇或命令選擇信號。由讀寫邏輯控制各個操作,見下表所示。

WR:寫控制輸入信號

RD:讀控制輸入信號

CS:片選輸入信號

A1、A0:通道選擇信號21(3)控制寄存器:存放CPU送來的控制字,確定定時/計數

器的工作方式。(4)三個計數器:計數器0、計數器1、計數器2。均為獨立的16位減法計數器,由控制字確定二、十進制計數,每個計數器有三個引腳:

CLK:時鐘輸入信號引腳,由脈沖/方波作基準信號。

GATE:門控輸入信號引腳,低電平時關閉停止計數,高電平允許減法計數。

OUT:計數器輸出信號。當計數或定時結束時,此引腳輸出一個控制信號。計數初值:N=fCLKi/fOUTi,在不同工作方式及定時/計數時的應用不同。操作特征位時序D7D601000計數初值寫入0#計數器**無01001計數初值寫入1#計數器**無01010計數初值寫入2#計數器**無01011向控制字REG寫控制字00~10無寫“讀計數值/狀態”命令11無00100讀0#計數器當前計數值無前一命令A1A0=11時,D7D6為11且D5為0或D7D6為非11且D5D4為00時,讀取的是當前計數值;D7D6為11且D4為0讀取的是狀態。讀0#計數器狀態無00101讀1#計數器當前計數值無讀1#計數器狀態無00110讀2#計數器當前計數值無讀2#計數器狀態無00111無操作1****禁止訪問011**無操作通道地址分配及操作CSWRRDA1A0★232.地址安排片內地址(A1A0)操作內容片內地址(A1A0)操作內容00通道0時間常數寫通道0時間狀態讀10通道2時間常數寫通道2時間狀態讀01通道1時間常數寫通道1時間狀態讀11寫命令字243.工作方式控制字(CW)8253/8254有六種不同用途的工作方式:方式0~方式5其工作方式擴展字見P322圖8.7:D7D6D5D4D3D2D1D0計數器選擇00CH001CH110CH211無用讀/寫控制00鎖定當前計數值01只讀寫計數器低字節10只讀寫計數器高字節11先讀寫計數器低字節后讀寫計數器高字節工作方式000方式0001方式1X10方式2X11方式3100方式4101方式5計數器制1BCD制0二進制25(1)方式0:中斷信號發生器(設控制字CW=10H低字節計數初值LSB)GATE為高電平時允許計數,下降暫停、低禁止、上升繼續計數;寫入方式0控制字后,OUT信號變為低電平;WR有效(0電平)后的下一脈沖下降沿開始減1計數;當初值減至0時,OUT信號變為高電平。特點:一次計數;常用來產生計數結束時中斷。4.8253/8254的工作方式說明3)4)2)26(2)方式1:單穩態負脈沖信號發生器(設控制字CW=12H)

(又稱:硬件可重觸發單穩)

特點:一次計數;

GATE上升重新計數、高與下降和低不影響計數;

WR#寫[重寫]在下次GATE從0到1的跳變時有效;

OUT在寫入控制字后變高,開始計數時變低、計數值為0時變高(N個時鐘周期的低)。27(3)方式2—頻率發生器(設控制字CW=14H

特點:多次計數;

GATE上升重新計數、高允許、下降停止、低禁止計數;

WR#寫[重寫]在下次計數時有效;

OUT在計數值為1時輸出寬度為1個CLK的負脈沖(周期為N個時鐘周期,頻率為1/N的時鐘頻率,實際上是對CLK的N分頻)。28(4)方式3—方波發生器(設控制字CW=16H)

特點:多次計數;

GATE上升重新計數、高允許、下降停止、低禁止計數;

WR#寫[重寫]在下次計數時有效;

OUT在寫入控制字后變高,計數開始后,采用每脈沖計數減2:

當計數初值為偶數n時,計數到0時反向。脈沖寬度T×N/2,方波周期為

T×N。

當計數初值為奇數n時,OUT變高的第一個CLK減1后裝入CE,其余每個脈沖

計數減2。OUT正脈沖時,計數到0的下一個CLK時OUT反向OUT正脈沖寬度為

T×(N+1)/2;OUT負脈沖時在計數到0時反向。負脈沖寬度為T×(N-1)/2,方波周期仍然是T×N。29

特點:一次計數;

GATE上升重新計數、高允許、下降停止、低禁止計數;

WR#寫[重寫]會立即重新計數(軟件觸發);

OUT在寫入控制字及計數當中為高電平,計數值為0時輸出1個CLK的負脈沖。(5)方式4—軟件觸發的選通信號發生器(CW=18H)30(6)方式5硬件觸發的選通信號發生器(CW=1AH)

特點:一次計數;

GATE上升重新計數、高與下降和低不影響計數;

WR#寫[重寫]在下次GATE從0到1的跳變時有效;

OUT在計數值為0時輸出1個CLK的負脈沖。

方式0方式1方式2方式3方式4方式5OUT輸出狀態寫入控制字后變0,計數結束變1,并維持至重寫控制字或計數初值寫入控制字后變1,GATE上升沿觸發變0,開始計數,計數結束變1寫入控制字后變1,計數到1變0,維持一個Tclk變1寫入控制字后變1,裝入初值且GATE=1則OUT變1,計數到變0,重裝初值繼續計數,計數到則反向寫入控制字后變1,計數結束變0,維持一個Tclk變1寫入控制字后變1,GATE上升沿觸發開始計數,計數結束輸出一個CLK的負脈沖初值自動重裝無無計數到0重裝根據初值奇偶分別重裝;無無計數過程中改變初值立即有效GATE觸發后有效計數到1或GATE觸發后有效計數結束或GATE觸發后有效立即有效GATE觸發后有效GATE0禁止計數無影響禁止計數禁止計數禁止計數無影響下降沿暫停計數無影響停止計數停止計數停止計數無影響上升沿繼續計數從初值開始重新計數從初值開始重新計數從初值開始重新計數從初值開始重新計數從初值開始重新計數1允許計數無影響允許計數允許計數允許計數無影響32335.8253/8254應用實例

特征位:D7D6=00~10、D5D4=01~11:

D7D6選擇計數器:00-T/C0;01-T/C1;10-T/C2

D5D4選擇讀/寫方式:01-只寫低字節;10-只寫高字節;11-先寫低字節再寫高字節(16位)

D3D2D1選擇工作方式:000~101六種工作方式。

D0選擇計數進制:0-二進制方式(0-FFFFH);1-BCD碼方式(0-9999)。

例:MOVAL,01110100B;T/C1,先低后高字節,方式2,二進制方式

OUT43H,AL;寫命令字,后面緊跟寫字[先低后高]操作指令MOVAX,XXXXH;見后面例子8253/8254初始化編程(1)一般原則寫入控制字:根據選定計數器、操作類型、方式選擇、計數制式,確定控制字。寫入對應通道的計數初值。

(2)計數初值的計算

n=fCLKi/fOUTi

(a)不同通道的計數初值寫到不同地址中:

A1A0定時/計數器

00T/C001T/C110T/C2(b)每次寫入一個字節;

(c)根據控制字定義,決定高、低字節寫入方法。

(d)初始值的范圍是:

二進制為65536(0000H)、65535(FFFFH)…

1(0001H)。十進制為10000(0000H)、9999(9999H)…

~1(0001H)。

對于小于256之數,用低字節計數;對于大于等于256之數,分別用高、低字節計數。例:

T/C初始化

(1)寫工作方式控制字

(2)設置計數初值

MOVAL,01110101B;

T/C1,先低后高字節,方式2,BCD

OUT

43H,AL;A1=1,A0=1

MOV

AX,2000H;

計數初值為2000H

OUT

41H,AL;A1=0,A0=1

MOVAL,AH

OUT

41H,AL;A1=0,A0=1

MOVAL,00010110B;

T/C0,僅低字節,方式3,二進制

OUT

43H,AL

OUT40H,50H;

A1=0,A0=0,計數初值為50H(80)

注意:(1)每個使用的T/C均要初始化;

(2)計數初值的設置與T/C的CLK密切相關;

(3)計數初值的設置方法由控制字決定。36P324例:使用Intel8253:通道0用于外部事件計數,每計滿100次通過中斷控制器8259A向CPU發出中斷請求;

通道1產生頻率為1KHz的方波,作為串行接口的時鐘信號;

通道2產生標準定時時鐘,每秒通過8259A向CPU發出一次中斷請求信號。0E0H~0E3H388253的實驗講解

見實驗三8253定時器計數器.DOC398.2并行傳輸及其接口

并行傳輸有以下特點:接口設計簡單

傳輸距離短

并行接口分為簡單接口(非選通接口)和選通接口兩種。

408.2.1簡單并行口

1.簡單輸出口

P327圖8.92.簡單輸入口P327圖8.103.通用簡單并行口

P327圖8.11(字節I/O口)4.位(控)I/O口418.2.2選通并行口及其聯絡1.異步互鎖聯絡P328422.脈沖聯絡P327圖8.13脈沖聯絡波形

433.混合聯絡

脈沖與電平信號混用,非互鎖聯絡。4.NRZ(不歸零)聯絡

減少聯絡信號的跳變次數,以減少對數據

線上信號的干擾。

見P327圖8.1444圖8.15選通輸出的聯絡邏輯

8.2.3并行接口設計舉例G45圖8.16輸出聯絡波形(輸出)46圖8.17選通輸入的聯絡邏輯

RxBufferEmpty——DateAVailable47

圖8.18輸入聯絡波形

DAV488.2.4通用并行接口芯片舉例8255內部主要部件8255具有2個獨立的8位I/O口(A組和B組,可作為選通口使用)和2個獨立的4位I/O(C組上半部和C組下半部,不能作為選通口),提供TTL兼容的并行接口。作為輸入時提供三態緩沖器功能,作為輸出時提供數據鎖存功能。其中,A口具有雙向傳輸功能。(1)數據端口端口A:A口屬于A組,受A組控制電路控制,輸入輸出均具有八位數據緩沖和數據鎖存的功能,可設置為雙向的通信口。

端口B:B口屬于B組,受B組控制電路控制,僅有八位數據數據輸出鎖存及緩沖的功能,輸入則無鎖存功能。端口C:C口既可作為一個八位的數據端口作為輸入、輸出數據端口,又可分為兩個獨立的四位端口使用,但輸出有鎖存輸入無鎖存。作為兩個四位口(高、低半口)使用時,分別受A組、B組控制器控制,C口可進行位操作。

(2)A組、B組控制電路由設定8255的方式字決定8255的工作方式。8255的控制寄存器接收CPU輸出的方式字,可決定A、B兩組的工作方式,亦可對C端口進行位操作(復位、置位),A組控制A口、C上(高)半口;B組控制B口、C下(低)半口。1、接口信號和內部結構外設接口信號引腳PA7~PA0:A口的8條引線PB7~PB0:B口的8條引線PC7~PC0:C口的8條引線數據總線信號引腳D7~D0:8位數據引線控制信號引腳RD讀、WR寫、CS片選引線RESET復位、A1、A0端口選擇引線電源引腳Vcc(+5V)、GND引線518255內部結構522、端口地址安排片內地址(A1A0)操作內容片內地址(A1A0)操作內容00寫口A數據(寫操作)讀口A數據(讀操作)10寫口C數據(寫操作)讀口C數據(讀操作)01寫口B數據(寫操作)讀口B數據(讀操作)11寫命令字讀操作無效注:口C讀出時,某些位是被借用的口線的狀態寫口C時,某些被借用位是控制位(如INTE中斷允許)

8255的端口與操作選擇表

A1A0RDWRCS操作

001010000111000A口內容讀至數據總線B口內容讀至數據總線C口內容讀至數據總線

輸入00110101

111100000000數據總線內容寫至A口數據總線內容寫至B口數據總線內容寫至C口DB內容寫至控制寄存器輸出X1XX1XX01X11100端口輸出為高阻非法端口輸出為高阻禁止543、命令字(1)8255工作方式選擇控制字(寫,A1A0=11)方式0為基本的輸入輸出方式方式1為選通的輸入輸出方式方式2為雙向傳輸方式(2)端口C置位/復位控制字C口按位置/復位控制字(寫,A1A0=11)

可單獨對8255之C端口的8位進行位操作●置/復位控制字必須寫入控制寄存器,即控制端口中4、8255的工作方式8255有三種工作方式:方式0、方式1、方式2

方式0為基本的輸入輸出方式方式1為選通的輸入輸出方式方式2為雙向傳輸方式A、B、C口均可工作在方式0

方式1適用于工作在A、B口(C口配合之)方式2僅用于A口(C口配合之),此時B口可設為方式0、方式157①方式0—

基本的輸入輸出方式方式0提供兩個8位口(A和B)和兩個4位口(PC7~PC4,PC3~PC0),任何一個口都可用做輸入或輸出(單向),由CPU用簡單的I/O指令來進行讀/寫。一般用于無條件傳送的場合,也可以用做查詢式傳送。習慣上將A口和B口作為數據口,將C口作為控制輸出和狀態輸入口。②方式1—

選通的輸入輸出方式

A口和B口可作為輸入或輸出端口使用,C口的某些位則作為控制或聯絡信號,不同的端口要求C口與其配合的位不同。在方式1中C端口配合A端口和B端口有固定搭配關系。C端口中沒有使用的位可單獨定義為I/O使用。(a)A端口方式1輸入(b)B端口方式1輸入1、方式1輸入

當8255的A端口和B端口均作為方式1輸入時,C端口的6個位作為選通控制和聯絡信號。PC2、4為外設選通信號;PC1、5為緩存器滿聯絡信號;PC0、3為中斷請求信號。PC6、7作為I/O使用。若A、B口僅有一個作輸入使用,則C端口中沒有使用的位可單獨定義為I/O使用。59INTE為中斷允許位,對應PC口寄存器(狀態字)的D4位(INTEA)和D2位(INTEB),可通過對PC口按位寫方法設置;PC2、PC4引腳作用:STB用作鎖存數據口數據;中斷條件:STB#(引腳)=1(無效),IBF=1、INTE=1;PC6、7可作為數據線使用。60輸入組態下的操作時序★中斷方式如果INTE有效,8255將使INTR有效,申請中斷CPU向8255發讀信號RD,從8255端口讀數據中斷請求信號INTR變無效,然后IBF無效,外設可送下一個數據。★查詢方式外設把數據送到8255端口外設用選通信號STB把數據打入端口的輸入鎖存器輸入緩沖器滿信號IBF有效,CPU可查詢該信號 ̄ ̄ ̄ ̄61①②③④輸入組態下的操作時序622、方式1輸出(a)A端口方式1輸出(b)B端口方式1輸出當8255的A端口和B端口作為方式1輸出時,C端口的6個位作為選通控制和應答信號,剩余的PC4、5作為I/O使用。若A、B口僅有一個作輸出使用,則C端口中沒有使用的位可單獨定義為I/O使用。方式1輸出組態邏輯63

INTE為中斷允許位,對應PC口寄存器(狀態字)的D6位(INTEA)和D2位(INTEB),可通過對PC口按位寫方

法設置;

PC2、PC6引腳作用:用作對OBF的回應;中斷條件:ACK(引腳)=1(無效),OBF=1(無效)、INTE=1;

PC4、5可作為數據線使用。64輸出組態下的時序①②③④輸出緩存器滿應答響應中斷請求寫信號③方式2--雙向數據傳輸方式僅限用于A端口。配合工作的C端口為PC3、4、5、6、7。C端口的其余位可作為I/O使用。具有方式1輸入和方式1輸出組合的特點。方式2下的組態邏輯例

若將A口工作于方式0作輸入,B口工作于方式1作輸出。PC3設成輸入,C口上半部輸出。設8255端口地址為60H-63H。控制字為:10010101B=95H初始化程序為:

MOV AL,95H;方式選擇控制字

OUT 63H,AL;寫入控制寄存器方式1下8255狀態字中INTE位的置位和復位⊙若允許PA口輸入中斷請求MOVDX,203H;8255命令口MOVAL,00001001B;PC4=100,允許中斷請求

OUTDX,AL⊙若禁止PA口輸入中斷請求MOVDX,203H;8255命令口MOVAL,00001000B;置PC4=100,禁止中斷請求

OUTDX,AL⊙若允許PA口輸出中斷請求MOVDX,203H;8255命令口MOVAL,00001101B;置PC6=110,允許中斷請求

OUTDX,AL⊙若允許PB口輸入中斷請求MOVDX,303H;8255命令口MOVAL,00000101B;置PC2=010,允許中斷請求

OUTDX,AL⊙若禁止PB口輸入中斷請求MOVDX,303H;8255命令口MOVAL,00000100B;置PC2=010,禁止中斷請求

OUTDX,AL⊙若允許PB口輸出中斷請求MOVDX,303H ;8255命令口MOVAL,00000101B;置PC2=010,允許中斷請求

OUTDX,AL

例:若A口工作于方式1作輸入,使用中斷傳送方式,B口工作于方式0作輸出,其余C口的位作為輸出。設8255端口地址為63H。編寫初始化程序片斷。

MOVAL,10110000B;A口方式1輸入,B口方式0輸出,其余

;C口位作為輸出

OUT63H,AL;方式選擇控制字寫入控制寄存器

MOVAL,00001001B;PC4=100,INTE=1OUT63H,AL;置/復位控制字寫入控制寄存器實驗一:某應用系統以8255A作為接口,采集一組開關S7~S0

的狀態,然后通過一組發光二極管LED7~LED0顯示開關狀態,(Si閉合,則對應LEDi亮,Si斷開,則對應的LEDi滅)電路連接如下圖,已知8255A、B兩組均工作在方式0。寫出8255工作方式控制字。寫出實現給定功能的匯編語言程序。71圖1PA口PC口72圖2PA口PC口73A口工作在方式0輸入,C口輸出,所以其控制字是10010000b=90H程序如下:;8255經LS245(同相驅動器)驅動,發光管共陽,所以反向顯示。DATASEGMENTDATAENDSSTACKSEGMENTSTACKSTADW50DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOVAL,90H;設置為A口輸入,C口輸出MOVDX,203H OUTDX,ALBG:MOVDX,200H;將A口狀態輸出

INAL,DX

MOVDX,202H OUTDX,AL JMPBGCODEENDSENDSTARTNOTAL;加此語句后開關位置與顯示反相75例 下圖采用一個8255芯片和軟盤控制器相連,箭頭標明了I/O的方向,根據該圖,試寫出8255的初始化程序。設8255端口地址為0300-0303H。圖8255用作軟盤基本接口

A口工作在方式2,PC4-PC7作應答聯絡信號線,PC3用作A組中斷請求,B口和PC0-PC2作輸出,工作在方式0。工作方式控制字為:11XXX000B初始化程序為:

MOV DX,303HMOV AL,0C0HOUT DX,ALMOV AL,00001001BOUT DX,AL ;PC4置位,開放輸入中斷

MOV AL,00001101BOUT DX,AL ;PC6置位,開放輸出中斷77三、8255作為打印機接口實例已知8255作為打印機接口,如下圖所示。8255工作在方式1作為打印機接口電路

CPU通過8255與打印機連接,打印前先檢查打印機的工作狀態,當BUSY=l時表示打印機忙,則等待,BUSY=0時表示不忙,這時CPU送數到A口并給打印機的STB端送一個負脈沖的打印選通信號,使數據進人打印機數據緩沖器。打印機處理完送入數據后向8255發送一個應答信號ACK,這時又可繼續送下一個數據,直到打印結束。有兩種傳送方法進行打印,一種是查詢打印,一種是中斷打印。下面僅給出查詢打印方式的程序,中斷打印程序可自己編寫。在查詢方式中,只需檢測打印機的BUSY信號的高低電平即可決定是否打印。程序如下:

DATASEGMENT

PORTAEQU340HPORTBEQU341HPORTCEQU342HCTRLPEQU343H

PstringsDB“Thisisasampleofprinterinterfaceusing8255”

countEQU$-PstringsDATAENDSSTACKSEGMENTPARASTACK‘STACK’DB100DUP(?)STACKENDSCODESEGMENT

ASMMUSECS:CODE,DS:DATA,SS:STACKMAINPROCFAR

;PUSHDS;MOVAX,0

;PUSHAXMOVAX,DATAMOVDS,AXMOVAL,0A8H;8255方式選擇控制字10101000B(C上半口輸入PC4)MOVDX,CTRLP;控制端口OUTDX,AL;方式選擇控制字寫入控制口MOVCX,count;打印字符個數裝入計數器MOVBX,offsetPstringsLP1:MOV

AL,[BX]

MOVDX,PORTA

OUTDX,AL;送一個字符到8255的A口

MOVDX,PORTCLP2:INAL,DX;讀取C口狀態(準備檢查BUSY狀態)

ANDAL,00010000B;屏蔽無關位,取BUSY對應的PC4JNZLP2;等待接收新數據,BUSY=1等待,直到不忙

INCBX

LOOPLP1RETMAINENDPCODEENDSEND

MAIN如果采用中斷方式打印,則在中斷方式中,無需檢測打印機的BUSY狀態,當打印機處理完數據后會向8255發應答信號ACK,在內部中斷允許的情況下產生中斷請求信號,這時CPU可以在中斷服務程序中向打印機發送打印數據。因此主程序中應先對8255初始化(如前所述),然后允許INTEA內部中斷,才可能使8255接收到ACK之后產生中斷請求信號。在中斷服務程序中注意保護現場和恢復現場,服務程序的主體是送數到打印機,中斷一次打印一個字符。在主程序設置好打印計數初值,中斷一次計數減1,直到字符全部打印完畢,關中斷結束整個程序。81例:并行接口8255A經常用來作LED顯示器、鍵盤、打印機、A/D和D/A轉換器接口。下圖是8255A與七段代碼顯示器的接口電路。開關設置的二進制信息由8255A的B口輸入,經程序轉換為對應的七段LED的字形碼(段選碼)后,通過A口輸出并由七段LED顯示。試編制其控制程序。82關于七段I。ED顯示器的說明:七段LED顯示器由8個發光二極管構成,共有七段構成顯示的數字與字符,每段分別稱為a,b,c,d,e,f,g,最高位dp表示顯示圓點(·),如下圖所示。七段LED顯示器電路結構根據其內部結構,LED顯示器有共陰極電路和共陽極電路。該顯示器可顯示十六進制數、部分英文字母及一些常用字符,其中十六進制數的七段字形碼如表所示。可看出共陰極字形碼和共陽極字形碼互為反碼。83解:根據電路可知,8255A工作于方式0,B口工作于輸入,A口工作于輸出,不使用聯絡信號。8255A的工作方式字為:1000X01XB(可設為82H)。根據譯碼器可知,8255A的口地址為:21CH~21FH。根據電路可知,七段LED為共陽極電路,但B口輸出經反向器驅動后的字形碼和共陰極一樣。七段16個(0~F)數字、字符的字形碼表參看程序中SCODE定義的表。編寫控制程序的步驟如下:設置工作方式字;讀B口狀態,得到有關開關的信息;將得到的信息用查表法轉換為七段字形碼;七段字形碼送A口至LED顯示器顯示;延時,使所顯示的信息顯示一段時間以便于觀察。按題意編寫的控制程序如下:84DATASEGMENTSCODEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,67H,77H,7CH,39H,5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE;DS:DATASTART:MOVAX,SEGDATAAMOVDS,AX

MOVDX,21FH;8255A方式控制字地址

MOVAL,82H;方式控制字為82HOUTDX,AL;寫入方式字

MOVAH,16;設置讀B口的狀態次數

PORTB:MOVDX,21DH;指向B口地址

INAL,DX;讀口B的狀態

ANDAL,0FH;判斷口B的狀態

MOVBX,OFFSETSCODE;BX指向字形碼表首地址

XLAT;查字形碼表,取出對應的字形碼

MOVDX,21CH;指向A口地址

OUTDX,AL;將取出的字形碼送A口由LED顯示

MOVCX,8F00H;設置顯示延時常數

DELAY:LOOPDELAY;延時顯示時間(見實驗指導P21)

DECAH;讀B口狀態次數減1JNZPORTB;次數不為0返回,繼續讀B口狀態

MOVAH,4CH;次數為0,程序中止

INT21HCODEENDSENDSTART思考:此程序運行最終結果?(125ms×16=2s)85并行接口一般稱為Centronics接口,現在也稱IEEE1284,最早由CentronicsDataComputerCorporation公司在60年代中期制定。Centronics公司當初是為點陣行式打印機設計的并行接口,1981年被IBM公司采用,后來成為IBMPC計算機的標準配置。它采用了當時已成為主流的TTL電平,每次單向并行傳輸1字節(8-bit)數據,速度高于當時的串行接口(每次只能傳輸1bit),獲得廣泛應用,成為打印機的接口標準。868.2.5三線聯絡舉例

—CENTRONICS打印接口圖8.27CENTRONICS打印機的聯絡

87圖8.28聯絡波形0.5us①②③88898.2.6IEEE-488總線及其三線聯絡

IEEE-488總線的最大特點是可以實現一發多收的傳輸。為此,它使用三線聯絡規程,以保證這種傳輸的可靠實現。又稱為可編程儀表總線(GPIB)*圖8.29IEEE-488的三線聯絡

918.3DMA傳輸和DMA控制器本節將介紹DMA控制器(DMAC)的分類、構成、工作原理及應用舉例。928.3.1

DMA傳輸及DMA控制器1.DMA傳輸原理:在存儲器與外設接口間的直接數據傳輸2.DMAC的功能:兩重功能:一方面它可以作為從設備,它的工作要受CPU的管理。

另一方面它可以作為主設備,DMAC具有總線主設備(MASTER)的功能。

938.3.2

DMA控制器的分類按通用性來分,有專用DMAC和通用DMAC專用DMAC:為某個特定外設專門設計通用DMAC:可用于任何外設的I/O傳輸94圖8.30專用DMAC的工作原理

總線請求總線響應I/O接口的DMAREQ是在DMAC/IO接口內部產生的,若該請求優先,就向CPU發出總線請求BR。CPU對該信號的響應是發出BA(總線響應),并釋放總線。DMAC獲得總線后,開始使用總線進行DMA傳輸:若是輸出,就從存儲器單元讀取數據到I/O接口的輸出數據寄存器;若是輸入,就把I/O接口輸入數據寄存器的數據寫入指定的存儲器單元。如沒有數據要繼續傳輸,DMAC就釋放總線。可見,專用DMAC的DMA傳輸中,總線上只有對存儲器的操作周期,且一個總線周期實現一次DMA傳輸。而對I/O的操作是在DMAC/IO接口內部完成的。95

圖8.31通用DMAC的工作原理通用DMAC可用于任何外設的I/O傳輸,只要把該I/O接口的傳輸請求接到DMAC的DREQ輸入即可,如上圖所示。而在CPU對DMAC初始化過程中,告訴它所控制的通用DMAC,可實現存儲器到I/O、I/O到存儲器、存儲器到存儲器、I/O到I/O的傳輸。96

圖8.32雙地址DMAC的傳送過程

雙地址DMAC的內部含有獨立的可編程的源口和目的口。任一口可以是存儲口或I/O口,且對這兩個口都是顯尋址。這樣,DMAC和CPU對這些口的訪問是完全一樣的。因此它們可共用同一套(存儲器和I/O)地址澤碼器,所以接口電路簡單。但一次DMA傳送需要兩個總線周期:讀源口數據到DMAC內暫存,再把暫存的數據寫到目的口。97圖8.33單地址DMAC傳輸的原理

單地址DMAC的內部只有一個口,即存儲器口。在DMA傳輸期間,DMAC同時發出存儲器訪問和I/O訪問命令,存儲器和I/O間的傳送在一個總線周期內完成,如上圖所示,它對存儲口的訪問和CPU一樣,是顯尋址,而對I/O目采用隱尋址,即不給出I/O口的地址,只給出一條信號線DACK。I/O接口要用這條線來選中特定I/O接口的特定寄存器——數據寄存器。98圖8.34單地址DMAC傳輸的

I/O接口設計/CS信號的形成包括CPU訪問和DMA訪問兩部分:CPU訪問是地址訪問,要由地址線上I/O地址的高位譯碼得出。而DMA訪問是單線(/DACKi)選中。且DMA訪問時,應禁止I/O地址譯碼(此時地址線上是存儲器地址)。

RS是I/O接口內的寄存器選擇線。CPU訪問時,是I/O地址的低位線;而DMA訪問時,是選中特定的數據寄存器。所以,這兩種寄存器選擇信號要經過多路轉換電路(復用器)來切換。單地址DMAC有很多優點:在進行DMA傳輸時,一次傳輸只需要一個總線周期,即讀源口和寫目的口是在同一總線周期內完成的,它把源口數據直接寫到目的口(見圖8.

33)。直接傳輸只與數據總線寬度有關,而與DMAC的數據總線寬度無關。因此,8位DMAC(如8237)可以實現8位/16位/32位/64位的DMA傳輸。一般來說,單地址DMAC比雙地址DMAC簡單,一片DMAC內可容納2個至4個DMA通道。99

圖8.35單地址DMAC管理8255A選通輸出SA9A8A7A6A5A4A3A2A1A001000010XX108H~10BH系統地址線系統數據線1008.3.3源口及目的口的構成

起始地址寄存器:保存起始地址值(CR)

地址計數器:隨傳輸變化塊長寄存器:數據塊的大小(SR)

塊計數器:指示剩余的數據傳輸數(SR)

1018.3.4DMAC的工作類型和DMA傳輸方式1.DMAC的工作類型:MM,MI/O,I/OI/O2.DMA傳輸方式(1)連續傳送(continuous)或稱塊傳送

(2)單次傳送(single)(3)按需傳送(ondemand/burst)1028.3.5DMA請求的生成方式(1)內部請求:內部觸發或軟件請求(MM)

(2)外部請求:外部設備請求DMA傳輸(

MI/O,I/OI/O)其觸發方式分為沿觸發和電平觸發

1038.3.6DMAC的時序控制能力DMA傳輸期間,DMAC作為總線主設備,它應具備CPU關于總線傳輸控制器的一切功能。一些DMAC還具有總線周期控制能力。

有的DMAC還有命令長度控制能力

1048.3.7DMAC的塊鏈接能力1.自動重裝入能力(無需CPU干預,可變塊需設置)2.較強的塊鏈接能力(1)數組鏈鏈接:P344圖8.37所示(順序)(2)環鏈鏈接:P345圖8.38所示(跳轉)1058.3.8DMAC的中斷源DMAC一般具有塊結束中斷能力。這是它作為傳輸控制器的基本能力。該事件出現時,應請求CPU給出下一個DMA傳送參數,實現不間斷的傳輸。

106*8.3.9DMA控制器芯片舉例1.8237接口信號與內部結構1078237內部邏輯框圖1088237的引腳功能說明(1)時序和控制邏輯:

CLK時鐘

CS片選

RESET復位

READY就緒

AEN地址允許

ADSTB地址選通輸出

MEMR存儲器讀輸出

MEMW存儲器寫輸出

IOR外設讀

IOW外設寫

EOP過程結束109(2)優先編碼邏輯:

DREQ3~0四個通道請求信號

HRQ總線請求輸出信號

HLDA總線保持響應輸出信號

DACK3~0四個通道DMA應答信號(3)程序命令控制邏輯:A3A2A1A0讀操作寫操作1000讀狀態寄存器寫命令寄存器1001無效寫請求寄存器1010無效寫單個通道屏蔽1011無效寫方式寄存器1100無效清除先/后寄存器1101讀暫存寄存器主清除(復位芯片)1110無效清除主屏蔽寄存器1111無效寫主屏蔽寄存器110(4)數據地址緩沖器:

A3~A0低4位地址線(三態雙向輸入/輸出)

A7~A4高4位地址線(三態輸出)

DB0~DB78位雙向數據線8237的特點①具有4個獨立的DMA通道,每個通道都可獨立地進行初始化。②每個通道的DMA請求都可以被允許或禁止。③每個通道的DMA有不同的優先級,既可以是固定優先級,也可以是循環優先級。④每個通道進行一次傳送的最大字節數為64K。⑤提供4種傳送方式:單字節傳送方式、數據塊傳送方式、請求傳送方式和級聯傳送方式。⑥時鐘頻率可從0到5MHz。⑦在5MHz的時鐘頻率下傳送速率高達1.6MB/s。1128237內部寄存器的功能及格式

一、內部寄存器的主要功能1132.主要性能1)、單字節傳輸方式2)、塊傳輸方式3)、請求傳輸方式4)、級聯方式1143.存儲器和I/O地址的生成8237A只有16位地址線,為單地址DMAC,對I/O設備采用隱尋址,用DACK代替CS及地址譯碼器。對20位、24位、32位的地址總線,需DMA頁面寄存器產生高位地址。P349圖8.42為PC系列DMAC的地址生成P349圖8.43為頁面寄存器工作原理1154.命令和狀態寄存器每一個通道有四個寄存器和各通道共用寄存器1.通道工作方式控制寄存器

1162.全局命令控制寄存器

1173.屏蔽寄存器

4.單個通道屏蔽寄存器

1185.通道軟件請求寄存器

1197.主清除命令和清除先/后觸發器命令

主清除命令與RESET功能相同清除先/后觸發器命令:對16位的寄存器,觸發器為0,操作為低字節;觸發器為1,則操作為高字節。6.通道狀態狀態寄存器1208237主要寄存器的端口地址分配P350表8.4121

8237編程的一般步驟1)發送主清除命令2)寫入基地址和當前字節數寄存器3)寫入基字節數和當前字節數寄存器4)寫入模式寄存器5)寫入屏蔽寄存器6)寫入控制寄存器----硬件:由通道的DREQ啟動DMA傳送7)寫入請求寄存器----軟件:寫入指定的通道8237DMA控制器的編程及應用軟命令1)清先/后觸發器軟命令MOV AL,0XXH ;0XXH為AL中任意值OUT 0CH,AL ;先/后觸發器被清“0”2)總清除軟命令MOVAL,0XXH ;0XXH為AL中任意值OUT 0DH,AL ;寫入總清端口,執行總清除命令3)清屏蔽寄存器軟命令。MOVAL,0XXH;0XXH為AL中任意值OUT0EH,AL ;寫入清屏蔽寄存器端口DMA控制器的讀寫時序

DMA空閑周期SIDMA過渡狀態S0DMA操作周期(S1、S2、S3、S4)

8237內部狀態變化流程124DMA編程和應用舉例

8237的初始化編程◆初始化編程的步驟:①命令字寫入控制寄存器②屏蔽字寫入屏蔽寄存器③方式字寫入方式寄存器④清“0”先/后觸發器⑤寫入地址寄存器字節寄存器⑥解除屏蔽⑦寫入請求寄存器1268237的應用舉例

1.8237DMAC的級聯1272.如何擴展82C37ADMAC的尋址空間128

3.應用舉例現假設在級聯的8237的主片通道1,將內存其始地址為80000H的280H字節的內容直接輸出到外部設備。

MOV AL,4 ;命令字,禁止8237工作

OUT 08,AL ;寫命令寄存器

MOV AL,0 OUT 0CH,AL ;清除先/后觸發器

OUT 02,AL ;寫低位地址

OUT 02,AL ;寫高位地址

MOV AL,8 ;頁面地址為8OUT 83H,AL;寫頁面寄存器

MOV AX,280H;傳輸字節數

DEC AXOUT 03,AL;寫字節數低位

MOV AL,AH OUT 03,AL ;寫字節數高位

MOV AL,49H ;模式字:單字節讀,地址加1 OUT 0BH,ALMOVAL,40H ;命令字:DACK和DREQ低有效

OUT 08H,AL ;正常時序,固定優先權

MOVAL,01 ;清除通道1屏蔽

OUT 0AH,ALWAITF: IN AL,08 ;讀通道1狀態

AND AL,02 ;傳輸完成否

JZ WAITF ;沒完成則等待

MOVAL,05;完成后屏蔽通道1 OUT 0A,AL

……

1318.4串行傳輸及串行接口

8.4.1串行傳輸的應用串行傳輸是位串行、字節串行的傳輸方式。適合遠距離傳輸,可減少傳輸線路的硬件投資費用。(Modem)除了遠距離傳輸外,隨著設備的小型化,管腳和布線所占面積的比例越來越大,出現了各種交換信息的串行總線標準。

串行異步通信標準接口常用的有RS-232C、RS-485及20mA電流環等,應用最廣的是RS-232C標準接口串行通信系統傳輸結構數據終端設備DTE——數據源和目的地數據通信設備DCE——使數據符合線路要求1338.4.2串行傳輸需要解決的問題1.同步:位同步、字節同步、數據塊同步2.差錯控制:檢驗、糾錯(奇偶、循環冗余)3.通信協議(規程):規定了通信鏈路的建立和解除、命令和響應以及出錯時的恢復等各種約定。是雙方保證可靠通信時必須遵守的協議。1348.4.3串行傳輸的信息格式1.異步格式所謂異步是指兩個字符(字節)的對應瞬間的時間間隔是“不等長”的,即,字符間隔是可變的,波形如圖8.50所示。135

圖8.50起止式異步傳輸信息格式

高電平為傳號電平,低電平為空號電平。傳輸數據時低位在前,高位在后。傳輸方向1、接收部分2、發送部分D7D0THR低位到高位串行移位到SOUT引腳輸出……接收移位寄存器發送移位寄存器RBR低位到高位從SIN引腳串行移位進來D7D0CPU來的8位數據并行進入THR8位數據并行輸出至CPU

發送保持寄存器THR接收緩沖寄存器RBR1371382.同步格式同步傳輸的信息格式有如下幾種:(1)外同步格式(2)內同步格式1398.4.4串行接口標準

1.電流環標準早期應用于電傳打字機的遠距離傳輸標準,采用20mA電流的有或無表示二進制信息,在發、接端采用光電耦合,具有隔離度好、抗干擾能力強的特點,但傳輸效率不高。1402.RS-232標準RS-232C接口采用的是負邏輯,其邏輯電平與TTL電平不一樣,不能兼容。因此,為了實現與TTL電路的連接,必須進行電平轉換。

對于數據線:邏輯“1”(MARK)=-3V~-15V, 邏輯“0”(SPACE)=+3V~

+15V對于控制信號:接通狀態(ON)即信號有效的電平=+3V~15V

斷開狀態(OUT)即信號無效的電平=-3Ⅴ~

-15V。TTL-EIA電平轉換:141

目前可以使用新型電平轉換芯片MAX232和MAX232A(高速)其內置雙組RS-232C發送/接收器,實現TTL電平與RS-232C電平雙向轉換。1429針D型插座引腳引腳名稱含義1CD載波檢測(輸入)2RXD接收數據線(輸入)3TXD發送數據線(輸出)4DTRDTE就緒(輸出)--應答信號5GNG信號地6DSRDCE就緒(輸入)7RTS請求發送(輸出)8CTS清除發送(輸入)9RI振鈴指示(輸入)143連接器DB-9、DB-25插座144共模噪聲干擾對串行傳輸的影響:

RS-232C由于在發送器與接收器之間有公共信號地,不可能使用雙端信號,因此共模噪聲很容易引入信號系統中,且噪聲幅度可高達好幾伏,這是迫使RS-232C使用較高傳輸電壓的主要原因。另一個原因是為了補償傳輸線上的信號衰減和沿線附加電平的影響。RS-232的局限RS-232C采用單端驅動、單端接收的單端雙極性電路標準。僅用一條線路傳輸一種信號,根據該信號線上電平相對于公共的信號地電平的大小來決定邏輯的“1”和“0”。對于多條信號線來講,它們的地線是公共的,這種共地傳輸方式,抗干擾能力很差。盡管采用電平轉換器來提高信號傳輸電平,但在較長距離時,由于電壓損失,仍不可避免錯誤。當信號穿過電磁干擾環境時,也可能因附加的干擾信號電平使發送的“0”變為“1”或“1”變為“0”。故其信號波特率不能過高,僅限在20Kb/s以下,且距離不大于15m。1463.RS-485標準

RS-485接口標準是一種平衡傳輸方式的串行接口標準,這個標準的電氣特性對邏輯電平的定義是根據兩條傳輸線之間的電位差值來決定的,當AA‘線的電平比BB'線的電平高200mⅤ時表示邏輯“1”,當AA'線的電平比BB'線的電平低200mV時表示邏輯“0”。

RS-485標準允許在電路中可有32個發送器和32個接收器。允許一個發送器驅動多個負載設備,負載設備可以是驅動發送器、接收器或收發器組合單元。

RS-485的共線電路結構是在一對平衡傳輸線的兩端都配置終端電阻,其發送器、接收器和組合收發器可掛在平衡傳輸線上的任何位置,實現在數據傳輸中多個驅動器和接收器共用同一傳輸線的多點應用。

由于RS-485標準采用差動發送/接收,因此共模抑制比高、抗干擾能力強,傳輸速率高,最大傳輸速率可達10Mb/s(傳送15m),傳輸信號的擺幅小(200mV),傳送距離遠,采用雙絞線,在不用MODEM的情況下,當100Kb/s的傳輸速率時,可傳送的距離為1.2km。148*8.4.5串行接口芯片舉例常見的UART主要有INTEL8250、PC16450和PC16550。此外,還有帶更大緩沖的UART,稱為PC16650和PC16750。其中16550與8250完全兼容,本節以INTEL8250為例介紹。PC微機異步通信適配器是微機與微機、微機與MODEM及微機與外設之間進行異步通信的接口。其核心是UART,即通用異步收發器。

1498250的接口信號和內部結構INS8250外部引腳150(1)時鐘與電源信號XTAL1晶振基準時鐘輸入端XTAL2晶振基準時鐘輸入端Vcc

電源+5V端GND接地端(2)雙向數據信號線D7~D0八位數據信號線(與系統總線連接)(3)輸入信號引線CS0,CS1和

CS2片選線,片選條件是‘與’關系ADS地址選通線(鎖存片選和內部寄存器選擇)DISTR和DISTR數據輸入選通。(讀寄存器允許)

DOSTR和DOSTR數據輸出選通。(寫寄存器允許)

A0,A1和A2內部寄存器選擇。

MR主復位輸入。

RCLK接收時鐘輸入。可和BAUDOUT相接SIN串行數據輸入。

CTS清除發送,輸入線。

DSR數據設備就緒,輸入線

RLSD接收線路信號檢測,輸入線。

溫馨提示

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

評論

0/150

提交評論