第7章.可編程接口芯片_第1頁
第7章.可編程接口芯片_第2頁
第7章.可編程接口芯片_第3頁
第7章.可編程接口芯片_第4頁
第7章.可編程接口芯片_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章

可編程接口芯片

可編程接口的概念可編程并行輸入/輸出接口芯片8255A可編程定時/計數器接口芯片8253

可編程接口的概念

一個簡單的具有輸入功能和輸出功能的可編程接口電路如下圖,它包括一個輸入接口,其組成主要是八位的三態(tài)門;一個輸出接口,其組成主要是八位的鎖存器;另外還有八位的多路轉換開關及控制這個開關的寄存器FF。

用戶對寄存器FF寫入的內容稱為命令字或方式控制字,而寄存器FF稱為命令寄存器,相應的端口稱為命令端口或控制端口。

對可編程芯片初始化過程實際上就是對芯片的控制端口寫入各種命令字的操作過程。

將要學習的可編程接口芯片如下:8255A 并行I/O接口8253 計數器/定時器8251 串行I/O8259A 中斷控制器

7.1可編程并行輸入/輸出接口芯片8255A一、功能

8255A是一種通用的可編程并行I/O接口芯片,廣泛用于幾乎所有系列的微型機系統(tǒng)中,如8086、MCS51、Z80CPU系統(tǒng)等。8255A具有3個帶鎖存或緩沖的雙向數據端口,可與外設并行進行數據交換。用戶可用程序來選擇多種操作方式,通用性強。使用靈活,可為CPU與外設之間提供并行輸入/輸出通道。

二、8255A的內部結構

數據端口A、B、C端口A端口B端口CA組控制和B組控制讀/寫控制邏輯電路數據總線緩沖器通常使用方法:1、A、B、C三個端口各自獨立工作。2、端口A、B作為獨立的輸入或者輸出端口端口C配合端口A、B

三、8255A的管腳分配

數據總線緩沖器內部控制線內部數據線D0~D7A組控制A組端口C上部B組控制B組端口BB組端口C下部讀寫控制邏輯PC0~PC3CL口PB0~PB7B口PC4~PC7CH口PA0~PA7A口-RD-WRA0A1-CSRESETA組端口A1、與外設連接的管腳

我們已經知道8255A有三個數據端口,每個端口是8位的,由此可推算與外設相連接的管腳共有24位。

其中A口有PA7—PA0八個I/O引腳,B口有PB7—PB0八個I/O引腳,C口有PC7—PC0八個I/O引腳。特別地對于PC7—PC0,其中可有若干根復用線可用于“聯(lián)絡”信號或狀態(tài)信號,其具體定義與端口的工作方式有關。

2、與CPU連接的管腳

包括數據線D7—D0,讀寫控制線和,復位線RESET,以及和CPU地址線相連接的片選信號、端口地址控制線A0和A1。CSA1A0I/O地址讀操作RD寫操作WR00000101001160H61H62H63H讀端口A讀端口B讀端口C非法寫端口A寫端口B寫端口C寫方式字和位控字3、電源線和地線

8255A的電源引腳為VCC和GND。VCC為電源線,一般?。?V。GND為電源地線。四、8255A的編程

所謂8255A編程,就是用戶在使用8255前,用戶可用軟件來定義端口的工作方式,選擇所需要的功能。8255A的控制字控制字分為兩類:各端口的方式選擇控制字C端口按位置1/清0控制字

(1).方式選擇控制字

有三種基本工作方式:方式0——基本的輸入/輸出方式方式1——選通的輸入/輸出方式方式2——雙向傳輸方式只有端口A能工作在方式2同一組的兩端口可分別工作在輸入和輸出方式方式選擇控制字的格式向控制口寫方式字——示例要求:A口:方式1輸入CH口:輸出CL口:輸入B口:方式0輸出方式控制字:10110001B或B1H初始化的程序段: movdx,0fffeh ;假設控制端口為FFFEH moval,0b1h ;方式控制字 outdx,al ;送到控制端口(2).C口置“1”/清“0”控制字置“1”又稱為置位操作,而清“0”稱為復位操作。

(1)方式0:基本輸入輸出方式特點:24條I/O線由用戶自定義使用,無固定的聯(lián)絡信號線。應用:無條件輸入輸出

查詢輸入輸出五、8255A的三種工作方式及舉例

8255方式0應用舉例(簡單輸入輸出)

218255方式0應用舉例(簡單輸入輸出)例:請用8255和24個發(fā)光二極管,制作一個節(jié)日彩燈,設計方案,畫出硬件連接圖并寫出初始化程序和驅動程序。初始化程序:MOVAL,80H10000000OUT87H,AL驅動程序:LIGHT:MOVAL,00HOUT84H,ALOUT85H,ALOUT86H,AL228255方式0應用舉例(簡單輸入輸出)MOVAL,FFHOUT84H,ALCALLDELAYMOVAL,00HOUT84H,ALMOVAL,FFHOUT85H,ALCALLDELAYMOVAL,00HOUT85H,ALMOVAL,FFHOUT86H,AL238255方式0應用舉例(簡單輸入輸出)CALLDELAYMOVAL,00HOUT86H,ALJMPLIGHT

例1:8255A的A口和B口工作在方式0,A口為輸入端口,接有四個開關。B口為輸出端,接有一個七段發(fā)光二極管,連接電路如圖所示。試編一程序要求七段發(fā)光二極管顯示開關所撥通的數字。

電路LED數碼管段碼表

……moval,90h ;設置8255方式字movdx,ctrl_portoutdx,almovdx,a_portinal,dx ;取鍵盤信息andal,0fh ;屏蔽高4位movbx,offsettab1 ;取段碼表首地址xlat ;查表得段碼movdx,b_port ;輸出顯示outdx,al(2)方式1:選通輸入輸出方式特點:24條I/O線中有固定的聯(lián)絡信號線(C口提供),被規(guī)定的聯(lián)絡信號線用戶不能隨便使用;A、B口作為數據端口,C口提供固定的聯(lián)絡信號線。應用:可用于查詢方式或中斷方式。方式1輸入引腳:端口APC4PC5PC3PA7~PA0INTEAIBFAINTRA-STBA中斷允許觸發(fā)器輸入緩沖器滿信號表示A口已經接收數據數據選通信號表示外設已經準備好數據中斷請求信號請求CPU接收數據外設數據征用C口3引腳-RD方式1輸入引腳:端口BPC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB中斷允許觸發(fā)器輸入緩沖器滿信號表示B口已經接收數據數據選通信號表示外設已經準備好數據中斷請求信號請求CPU接收數據外設數據征用C口3引腳-RD方式1中斷控制8255A的中斷由中斷允許觸發(fā)器INTE控制置位允許中斷,復位禁止中斷對INTE的操作通過寫入端口C的對應位實現,INTE觸發(fā)器對應端口C的位是作應答聯(lián)絡信號的輸入信號的哪一位,只要對那一位置位/復位就可以控制INTE觸發(fā)器選通輸入方式下端口A的INTEA對應PC4端口B的INTEB對應PC2讀入狀態(tài)字

當8255A由程序設定在方式1或方式2工作時,C口就根據不同的情況,產生或接收“聯(lián)絡”信號。如果這時我們對C口進行讀操作,則讀出的內容就包含兩部分內容,一部分是那些作為I/O線上的內容,另一部分是與“聯(lián)絡”狀態(tài)有關的內容。D7D6D5D4D3D2D1D0方式1輸入(A口、B口)I/OI/OIBFAINTEAINTRAINTEBIBFBINTRB方式1輸出(A口、B口)OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式2雙向(A口)OBFAINTE1IBFAINTE2INTRA×××從端口C讀到狀態(tài)字A組控制B組控制方式1輸出引腳:端口APC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA輸出緩沖器滿信號表示CPU已經輸出了數據外設響應信號表示外設已經接收到數據中斷請求信號請求CPU再次輸出數據征用C口3引腳中斷允許觸發(fā)器通過位控PC6

設置INTEA輸出數據-WR方式1輸出引腳:端口BPC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB輸出緩沖器滿信號表示CPU已經輸出了數據外設響應信號表示外設已經接收到數據中斷請求信號請求CPU再次輸出數據征用C口3引腳中斷允許觸發(fā)器通過位控PC2設置INTEB輸出數據-WR方式1時輸出端口對應的控制信號和狀態(tài)信號

OBF——輸出緩沖器滿信號,低電平有效8255A輸出給外設的一個控制信號,當其有效時,表示CPU已將輸出數據鎖存在8255A指定的端口,外設可以來取ACK——響應信號,低電平有效外設提供的響應信號,通知8255A其端口數據已被外設接收INTR——中斷請求信號,高有效當輸出設備已接受數據后,8255A輸出此信號向CPU提出中斷請求,要求CPU繼續(xù)提供數據端口A的INTEA對應PC6,

端口B的INTEB對應PC2例2:8255A的A口和B口分別工作在方式1和方式0,A口為輸入端口,接有8個開關。B口為輸出端,接有8個發(fā)光二極管,連接電路如圖所示。現要求用方式1把改變后的鍵信息輸入到CPU并通過B口顯示。

這個系統(tǒng)的工作過程如下:

1、用戶通過改變K0~K7,產生新的鍵信息;

2、按下開關K,產生選通信號,數據進入A口的緩沖器,

此步驟實際上告訴CPU,8255的A口來了一個新數據;

3、IBFA有效使LED點亮。這里含有兩個信息,一個是8255A通知CPU其A口來了一個新數據,另一個是告訴用戶CPU尚未取走這個這個數據,用戶不得再送其他數據;

4、CPU取走這個數據,LED熄滅;

5、轉步驟1。

設8255的I/O地址分布為88H—8EH,相應的程序段如下: (查詢方式)

moval,10111001b ;設置A口為方式1的輸入,

out8eh,alloop1:inal,8ch ;取C口的狀態(tài)線

testal,00100000b ;測試IBFA信息

jzloop1 ;等待用戶設定新的鍵值

movcx,0ffffh ;延時,LED燈亮(相對于步驟3)loop2:looploop2 inal,88h ;取數。LED燈滅(相對于步驟4)

out8ah,al ;更新B口的顯示

jmploop1 ;重復

例3:8255A的A口工作在方式1的輸出,接有8個發(fā)光二極管,現要求把內存中的10個數,通過A口發(fā)送給發(fā)光二極管以二進制的形式供用戶抄錄。這個系統(tǒng)的工作過程如下:

1、

CPU把內存中的一個數據寫入A口;

2、

LED燈亮,告訴用戶LED顯示的是新數據;

3、

用戶抄錄數據;

4、

用戶按下開關K,發(fā)ACK信號,告訴CPU數據已取走;

轉第一步。

movcx,10 ;送10個數

movbx,offsetxx ;數組指針送bx loop1: moval,[bx] ;取數

out88h,al ;送數到A口

loop2: inal,8ch ;取C口狀態(tài)線

anlal,80h ;測試OBFA jnzloop2

calldelay

;用戶已抄錄數據,LED燈滅(對 ;應步驟4)

incbx ;準備送下一個數

looploop1 ;循環(huán)10次3.方式2

方式2的特點雙向的選通方式I/O只適用于端口A端口C用5個數位提供控制和狀態(tài)信號

如果設定某個8255A的A口和B口分別工作在方式2和方式1下,則這個8255A的C口的I/O功能將不在存在。當然如果B口是工作在方式0下,則C口還有3根線可作I/O線用。A端口工作于方式2,B端口工作于方式0輸入情況

方式2的控制信號

方式2雙向選通引腳PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2數據輸入中斷和輸出中斷通過或門輸出INTRA信號征用C口5引腳中斷允許觸發(fā)器(控制中斷輸出)通過位控PC6設置INTE1中斷允許觸發(fā)器(控制中斷輸出)通過位控PC4設置INTE2輸入聯(lián)絡輸出聯(lián)絡六、8255應用舉例1、與打印機接口例4:在某一8086系統(tǒng)中接有一個打印機,8255A作為輸出接口。工作在方式0,試編一程序將緩沖區(qū)BUFF內的400H個字節(jié)的ACK碼送打印機打印。

打印機具體工作過程如下:1、數據線D7—D0出現有效數據;2、STB有效,通知打印機,接口給打印機一個數據,數據從數據線進入打印機;3、BUSY有效,告訴接口,打印機正在打印數據。打印完畢,BUSY變?yōu)闊o效,表示打印結束。print_data proc ;打印子程序,入口在dl中print1: inal,c_port ;無條件讀C口數據

testal,00010000b ;測試busy線

jnzprint1 ;busy有效,循環(huán)測試

moval,dl outa_port,al ;打印數據進入A口

moval,00000000b ;發(fā)選通信號

outctrl_port,al moval,00000001b outctrl_port,al ret ;返回主程序print_datA endp2、人機交互接口——動態(tài)顯示例5、常用的顯示稱為動態(tài)顯示,它采用掃描顯示技術,可以使硬件開銷降低很多。對于一個8位數據顯示,它就需要兩個輸出端口就可以了。其電路如圖所示。在兩個輸出端口中,一個稱為段信號通道,它用來輸出要顯示數據的段碼;另一個稱為位信號通道,用來決定當前要顯示數據的位置。

動態(tài)顯示電路圖顯示系統(tǒng)的具體工作步驟如下:

a、

設要顯示的初始位碼i=0;

b、

送第i位的段信號;

c、

送第i位的位信號;

d、

延時;

e、

i+1->i

f、

如果i小于8,轉b

g、

8位數據顯示結束。

程序如下:

a_port equ80h ;定義8255A的四個端口

b_port equ82h c_port equ84h ctrl_portequ86h…… data segment ;定義數據段

tab1 db3FH,06H,5BH,4FH,……, ;定義段碼表

dispbuff db2,0,0,2,0,8,2,2 ;定義顯示緩沖區(qū)

data ends3、人機交互接口——鍵盤掃描例6、圖所示為矩陣式鍵盤電路,其特點是由按鍵組成一個矩陣,矩陣的行線和列線分別作為兩個傳輸方向相反的I/O接口信號線,比如行線作為輸入接口信號線,列線作為輸出接口信號線,或反之。鍵盤掃描電路圖

在翻轉法中,行列線交換輸入、輸出,兩步就可獲取鍵位置信息??梢娺@種方法要比掃描法效率高。雙機并行通信接口PA0~PA7PC4PC08255A甲方(發(fā)送)方式1輸出PA0~PA7PC7PC68255A乙方(接收)方式0輸入-OBF-ACKCPU查詢引腳輸入有效時,讀數據并輸出應答信號兩機均采用查詢方式工作CPU查詢輸出緩沖器狀態(tài)甲機的初始化 movdx,0fffeh moval,0a0h

;方式字10100000:A口方式1輸出 outdx,al moval,0ch;令INTEA(PC6

)=0,屏蔽中斷 outdx,al甲機發(fā)送程序 movdx,0fff8h ;發(fā)送數據 moval,ah outdx,altrsmt:movdx,0fffch;C口地址 inal,dx;讀C口 andal,80h;查詢OBF(PC7) jztrsmt ;為0,說明乙機未響應,繼續(xù)查乙機的初始化

movdx,0fffeh moval,98h;方式字10011000:A口方式0輸入 outdx,al moval,01h;令應答信號(PC0

)=1(初始無效) outdx,al乙機:查詢接收receive: movdx,0fffch inal,dx ;讀C口 andal,10h ;查詢甲機的寫選通信號(PC4

) jnzreceive ;為1時無效(甲未發(fā)數據), ;繼續(xù)查詢

movdx,0fff8h ;接收數據 inal,dx movah,al;數據保存于ah乙機:接收響應 movdx,0fffeh moval,00h;應答信號(PC0

)=0(有效)

outdx,al nop;適當延時,產生一定寬度的有效負脈沖 nop moval,01h;應答信號(PC0

)=1(無效)

outdx,al例題(打印機)一臺打印機通過并行接口8255輸出數據,從內存Buff單元開始緩沖中的250個字符送出打?。?)要求用查詢方式(2)用中斷方式66打印機主機把數據送給引腳DATA0~DATA7同時送出數據選通信號-STROBE打印期間,打印機在BUSY信號線上發(fā)出忙信號打印機處理好輸入的數據時撤消忙信號同時又送出一個響應信號-ACKBUSY

DATA0~78255APC7PC2PA0~PA7打印機-STROBE8255方式0應用舉例(應答輸入輸出)8255A的初始化 movdx,0fffeh ;控制口地址:FFFEH moval,10000001B ;方式控制字:81H outdx,al ;A口方式0輸出,CH輸出、CL輸入 moval,00001111B ;位控字,令PC7=1,即-STROBE無效 outdx,al打印子程序:查詢printc proc pushax pushdxprn: movdx,0fffch ;讀取端口C inal,dx ;查詢打印機狀態(tài) andal,04h ;測試PC2(BUSY) jnzprn ;為1,打印機忙,則循環(huán)等待打印子程序:輸出 movdx,0fff8h;為0,打印機不忙,則輸出數據 moval,ah outdx,al ;將打印數據從端口A輸出打印子程序:打印

movdx,0fffeh ;從PC7送出控制負脈沖 moval,00001110B ;置-STROBE=0(有效) outdx,al nop ;產生一定寬度的負脈沖 nop moval,00001111B ;置-STROBE=1(無效) outdx,al;打印機-STROBE端輸入負脈沖打印子程序:返回

popdx popax retprintc endp用8255A方式1與打印機接口(中斷)1000pf2K15321441LS123單穩(wěn)電路+5VDATA0~78255APC6INTRPC3PC7PA0~PA7打印機-ACK-ACK-OBF-STROBE調整-STROBE負脈沖的寬度中斷方式主程序;MOVDX,303HMOVAL,A0H;端口A方式1輸出OUTDX,ALMOVAL,0DH;pc6置1,中斷允許OUTDX,ALMOVAL,0FH;pc7置1,輸出緩沖器空OUTDX,ALSTI75中斷服務程序:MOVAL,[SI];輸出數據首地址MOVDX,300H;端口A地址OUTDX,ALMOVDX,303HMOVAL,0EH;輸出緩沖器滿,并同時輸出給打印機負脈沖OUTDX,ALNOPMOVAL,0FHOUTDX,ALIRET8255A方式1與打印機接口時序配合PA0~PA7(DATA0~7)-ACK-OBF-STROBE打印機在方式1工作時的時序8255端口A方式1查詢方式下的初始化

movdx,0fffeh moval,0a0h;方式字10100000 outdx,al moval,0ch;位控字,令INTEA(PC6)為0,禁止中斷 outdx,al …… movcx,counter ;打印字節(jié)數送CX movbx,offsetbuffer ;取字符串首地址 callprints ;調用打印子程序打印子程序:輸出prints proc pushax ;保護寄存器 pushdxprint1: moval,[bx] ;取一個數據 movdx,0fff8h outdx,al ;從端口A輸出

打印子程序:查詢 movdx,0fffchprint2: inal,dx testal,80h ;檢測PC7,即-OBFA狀態(tài) jzprint2 ;為0,說明打印機方面未響應, ;繼續(xù)檢測

打印子程序:返回 incbx ;為1時打印機已接收數據 loopprint1 ;準備輸出下一個數據 popdx ;打印結束,恢復寄存器 popax ret ;返回prints endp7.2可編程定時/計數器接口芯片8253基礎是計數功能關于定時信號:軟件方法獲得硬件方法獲得一、功能

定時和脈沖信號的處理與接口是完全有別于并行信號的,其特點是信號形式簡單但需要連續(xù)檢測,下面介紹的INTEL8253可編程定時/計數器就是可以實現所要求這方面功能。8253內部有3個獨立的16位定時/計數器通道。計數器可按照二進制或十進制計數,計數和定時范圍可在1—65535之間改變,每個通道有6種工作方式,計數頻率可高達2MHz以上。計數器/定時器的應用:在多任務的分時系統(tǒng)中作為中斷信號實現程序的切換??赏鵌/O設備輸出精確的定時信號。作為一個可編程的波特率發(fā)生器。實現時間延遲。外部事件計數8253的工作原理二、8253的內部結構

預置寄存器GATECLKOUT減1計數器輸出鎖存器計數初值存于預置寄存器;在計數過程中,減法計數器的值不斷遞減,而預置寄存器中的預置不變。輸出鎖存器用于寫入鎖存命令時,鎖定當前計數值

地址由CS、A1、A0確定8253的端口尋址及基本操作寫入計數器0的初始值寫入計數器1的初始值寫入計數器2的初始值寫入控制寄存器控制字讀計數器0的當前值讀計數器1的當前值讀計數器2的當前值CSRDA1WRA0端口操作11110000000111001100101010100000000計數器0數器器1計數器2控制A1A0端口00110101三、8253的管腳分配

通道管腳數據線通道選擇控制線四、8253/8254的編程

控制字有兩類方式控制字8254的讀出控制字數制選擇SC1SC0M2RL1RL0BCDM0M1D7D6D5D4D3D2D1D0工作模式選擇000模式0001模式1X10模式2X11模式3100模式4101模式500計數器鎖存命令10只讀/寫高八位01只讀/寫低八位11先讀/寫低八位再讀/寫高八位00選計數器001選計數器110選計數器2讀/寫指示計數器選擇1—BCD計數0—二進制計數9.38253控制寄存器和控制字方式控制字8254讀出控制字計數初值與輸入時鐘(CLK)頻率及輸出波形(OUT)頻率有關系。定時:時間取決于CLK和計數初值(又叫時間常數),

定時時間=初值*計數時鐘周期初值=fclk/fout

或=Tout/Tclk計數:初值=統(tǒng)計個數9.3.28253計數初值編程命令包括兩類寫入命令,包括設置控制字命令設置初值命令鎖存命令讀出命令讀取計數器當前的值。對8254,還可讀取狀態(tài)字編程有3條原則必須遵守:對計數器設置初始值前必須先寫控制字。初始值設置時,要符合控制字中的格式規(guī)定,即只寫低位字節(jié)還是只寫高位字節(jié),或高低位字節(jié)都寫,控制字中一旦規(guī)定,具體初始值設定時就要一致。要讀取計數器的當前值和狀態(tài)字,必須用控制字先鎖定,才能讀取。例:選擇2號計數器,工作在模式3,計數初值為533H(2個字節(jié)),采用二進制計數。端口地址分配304H~307H。其初始化程序段為

MOVDX,307H;命令口

MOVAL,10110110B

;2號計數器的初始化命令字

OUTDX,AL;寫入命令寄存器

MOVDX,306H;2號計數器數據口

MOVAX,533H;計數初值

OUTDX,AL;選送低字節(jié)到2號計數器

MOVAL,AH;取高字節(jié)送ALOUTDX,AL;后送高字節(jié)到2號計數器6種工作方式計數結束產生中斷可重復觸發(fā)的單穩(wěn)態(tài)觸發(fā)器分頻器方波發(fā)生器軟件觸發(fā)的選通信號發(fā)生器硬件觸發(fā)的選通信號發(fā)生器五、8253的工作方式8253的工作方式的基本規(guī)則控制字寫入計數器之后,所有的控制邏輯電路立即復位,輸出端OUT就進入初始狀態(tài)(高電平或低電平)計數值寫入后,要經過一個CLK,計數執(zhí)行部件才開始計數在時鐘信號的上升沿,GATA信號被采集;在時鐘信號的下降沿,計數器作減1操作8253芯片的每個計數器通道都有6種工作方式可供選用,由方式控制字確定。熟悉每種工作方式的特點才能根據實際應用問題,選擇正確的工作方式每種工作方式的過程類似:⑴設定工作方式⑵設定計數初值[⑶硬件啟動]⑷計數初值進入減1計數器⑸每輸入一個時鐘計數器減1的計數過程⑹計數過程結束9.58253的工作模式1、方式0——計數結束中斷方式工作方式0有如下特點:a、門控信號GATE必須為1,計數器才能計數;b、計數時通道輸出端OUT一直為0;c、通道計數器計數到0后,OUT由0到1,同時計數器停止工作。2、方式1——可編程序的單獨負脈沖

方式1工作過程如下:a、門控信號GATE是觸發(fā)信號,上升沿有效。即開始計數是由GATE的上升沿觸發(fā)的;b、

觸發(fā)后,通道計數器開始計數,輸出端OUT由高變低;c、

計數器計數到0,OUT再由低變高。3、方式2——速率發(fā)生器方式2的特點如下:a、GATE門為1,計數器才能工作,對CLK端上的脈沖進行計數;b、當計數器“減”計數到1時,輸出端由高變低,再經過一個CLK周期,即計數器計數到0時,輸出端OUT又跳變?yōu)楦?。所以方?輸出周期性負脈沖信號,其寬度固定為一個CLK周期;c、當計數器的值減為0時,自動重新裝入計數初值,實現循環(huán)計數。4、方式3——方波發(fā)生器

方式2雖然可以作分頻電路,但其輸出是窄脈沖,如果是方波,就只有選方式35、方式4——軟件觸發(fā)方式方式4在工作過程中有以下特點:a、門控信號GATE為高電平,計數器開始減1計數,OUT維持高電平;b、當計數器減到0,輸出端OUT變低,再經過一個CLK輸入時鐘周期,OUT輸出又變高。6、方式5——硬件觸發(fā)方式這種工作方式同方式4很相似,當控制字寫入控制寄存器后,輸出端OUT變高。同方式4不同的一點是當計數值寫入通道計數器后,通道并未被觸發(fā),也就是計數器并不立即開始計數。只有當GATE信號的上升沿觸發(fā)通道后,通道計數器才開始計數。8253的六種工作方式可歸為兩類,一個是充當頻率發(fā)生器,另一類主要是作計數器來使用。下面我們就從這個角度來討論總結OUT和GATE門的作用。

8253的工作方式小結與頻率發(fā)生器有關的工作方式

8253有兩種方式與頻率發(fā)生器有關,即方式2和發(fā)生3,對OUT端,方式2提供給用戶的是負脈沖,方式3提供給用戶的是方波。在這個兩種方式下,GATE信號要始終保持為高。與計數器有關的工作方式

對于計數器類,有方式0、1和方式4、5。啟動計數器的方式有兩種,一種是CPU把時間常數寫入相應通道后,計數器就開始工作,我們可以稱之為軟件啟動方式,在這種啟動方式下,GATE要始終保持為高電平,所以方式0和方式4可以稱為軟件啟動方式。另一種是硬件啟動計數器,即CPU把時間常數寫入計數器后,即使GATE為高電平,計數器并不工作。只有GATE發(fā)生跳變,其上升沿啟動計數器工作,所以方式1和方式5就可以稱為硬件啟動方式。計數器溢出時,OUT有兩種輸出形式,要么是電平,要么是負脈沖。前者有方式0方式1,后者有方式4和方式5。

GATE模式低電平或下降沿上升沿高電平0計數停止進行或繼續(xù)計數1啟動計數2計數停止,輸出高電平開始計數進行計數3計數停止,輸出高電平開始計數進行計數4計數停止進行或繼續(xù)計數5啟動計數各種工作方式下GATE信號的作用GATA的作用六、8253應用舉例

例1:現有一個高精密晶體振蕩電路,輸出信號是脈沖波,頻率為1MHz。要求利用8253做一個秒信號發(fā)生器,其輸出接一發(fā)光二極管,以0.5秒點亮,0.5秒熄滅的方式閃爍指示。設8253的通道地址為80H~86H(偶地址)解:1、時間常數計算這個例子要求用8253作一個分頻電路,而且其輸出應該是方波,否則發(fā)光二極管不可能等間隔閃爍指示。頻率為1MHz信號的周期為1微妙,而1Hz信號的周期為1秒,所以分頻系數N可按下式進行計算:

由于8253一個通道最大的計數值是65536,所以對于N=1000000這樣的大數,一個通道是不可能完成上述分頻要求的。由于即取兩個計數器,采用級聯(lián)方式。

2、電路

3、工作方式選擇由于通道1要輸出方波信號推動發(fā)光二極管,所以通道1應選工作方式3。對于通道0,只要能起分頻作用就行,對輸出波形不做要求,所以方式2和方式3都可以選用。

這樣對于通道0,我們取工作方式2,BCD計數;對于通道1,我們取工作方式3,二進制計數(當然也可選BCD計數)

moval,00110101b ;通道0控制字

out86h,al moval,00 ;通道0初始計數值

out80h,al moval,10h out80h,al moval,01110110b ;通道1控制字

out86h,almoval,0e0h ;通道1初始值,03E8H=1000BCD out82h,al moval,03h out82h,al例2:計件系統(tǒng)。計件系統(tǒng)的功能就是記錄脈沖的個數。

一個脈沖代表一個事件,比如交通道路檢測系統(tǒng)中通過檢測點的車輛,工業(yè)控制系統(tǒng)中流水線上已加工好的工件。要求在計件過程中,PC機可以顯示當前計數器的內容,當完成10000個工件記錄后,系統(tǒng)發(fā)出1KHz信號推動喇叭發(fā)音通知用戶。

解:1、電路。需要兩個通道,一個作為計數,選用通道0。另一個產生1KHz信號,選用通道1。工作原理如下,傳感器電路把物理事件轉換為脈沖信號輸入到通道0計數,當記錄10000個事件后,通道0計數器溢出,GATE端輸出高電平,這時通道1開始工作,產生1KHz信號推動喇叭發(fā)音。2、工作方式選擇對于通道1,由于要產生1KHz信號,故選用工作方式3。對于通道0,要求初始計數值寫入計數通道后,計數器就可以工作,則通道0的啟動方式應是軟件啟動。另外由于要求計數溢出后產生一個信號來啟動一個事件,即喇叭發(fā)音,故可選的工作方式為方式0和方式4,對于圖所示方案,通道1的GATE信號由通道0的OUT信號產生,這個OUT信號應該是電平型的,所以通道0應選用方式0。

3、時間常數

N0=10004、程序(見書)用8253/8254為A/D子系統(tǒng)提供采樣信號的例子

頻率F初值N初值M初值LCLK1頻率F/NGATE0及OUT1寬度即采用持續(xù)的時間M*N/FOUT0頻率F/L

頻率F初值N初值M初值LCLK1頻率F/NGATE0為OUT1負脈沖寬度,即采樣持續(xù)的時間M*N/FOUT0頻率F/L程序段下:MOV AL,14HOUT 76H,AL ;將計數器0設置為模式2MOV AL,LCNTOUT 70H,AL ;對計數器0設置計數初始值L(二進制)MOV AL,73HOUT 76H,AL ;將計數器1設置為模式1MOV AX,MCNTOUT 72H,ALMOV AL,AHOUT 72H,AL ;對計數器1設置初始值M(BCD碼)MOV AL,96HOUT 76H,AL ;將計數器2設置為模式3MOV AL,NCNTOUT 74H,AL ;對計數器2設置初始值N(二進制)例2、波特率時鐘發(fā)生器

1.要求設計一個波特率時鐘發(fā)生器,其輸入時鐘CLK=1.19318Mz,波特率因子factor=16,輸出的波特率為8檔,它們分別是110b/s、150b/s、300b/s、600b/s、1200b/s、2400b/s、4800b/s、9600b/s。要求利用人-機對話方式選擇波特率。按Esc鍵,退出。

2.

分析發(fā)送時鐘TxC=Baud×FactorTc=CLK/(Baud×Factor)3.設計(1)硬件設計波特率時鐘發(fā)生器的硬件包括定時/計數器8253、并行接口芯片8255A及I/O端口地址譯碼電路等。(2)軟件編程計算出題目中要求的8檔波特率的定時常數,分別為678、497、249、124、62、31、16、8。其次,設計查表法的波特率時鐘發(fā)生器程序流程圖。8253OUT2GATE2CLK28255ADQQCPPCLK與8251A的收發(fā)時鐘相連2.3863632MHZPC6CS300—307HCS308—30FH波特率代號→temp查表獲取計數初值,并裝入8253關8253返回DOS結束

波特率時鐘發(fā)生器程序流程圖NY開始8253初始化8255初始化關閉8253提示選擇波特率選擇波特率選擇有錯?Y有ESC鍵按下?NNDATASEGNENTTC-TABLEDW678;0=110b/s,定時常數表

DW497;1=150b/sDW249;2=300b/sDW124;3=600b/sDW62;4=1200b/sDW31;5=2400b/sDW16;6=4800b/sDW8;7=9600b/sTEMPDB(?)

MESDB‘Nowbegintogeneratebaud-rate’sCLK’,0DH,0AHDB‘Esctoquit!’,0DH,0AH,‘$’INPUT-MESDB‘0:1101:1502:3003:6004:1200’,0DH,0AH,‘$’DB‘5:24006:48007:9600’,0DH,0AH,‘$’ERROR-MESDB‘Inputerror!Tryagainplease!’,0DH,0AH,‘$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAOK:MOVDX,30BH;8253命令口

MOVAL,0B6H;8253方式命令

OUTDX,ALMOVDX,303H;8255命令口

MOVAL,0CH;使PC6=0,關8253OUTDX,

溫馨提示

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

評論

0/150

提交評論