微機(jī)原理及接口技術(shù)-7_第1頁(yè)
微機(jī)原理及接口技術(shù)-7_第2頁(yè)
微機(jī)原理及接口技術(shù)-7_第3頁(yè)
微機(jī)原理及接口技術(shù)-7_第4頁(yè)
微機(jī)原理及接口技術(shù)-7_第5頁(yè)
已閱讀5頁(yè),還剩161頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 8255A為可編程的并行I/O接口芯片。具有三個(gè)8位端口(A口、B口、C口),一個(gè)8位控制寄存器,共占用4個(gè)口地。8255A為+5V供電,40個(gè)引腳。與CPU連接的信號(hào)線D7D0:數(shù)據(jù)線,三態(tài)雙向CS:芯片選擇信號(hào)RD/WR:芯片讀/寫(xiě)信號(hào)A1,A0:端口選擇信號(hào)RESET:復(fù)位信號(hào)與外設(shè)連接的信號(hào)線PA7- PA0: A口數(shù)據(jù)信號(hào)PB7- PB0: B口數(shù)據(jù)信號(hào)PC7- PCO: C口數(shù)據(jù)信號(hào)端口A:具有一個(gè)8位數(shù)據(jù)輸入鎖存器和一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器,故數(shù)據(jù)輸入/輸出均鎖存。端口B、端口C:具有一個(gè)8位數(shù)據(jù)輸入緩沖器和一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器,故有輸出鎖存,無(wú)輸入鎖存。 82

2、55A共有2個(gè)控制字: 方式選擇控制字和C口位控控制字。2個(gè)控制字均需要送入控制寄存器口地址中,其區(qū)別在于控制字中D7。當(dāng)D7=1時(shí),為方式選擇控制字,D7=0時(shí),為C口位控控制字。 一般可以不需握手,直接讀寫(xiě)數(shù)據(jù);也可利用C口進(jìn)行查詢方式工作。;設(shè)8055A的地址為80HMOV AL,10010000BOUT 83H,ALIN AL,80HOUT 81H,ALHLT A口和B口可工作于方式1,此時(shí)C口某些線做狀態(tài)或控制用,這些線巳被定義,用戶不能編程改變。輸入方式時(shí)C口各狀態(tài)輸出方式時(shí)C口各狀態(tài)A口 B口外設(shè)數(shù)據(jù)準(zhǔn)備好,向8255A發(fā)出STB數(shù)據(jù)有效信號(hào),并將數(shù)據(jù)送入8255A的緩沖器,并使

3、8255A的IBF變高,表示數(shù)據(jù)緩沖器滿。STB變高時(shí),如果INTE1則會(huì)使INTR變高,產(chǎn)生中斷請(qǐng)求,要CPU取走數(shù)據(jù)。CPU用IN指令取數(shù)據(jù),RD的下降沿將使INTR無(wú)效。RD上升沿將IBF變無(wú)效,表示數(shù)據(jù)被CPU取走,BUFF空。A口 B口8255A的某個(gè)端口收到CPU的數(shù)據(jù),將OBF信號(hào)變低,通知外設(shè),數(shù)據(jù)已經(jīng)準(zhǔn)備好。ACK為外設(shè)應(yīng)答線,低電平表示外設(shè)已將數(shù)據(jù)取走。ACK無(wú)效時(shí),如果INTE1且OBF1時(shí),8255A會(huì)向CPU發(fā)出中斷請(qǐng)求,表示數(shù)據(jù)已被外設(shè)取走,可以發(fā)送下一個(gè)數(shù)據(jù)。 僅A口可工作于方式2(雙向I/O方式),此時(shí)占用C口的5根線做聯(lián)絡(luò)線,各信號(hào)線的名稱及作用基本上與方式1

4、相同。C口各位狀態(tài)B口為方式1輸入B口為方式1輸出方式2下的接口:程序查詢式接口:從C口讀狀態(tài)字,根據(jù)輸入、輸出狀態(tài),決定是否輸入輸出。中斷驅(qū)動(dòng)式接口:只能采用查詢式中斷:中斷響應(yīng)后,先讀狀態(tài)字,查明是輸入中斷還是輸出中斷,再轉(zhuǎn)入相應(yīng)中斷服務(wù)。 譯譯碼碼器器82558255A A口口D7-D0D7-D0DBDB從機(jī)從機(jī)主機(jī)主機(jī)DBDBABABCBCBMPUMPUINTINTPC6PC6PC7PC7PC5PC5PC4PC4PC3PC3INTRINTRA AMPUMPUACKACKA AIBFIBFA AOBFOBFA AABABSTBSTBA AENENENEND0D0 D7D7IN80HIN8

5、0HIN40HIN40HOUT20HOUT20HIOWIOWIORIOR例1:設(shè)8255A工作在方式1下,A口輸出,B口輸入,PC4-PC5為輸入,A口允許中斷,B口禁止中斷,8088工作在最小模式,試編寫(xiě)初始化程序(端口地址為60H63H)。初始化程序:MOV AL,0AEHOUT 63H,ALMOV AL,0DHOUT 63H,ALMOV AL,04HOUT 63H,AL例2:用8255A實(shí)現(xiàn)用LED反映開(kāi)關(guān)狀態(tài)。設(shè)開(kāi)關(guān)閉合時(shí)LED亮,CPU為8088最小模式。例3:用8255A做為打印機(jī)接口,設(shè)8255A采用方式1的中斷方式工作,CPU為8088最小模式。設(shè)口地址為OCOH-OC7H,即

6、:A口地址:OCOH、OClHB口地址: OC2H、0C3H C口地址:OC4H、OC5H控制字地址:OC6H、OC7H設(shè)中斷類型碼為OBH,試編程序?qū)崿F(xiàn)打印6個(gè)字符。主程序流程圖:中斷程序流程圖:例4:用8255A實(shí)現(xiàn)4*4鍵盤控制。分析:鍵盤識(shí)別的方法有:行掃描法和行反轉(zhuǎn)法,兩種方法的接口電路均可采用8255A實(shí)現(xiàn),本題采用行反轉(zhuǎn)法。接口電路如圖:采用反轉(zhuǎn)法的編程步驟:1、行線PA口輸出00H,讀列線PB口,為OFH則無(wú)鍵按下;2、若有鍵按下,將PB口讀入的數(shù)據(jù)送出,讀PA口;3、將PA口讀入的數(shù)據(jù)左移4位,加上PB口低4位形成鍵值;例5:8255A在PC系統(tǒng)中的應(yīng)用 計(jì)算機(jī)與外部信息交換

7、方式有兩種:一種是并行通信,另一種是串行通信。并行通信時(shí),數(shù)據(jù)各位同時(shí)傳送。而串行通信時(shí),數(shù)據(jù)和控制信息是一位接一位串行地傳送下去。這樣,雖然速度會(huì)慢一些,但傳送距離長(zhǎng),硬件電路也相應(yīng)簡(jiǎn)單,成本低。 串行通信根據(jù)通信管理方式、通信速度、應(yīng)用領(lǐng)域及通信格式的不同,分成很多種類。 串行通信是指將構(gòu)成字符或數(shù)據(jù)的每個(gè)二進(jìn)制數(shù),依據(jù)一定的順序按位進(jìn)行傳送的通信方式。顯而易見(jiàn),數(shù)據(jù)各不同的位可以分時(shí)使用同一傳輸通道,因此可以減少傳輸通道的信號(hào)連接線,但是傳輸雙方必須協(xié)調(diào)工作,這種協(xié)調(diào)方法從原理上可分成兩種: 1、異步通信 2、同步通信 異步串行通信規(guī)定了數(shù)據(jù)的傳送格式,即每個(gè)數(shù)據(jù)以相同的幀格式傳送。每一

8、幀信息由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。 在異步通信中,宇符數(shù)據(jù)以上圖所示的格式,一個(gè)接一個(gè)的傳送。在發(fā)送間隙,即空閑時(shí),通信線路總是處于邏輯1狀態(tài)(高電平),每個(gè)字符數(shù)據(jù)的傳送均以邏輯0(低電平)開(kāi)始起始位:在通信線上沒(méi)有數(shù)據(jù)傳送時(shí)處于邏輯1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯0信號(hào),這個(gè)邏輯低電平就是起始位。起始位所起的作用就是表示字符傳送開(kāi)始。數(shù)據(jù)位:當(dāng)接收設(shè)備收到起始位信號(hào)后,緊接著就會(huì)收到數(shù)據(jù)。數(shù)據(jù)的位數(shù)可以選擇5位、6位、7位或8位。在數(shù)據(jù)傳送過(guò)程中,數(shù)據(jù)位從最小有效位(最低位)開(kāi)始傳送。奇偶校驗(yàn)位:數(shù)據(jù)位發(fā)送完成后,發(fā)送奇偶校驗(yàn)位用于有限差錯(cuò)檢測(cè),通信雙

9、方在通信時(shí)必須約定一致的奇偶校驗(yàn)方式。(如奇校驗(yàn)方式:傳輸時(shí)會(huì)自動(dòng)在校驗(yàn)位上插入1或0,使之連同數(shù)據(jù)位中1的個(gè)數(shù)為奇數(shù))停止位:在奇偶校驗(yàn)位或數(shù)據(jù)位(無(wú)奇偶校驗(yàn)時(shí))后發(fā)送停止位。停止位可以選擇1位、1.5位或2位。停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志。 在異步通訊中,每一個(gè)字持要用起起始位和停止位做為字符開(kāi)始和結(jié)束的標(biāo)志,以至占用了時(shí)間。所以在數(shù)據(jù)塊傳輸時(shí),為了提高傳輸速度,常去掉這些標(biāo)志,采用同步傳輸。同步通信在每個(gè)數(shù)據(jù)塊傳送開(kāi)始時(shí),通過(guò)收發(fā)同步字符(SYN)使雙方同步。1、以同步字符做為傳送的開(kāi)始,從而使收/發(fā)雙方取得同步。2、每位占用的時(shí)間相等。3、字符數(shù)據(jù)之間不允許有空隙,當(dāng)線路空閑或沒(méi)有字

10、符發(fā)送時(shí),傳送同步字符。 通信線上的字符數(shù)據(jù)是按位傳送的,每一位寬度(位信號(hào)持續(xù)時(shí)間)由數(shù)據(jù)傳送速率確定。波特率即數(shù)據(jù)傳送速率的規(guī)定:?jiǎn)挝粫r(shí)間內(nèi)傳送的信息量,以每秒傳送的位(Bit)表示,單位為波特。)n(sbsb波特率因子接收時(shí)鐘發(fā)送波特率接收時(shí)鐘的關(guān)系:波特率與發(fā)送單位時(shí)間位數(shù)波特率/ 串行通信中,要把數(shù)據(jù)從一個(gè)地方傳送到另一個(gè)地方,必需使用通信線路。數(shù)據(jù)在通信線路兩端的工作站(通訊設(shè)備或計(jì)算機(jī))之間傳輸。按照通信方式,可將數(shù)據(jù)傳輸線路分成三種:1、單工方式:通信線的一端連接接收器,一端連接發(fā)送器,數(shù)據(jù)按照一個(gè)固定的方向傳送。2、半雙工方式:每個(gè)通信設(shè)備都有一個(gè)發(fā)送器和接收器,通過(guò)收發(fā)開(kāi)關(guān)

11、接到通信線路上。3、全雙工方式:采用信道劃分技術(shù),不是交替發(fā)送和接收,可同時(shí)進(jìn)行。 通信的關(guān)鍵不僅是能夠傳送數(shù)據(jù),重要的是能準(zhǔn)確傳送,檢出差錯(cuò)并加以校正。檢出差錯(cuò)的方法有:奇偶校驗(yàn)、校驗(yàn)和、循環(huán)冗余碼等。校驗(yàn)錯(cuò)誤方法主要有:海明碼校驗(yàn)、交叉奇偶校驗(yàn)。 串行通信接口芯片種類和型號(hào)繁多,有能完成異步通信的硬件電路,稱為UART,即通用異步接收器/發(fā)送器(如:INS 8250);有能完成同步通訊的破件電路都為USRT;也有既能異步又能同步通信的硬件電路,稱為USARTRU(如:Intel 8251A)。 從本質(zhì)上講,所有的串行接口電路都是以并行數(shù)據(jù)形式與CPU接口,而以串行數(shù)據(jù)形式與外部邏輯接口,其

12、基本功能就是實(shí)現(xiàn)串并、并串轉(zhuǎn)換。1、可工作于同步方式或異步方式,全雙工方式,輸入/輸出與TTL電平兼容。2、同步方式下,波特率0-64K bps,每個(gè)字符可為5-8位,可內(nèi)同步或外同步,能自動(dòng)插入同步字符。3、異步方式下,波特率0-19.2K bps,每個(gè)字符可為5-8位,可產(chǎn)生啟動(dòng)位,設(shè)定停止位位數(shù),時(shí)鐘速率可設(shè)為波特率的1、16、64倍。4、具有自動(dòng)檢測(cè)功能,可檢測(cè)奇偶錯(cuò)、溢出錯(cuò)、幀錯(cuò)誤。數(shù)據(jù)總線緩沖器用來(lái)把8251A連接到系統(tǒng)數(shù)據(jù)總線上。在CPU對(duì)8251A進(jìn)行讀/寫(xiě)操作時(shí),8251A經(jīng)數(shù)據(jù)總線緩沖器與CPU進(jìn)行發(fā)送或接收數(shù)據(jù)操作。此外,控制字、命令字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線緩沖器傳輸。

13、8251讀/寫(xiě)操作方式1、收到寫(xiě)信號(hào)WR時(shí),將來(lái)自數(shù)據(jù)總線的數(shù)據(jù)或控制字寫(xiě)入8251A。2、收到讀信號(hào)RD時(shí),將數(shù)據(jù)或狀態(tài)字從8251A送往數(shù)據(jù)總線。3、通過(guò)C/D信號(hào)與讀/寫(xiě)組合通知8251A,當(dāng)前讀/寫(xiě)的是數(shù)據(jù)還是控制字、狀態(tài)字。4、由時(shí)鐘信號(hào)CLK完成8251A內(nèi)部定時(shí)。同步方式時(shí)CLK必須大于發(fā)送時(shí)鐘TxD或接收時(shí)鐘RxD的30倍;異步方式時(shí)CLK必須大于TxD或RxD的4.5倍。5、當(dāng)接收到復(fù)位信號(hào)RESET時(shí),使8251A處于空閑狀態(tài)。調(diào)制解調(diào)控制電路用來(lái)使8251A可與調(diào)制解調(diào)器直接連接。DTRDTR數(shù)據(jù)終端準(zhǔn)備好,輸出。有效時(shí),表示CPU已經(jīng)準(zhǔn)備好接收數(shù)據(jù),其狀態(tài)可軟件定義。D

14、SRDSR數(shù)據(jù)裝置準(zhǔn)備好,輸入。有效時(shí),表示調(diào)制解調(diào)器或外設(shè)已準(zhǔn)備好發(fā)送數(shù)據(jù),實(shí)際是對(duì)DTR的應(yīng)答。RTSRTS請(qǐng)求發(fā)送信號(hào),輸出。有效時(shí),表示CPU準(zhǔn)備好發(fā)送數(shù)據(jù),其狀態(tài)可軟件定義。CTSCTS清除發(fā)送信號(hào),輸入。有效時(shí),表示調(diào)制解調(diào)器已經(jīng)做好接收數(shù)據(jù)準(zhǔn)備,實(shí)際上是對(duì)RTS的響應(yīng)。只有當(dāng)CTS=O時(shí),發(fā)送器才可串行發(fā)送數(shù)據(jù)。發(fā)送緩沖器用來(lái)把CPU的并行數(shù)據(jù)加上相應(yīng)的控制信息,然后轉(zhuǎn)換成串行數(shù)據(jù),從TxD引腳發(fā)出。發(fā)送控制電路 與發(fā)送緩沖器配合工作,控制和管理所有與串行發(fā)送有關(guān)的功能。1、在異步方式下,為數(shù)據(jù)加上起始位、校驗(yàn)位和停止位。2、在同步方式下,插入同步字符,在數(shù)據(jù)中插入校驗(yàn)位。TxR

15、DY:發(fā)送數(shù)據(jù)準(zhǔn)備好TxE:發(fā)送器空TxC:發(fā)送器時(shí)鐘接收緩沖器用來(lái)從RxD引腳接收串行數(shù)據(jù),并按照相應(yīng)的格式將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)。接收控制電路 與接收緩沖器配合工作,管理有關(guān)接收的所有功能。1、在異步通信方式下,芯片復(fù)位后,先檢測(cè)輸入信號(hào)中的有效1,一旦檢測(cè)到,就接著尋找有效的低電平來(lái)確定啟動(dòng)位。2、消除假啟動(dòng)位的干擾。3、對(duì)接收到的信息進(jìn)行奇偶校驗(yàn),并根據(jù)校驗(yàn)結(jié)果建立相應(yīng)的狀態(tài)位。4、檢制停止位,并按照檢測(cè)結(jié)果,建立狀態(tài)位。RxRDY:接收數(shù)據(jù)準(zhǔn)備好RxC:接收數(shù)據(jù)時(shí)鐘SYNDET:同步檢測(cè)信號(hào) 8251A做為CPU和外部設(shè)備(或調(diào)制解調(diào)器)之間的接口,8251A對(duì)外信號(hào)分為兩組,一組

16、是8251A與CPU之間的信號(hào),一組是8251A與外部設(shè)備之間的信號(hào)。8251A8251A與與CPUCPU的連接信號(hào)的連接信號(hào)1、數(shù)據(jù)線D0-D7,雙向三態(tài)、8位緩沖器2、片選信號(hào)CS,由地址線和M/IO信號(hào)譯碼產(chǎn)生3、讀/寫(xiě)控制信號(hào)線WR、RD4、控制/數(shù)據(jù)選擇C/D,區(qū)分當(dāng)前數(shù)據(jù)線上信息的種類 C/D=1 傳送控制信息 C/D=0 傳送數(shù)據(jù)5、收發(fā)聯(lián)絡(luò)信號(hào) TxRDY發(fā)送器準(zhǔn)備好 TxRDY=l,8251A的發(fā)送器可以接收數(shù)據(jù),CPU向8251A發(fā)送數(shù)據(jù)后TxRDY=O。 TxE發(fā)送器空 表示發(fā)送器中的移位寄存器變空,數(shù)據(jù)已發(fā)出。 RxRDY接收器準(zhǔn)備好 RxRDY=l,表示8251A已經(jīng)

17、從外設(shè)接收到數(shù)據(jù),等待CPU讀取。CPU讀取數(shù)據(jù)后自動(dòng)復(fù)位。 SYNDET同步檢測(cè) 內(nèi)同步:SYNDET做為輸出端,8251A檢測(cè)到同步字符,會(huì)輸出高電平,表示接收已達(dá)到同步; 外同步:SYNDET做為輸入端,接收外部同步脈沖,使8251A的接收時(shí)鐘與之同步。8251A8251A與外設(shè)的連接信號(hào)與外設(shè)的連接信號(hào)數(shù)據(jù)信號(hào)TxD發(fā)送數(shù)據(jù)端。CPU(并行)8251A串行數(shù)據(jù)RxD接收數(shù)據(jù)端。串行數(shù)據(jù)8251A(并行)CPU收發(fā)聯(lián)絡(luò)信號(hào)DTR數(shù)據(jù)終端準(zhǔn)備好。8251A(表示CPU準(zhǔn)備好接收數(shù)據(jù))外設(shè)DSR數(shù)據(jù)裝置準(zhǔn)備好。外設(shè)(表示外設(shè)準(zhǔn)備好發(fā)數(shù)據(jù))8251RTS請(qǐng)求發(fā)送信號(hào)。8251A(表示CPU準(zhǔn)備

18、好發(fā)數(shù)據(jù))外設(shè)CTS清除允許發(fā)送信號(hào)。外設(shè)對(duì)RTS的響應(yīng)信號(hào),當(dāng)其有效時(shí)8251A才能發(fā)送。注意:若外設(shè)不要聯(lián)絡(luò)信號(hào),這些信號(hào)線可以懸空。但CTS必須接地,CPU才能發(fā)送數(shù)據(jù)時(shí)鐘信號(hào)時(shí)鐘信號(hào)CLK8251A內(nèi)部工作時(shí)鐘,產(chǎn)生內(nèi)部工作時(shí)序。RxC/TxC接收/發(fā)送時(shí)鐘,由外部時(shí)鐘提供。用于控制8251A收發(fā)數(shù)據(jù)的速率。同步方式:接收/發(fā)送時(shí)鐘頻率等于傳送數(shù)據(jù)的波特率。異步方式:接收/發(fā)送時(shí)鐘頻率可以取波特率的1、16、64倍,初始化時(shí)由波特率系數(shù)指明。8251A8251A的編程結(jié)構(gòu)的編程結(jié)構(gòu):2個(gè)控制字和1個(gè)狀態(tài)字 編程結(jié)構(gòu)并不是一個(gè)器件的內(nèi)部結(jié)構(gòu),而是從使用者的角度歸納出來(lái)的。所以編程模塊中有

19、的與內(nèi)部結(jié)構(gòu)模塊對(duì)應(yīng),有的可能不對(duì)應(yīng)內(nèi)部結(jié)構(gòu)中的模塊。8251A模式控制寄存器其決定了8251A是工作在同步模式還是異步模式, 決定了所有接收和發(fā)送字符的格式。不同的工作模式,各位狀態(tài)的意義不一樣,這是由程序在8251A初始化時(shí)設(shè)置的。8251A模式寄存器(寫(xiě)入控制口)00同步方式01波特率因子為110波特率因子為1611波特率因子為64005位016位107位118位0無(wú)1有0奇校驗(yàn)1偶校驗(yàn)00無(wú)意義011個(gè)停止位101.5個(gè)停止位112個(gè)停止位0內(nèi)同步1外同步02個(gè)同步字符11個(gè)同步字符8251A同步字符寄存器8251A的兩個(gè)同步字符寄存器用來(lái)存儲(chǔ)同步方式中所用的同步字符。由程序設(shè)置。如果

20、采用同步模式通信,在設(shè)置完成模式控制字后,需要設(shè)置同步字符。8251A操作命令寄存器主要用來(lái)控制8251A的工作,其內(nèi)容由程序設(shè)定。8251A操作寄存器(命令控制字,寫(xiě)入控制口)發(fā)送允許:發(fā)送允許:1 1允許允許 0 0屏蔽屏蔽接收允許:接收允許:1 1允許允許 0 0屏蔽屏蔽出錯(cuò)標(biāo)志復(fù)位出錯(cuò)標(biāo)志復(fù)位1 1使?fàn)顟B(tài)寄存器中的使?fàn)顟B(tài)寄存器中的3 3個(gè)錯(cuò)誤標(biāo)志復(fù)位個(gè)錯(cuò)誤標(biāo)志復(fù)位數(shù)據(jù)終端準(zhǔn)備好:數(shù)據(jù)終端準(zhǔn)備好:1 1使使DTRDTR0 01 1使使TxD=0TxD=00 0正常正常請(qǐng)求發(fā)送:請(qǐng)求發(fā)送:1 1使使RTSRTS輸出低電平輸出低電平內(nèi)部復(fù)位:內(nèi)部復(fù)位:1 1軟件復(fù)位軟件復(fù)位( (下一下一條命

21、令是方式字條命令是方式字) )搜索同步字符:搜索同步字符:1 1啟動(dòng)搜索啟動(dòng)搜索接收移位寄存器和數(shù)據(jù)輸入緩沖器數(shù)據(jù)輸入寄存器和數(shù)據(jù)輸出寄存器使用同一個(gè)端口地址,但實(shí)際上做為兩個(gè)端口,一個(gè)為輸入口,一個(gè)為輸出端口。接收移位寄存器將到達(dá)RxD端的串行數(shù)據(jù)接收之后進(jìn)行移位,變?yōu)椴⑿袛?shù)據(jù),傳送到數(shù)據(jù)輸入寄存器,CPU判斷狀態(tài)無(wú)誤,讀入數(shù)據(jù)。發(fā)送移位寄存器和數(shù)據(jù)輸出緩沖器數(shù)據(jù)輸入寄存器和數(shù)據(jù)輸出寄存器使用同一個(gè)端口地址,但實(shí)際上做為兩個(gè)端口,一個(gè)為輸入口,一個(gè)為輸出端口。計(jì)算機(jī)通過(guò)8251A輸出數(shù)據(jù)的過(guò)程中,CPU通過(guò)數(shù)據(jù)總線將數(shù)據(jù)傳送到8251A的數(shù)據(jù)輸出寄存器,然后自動(dòng)輸?shù)桨l(fā)送移位寄存器。移位寄存器

22、用移位的方法將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),從TxD端送往外部設(shè)備。8251A狀態(tài)寄存器數(shù)據(jù)狀態(tài)寄存器在8251A的工作過(guò)程為執(zhí)行程序提供一定的狀態(tài)信息8251A狀態(tài)寄存器(反映接口線和通信狀態(tài),控制口讀取)1 1數(shù)據(jù)緩沖區(qū)為數(shù)據(jù)緩沖區(qū)為空,空,CPUCPU可送數(shù)據(jù)可送數(shù)據(jù)1 1奇偶校驗(yàn)錯(cuò)誤奇偶校驗(yàn)錯(cuò)誤1 1CPUCPU可讀數(shù)據(jù)可讀數(shù)據(jù)1 1溢出錯(cuò)誤溢出錯(cuò)誤1 1表示發(fā)送器空表示發(fā)送器空1 1幀格式錯(cuò)誤幀格式錯(cuò)誤1 1找到同步字符找到同步字符1 1DSRDSR引腳為低電平引腳為低電平 8251A在工作之前需要通過(guò)初始化設(shè)置工作模式、聯(lián)絡(luò)信號(hào)的狀態(tài)及啟動(dòng)工作等,在數(shù)據(jù)傳輸時(shí)需要查詢狀態(tài)正確后再傳輸。l、

23、異步方式:送模式控制字后,必須緊跟著進(jìn)行操作命令字的設(shè)置,然后才可開(kāi)始讀狀態(tài)字、測(cè)試狀態(tài),狀態(tài)正確再傳送數(shù)據(jù)。2、同步方式:送模式控制字后,應(yīng)馬上輸出同步字符,在一個(gè)或兩個(gè)同步字符之后,再設(shè)置操作命令字,然后再讀狀態(tài)字、測(cè)試狀態(tài),狀態(tài)正確再傳送數(shù)據(jù)。3、在數(shù)據(jù)傳送結(jié)束后,或不知8251A當(dāng)前的工作狀態(tài),而需要改變工作模式,必須用操作命令控制字將IR置1,使8251A內(nèi)部復(fù)位,之后8251A才可重新設(shè)立模式控制字,改變傳送方式。8251A操作命令控制字的使用:1、確定工作方式方式選擇控制字 確定的工作狀態(tài)操作命令控制字2、工作方式不變方式選擇控制字不變 改變工作狀態(tài)隨時(shí)重新寫(xiě)入操作命令控制字3、

24、改變工作方式: 復(fù)位操作命令控制字(40H) 新的工作方式方式選擇控制字8251A編程流程圖例1:異步模式下的初始化程序。設(shè)8251A的控制和狀態(tài)的口地址為52H,工作在異步方式,7位數(shù)據(jù),偶校驗(yàn),2位停止位,波特率因子=16,則模式控制字:設(shè)即可發(fā)送又可接收,則應(yīng)使發(fā)送請(qǐng)求信號(hào)RTS處于有效;清除出錯(cuò)標(biāo)志;接收允許RxE有效,使接收器處于啟動(dòng)狀態(tài);使數(shù)據(jù)終端準(zhǔn)備好信號(hào)DTR有效,以通知調(diào)制解調(diào)器CPU已準(zhǔn)備好;發(fā)送允許信號(hào)TxE有效,使發(fā)送器處于啟動(dòng)狀態(tài),則操作命令字:MOV AL,0FAH;送模式控制字OUT 52H,ALMOV AL,37H;送操作命令字 OUT 52H,AL 例2:同步

25、模式下的初始化程序。設(shè)8251A的控制和狀態(tài)的口地址為52H,工作在同步方式,7位數(shù)據(jù),偶校驗(yàn),2個(gè)同步字符可相同或不同,本題要求均為16H。模式控制字:操作命令字:MOV AL,38H;送模式控制字OUT 52H,AL MOV AL,B7H;送操作命令字MOV AL,16H;送同步字符 OUT 52H,ALOUT 52H,ALOUT 52H,AL 在實(shí)際使用中,當(dāng)未對(duì)8251A設(shè)置模式控制字時(shí),如果要使8251A進(jìn)行內(nèi)部復(fù)位,一般采用送3個(gè)00H,再送1個(gè)40H的方法,這也是8251A的編程約定。40H可以看成是使8251A進(jìn)行內(nèi)部復(fù)位操作的實(shí)際代碼。即使設(shè)置了模式字之后,也可用這個(gè)方法使8

26、251A執(zhí)行內(nèi)部復(fù)位。實(shí)例如下:例2:采用8251A實(shí)現(xiàn)兩臺(tái)微機(jī)按RS232標(biāo)準(zhǔn)進(jìn)行串行接口通訊。假設(shè)系統(tǒng)采用異步通訊,查詢方式,A機(jī)向B機(jī)發(fā)送5字節(jié)數(shù)據(jù)。說(shuō)明: 發(fā)送端CPU先對(duì)發(fā)送端接口8251A初始化(送模式字和操作字),然后讀狀態(tài)字,查詢TxRDY是否有效,若TxRDY=1(D01),則向8251A輸出一個(gè)數(shù)據(jù),再查詢,再輸送,直到全部數(shù)據(jù)送完為止。顯示OK!后程序退出。 接收端CPU先對(duì)接收端接口8251A初始化(送模式字和操作字),然后讀狀態(tài)字,查詢到RxRDY有效(D11)且無(wú)奇偶錯(cuò)(D30),則從8251A讀取一個(gè)數(shù)據(jù),再查詢,再讀入,直到全部數(shù)據(jù)接收完為止,最后顯示ok!后程

27、序退出,若出現(xiàn)傳輸錯(cuò)誤顯示ERR!后程序退出。(1)完全雙工、雙緩沖器的發(fā)送/接收異步通信接口電路。(2)通信波特率50-9600bps,共分成15種。(3)異步通信格式,可通過(guò)編程選擇,即可選每字符可傳輸5-8位,可選擇為1、1.5和2位停止位,并可產(chǎn)生終止字符(輸出連續(xù)的低電平,以通知對(duì)方終止通信)。 (4)可進(jìn)行奇偶校驗(yàn),并具有奇偶、溢出和幀錯(cuò)誤等檢測(cè)標(biāo)志。(5)片內(nèi)具有優(yōu)先權(quán)中斷控制邏輯。 引腳說(shuō)明:1、對(duì)系統(tǒng)的引腳(23):D7-D0:雙向三態(tài)數(shù)據(jù)線CS0、CS1、CS2:片選信號(hào)輸入CSOUT:片選輸出A2、Al、A0:地址信號(hào)輸入ADS:地址選通信號(hào)輸入DISTR、DISTR:讀

28、選通信號(hào)DOSTR、DOSTR:寫(xiě)選通信號(hào)DDIS:驅(qū)動(dòng)器禁止輸出MR:主復(fù)位信號(hào)輸入INTRPT:中斷請(qǐng)求信號(hào)輸出2、對(duì)外部通信設(shè)備的引腳(14)SOUT:串行數(shù)據(jù)輸出(接232的TxD)SIN:串行數(shù)據(jù)輸入(接232的RxD)RTS/CTS:請(qǐng)求發(fā)送/消除發(fā)送(接232的RTS/CTS)DTR/DSR:數(shù)據(jù)終端準(zhǔn)備好/數(shù)據(jù)裝置準(zhǔn)備好RLSD:接收線路信號(hào)檢測(cè)輸入RI:振鈴信號(hào)輸入OUT1/OUT2:調(diào)制控制寄存器的D2、D3輸出XTAL1/XTAL2:時(shí)鐘輸入/輸出信號(hào)BAUDOUT:波特率輸出信號(hào)(與RCLK短接則發(fā)送/接收波特RCLK:接收時(shí)鐘輸入 率相同) Ins 8250除了有與系

29、統(tǒng)相連的數(shù)據(jù)緩沖,地址選擇及控制信號(hào)外,還有五個(gè)功能模塊。每個(gè)模塊包含兩個(gè)寄存器,共十個(gè)寄存器。 五個(gè)功能模塊分別為: 1、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收 2、線路控制及狀態(tài)部分 3、波特率控制部分 4、MODEM控制與狀態(tài) 5、中斷允許及識(shí)別 發(fā)送寄存器(DLAB=l,只寫(xiě)) 要發(fā)送的字符首先井行寫(xiě)入發(fā)送數(shù)據(jù)寄存器,再進(jìn)入發(fā)送移位寄存器,然后根據(jù)約定格式,加上起始位、奇偶校驗(yàn)位、停止位,并根據(jù)約定好的波特率從Sout低位在前高位在后開(kāi)始發(fā)送。數(shù)據(jù)寄存器在將數(shù)據(jù)傳給發(fā)送移位寄存器后(即發(fā)送寄存器空),CPU即可寫(xiě)入下一個(gè)數(shù)據(jù)。發(fā)送移位寄存器送完各位后(即發(fā)送移位寄存器空)又立即接收第二個(gè)數(shù)據(jù),開(kāi)始發(fā)送。

30、發(fā)送寄存器空和發(fā)送移位寄存器空在線路狀態(tài)寄存器中反映,以提供CPU查詢或使CPU 中斷,從而進(jìn)行下一個(gè)數(shù)據(jù)傳送。接收數(shù)據(jù)寄存器(DLAB=O,只讀) 串行數(shù)據(jù)從Sin端逐位進(jìn)入接收移位寄存器。實(shí)際上,首先搜尋起始位,位測(cè)到Sin由1到0的變化時(shí),若連續(xù)采8次且為O,則每隔16個(gè)RCLK周期讀取1個(gè)數(shù)據(jù)位,直至停止位。 接收移位寄存器接收一個(gè)字符后驗(yàn)錯(cuò),若有錯(cuò)則在線路寄存器中設(shè)置錯(cuò)誤標(biāo)志,若無(wú)錯(cuò)則傳給接收寄存器,同時(shí)將線路寄存器中接收數(shù)據(jù)有用位置1,CPU可通過(guò)查詢線路寄存器或使CPU中斷來(lái)并行地取走這個(gè)字符。線路控制寄存器(可讀/寫(xiě)) CPU用OUT指令將一個(gè)8位的控制字寫(xiě)入通信線路寄存器,以

31、決定通信中字符的格式??刂萍拇嫫饕部梢杂肐N指令讀出。8250線路控制寄存器(PC機(jī)的地址為3FBH)數(shù)據(jù)位長(zhǎng):005位016位107位118位停止位長(zhǎng):01個(gè)停止位11.5個(gè)停止位(字符長(zhǎng)5位) 2個(gè)停止位(字符長(zhǎng)68位)是否有校驗(yàn):0無(wú)校驗(yàn)1有校驗(yàn)附加位設(shè)置:0無(wú)附加位1在奇偶校驗(yàn)位和停止位之間加附加位:奇校驗(yàn):附加位為1偶校驗(yàn):附加位為0校驗(yàn)類型:0奇校驗(yàn)1偶校驗(yàn)0禁止間斷1間斷(發(fā)中止符)0訪問(wèn)接收/發(fā)送、中斷允許寄存器1訪問(wèn)波特率因子寄存器(除法寄存器)線路狀態(tài)寄存器(可讀/寫(xiě)) CPU讀入通信線路狀態(tài)寄存器,便可了解數(shù)據(jù)發(fā)送和接收的情況。在CPU讀線路狀態(tài)寄存器后各狀態(tài)位均被清零。

32、除D6位外其它位還可以被CPU 寫(xiě)入,也可以產(chǎn)生中斷請(qǐng)求。1接收數(shù)據(jù)就緒1幀格式錯(cuò)1溢出錯(cuò)1檢測(cè)到中止符1奇偶校驗(yàn)錯(cuò)1發(fā)送寄存器空1發(fā)送移位寄存器空8250線路狀態(tài)寄存器(PC機(jī)的地址為3FDH)除數(shù)(波特率因子)寄存器(只寫(xiě)) 該因子對(duì)輸入時(shí)鐘XTAL1(PC/XT為1.8432MHz)進(jìn)行分頻,從而產(chǎn)生波特率發(fā)生器時(shí)鐘(即BAUDOUT),即: 波特率1.8432MHz/(除數(shù)n*16) 波特率因子必須在初始化期間設(shè)置(此時(shí)線路控制寄存器的DLAB1),以保證波特率發(fā)生器執(zhí)行規(guī)定動(dòng)作。通常BAUDOUT輸出信號(hào)用做接收和發(fā)送時(shí)鐘。波特率與除數(shù)的關(guān)系(外時(shí)鐘為1.8432MHz)MODEM控

33、制寄存器(只寫(xiě)) 當(dāng)處于自檢狀態(tài)時(shí),其數(shù)據(jù)輸入Sin同外部斷開(kāi),而在芯片內(nèi)部同數(shù)據(jù)輸出Sout接通,同時(shí)四個(gè)輸入信號(hào)CRS、DSR、RLSD、RI分別和四個(gè)輸出信號(hào)DTR、RTS、OUT1、OUT2片內(nèi)相連,用于實(shí)現(xiàn)自發(fā)自收的方式來(lái)檢測(cè)芯片。18250工作循環(huán)回送狀態(tài)(此時(shí)8250發(fā)送的數(shù)據(jù)被自身接收,用于自檢)0正常工作D3-D0位對(duì)應(yīng)四個(gè)引腳,該位為1時(shí),相應(yīng)的引腳輸出低電平(有效)。8250 MODEM控制寄存器(MCR,只寫(xiě),3FCH)MODEM狀態(tài)寄存器(只讀) 每次讀MODEM狀態(tài)寄存器時(shí),低4位被消零。以后若高4位中有某位狀態(tài)產(chǎn)生改變,則低4位中相應(yīng)位就置1。這些狀態(tài)位的變化,除

34、了可以讓CPU輸入指令查詢外,也可以引起中斷。D7D4:反映檢測(cè)8250芯片4個(gè)輸入引腳狀態(tài),引腳有變化,相應(yīng)位置置1。D3-D0:反映四個(gè)引腳的變化情況,引腳電平有變化相應(yīng)位置1。8250 MODEM狀態(tài)寄存器(MSR,只讀,3FEH)中斷允許寄存器(只寫(xiě)) Ins 8250將芯片內(nèi)的各種中斷源為四類,用中斷允許寄存器的低四位來(lái)對(duì)各類中斷源實(shí)現(xiàn)允許或者屏蔽控制。接收數(shù)據(jù)準(zhǔn)備好中斷發(fā)送寄存器空中斷MODEM狀態(tài)中斷接收數(shù)據(jù)錯(cuò)中斷8250中斷允許寄存器(只寫(xiě),PC機(jī)的地址為3F9H)D3D3D0D0各位:各位:0 0屏蔽相應(yīng)中斷屏蔽相應(yīng)中斷1 1允許相應(yīng)中斷允許相應(yīng)中斷中斷識(shí)別寄存器(只讀) 中

35、斷識(shí)別寄存器的內(nèi)容只可讀出,可用來(lái)檢查Ins 8250在系統(tǒng)中是否存在,或是否安裝了異步串行通信接口。中斷指示:0有中斷1無(wú)中斷中斷識(shí)別碼:00MODEM狀態(tài)寄存器01發(fā)送寄存器空10接收數(shù)據(jù)就緒11接收數(shù)據(jù)錯(cuò)8250中斷識(shí)別寄存器(只讀,PC機(jī)的地址為3FAH)優(yōu)先級(jí)最低優(yōu)先級(jí)最高 INS 8250的編程分為初始化編程和工作編程:初始化編程:約定數(shù)據(jù)通信規(guī)范工作編程:實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收例1:初始化編程舉例 初始化編程包括約定傳送波特率(對(duì)除數(shù)寄存器編程)、通信的字符數(shù)據(jù)格式(對(duì)線路控制寄存器編程)及Ins8250的操作方式(MODEM控制寄存器及中斷允許寄存器編程)。 由于寫(xiě)入除數(shù)寄存器時(shí)

36、要求線路控制寄存器的D71,設(shè)立訪問(wèn)除數(shù)寄存指標(biāo)志DLAB,所以實(shí)際初始化編程時(shí)往往先寫(xiě)一個(gè)80H到線路控制寄存器,送完除數(shù)后再對(duì)線路控制寄存器寫(xiě)入真正工作的編程內(nèi)容(D7O,其余每位都有控制作用),最后再寫(xiě)入MODEM控制寄存器及中斷允許寄存器。 例2:通訊工作編程舉例 上例的初始化程序中屏蔽了中斷,因此可用查詢方式進(jìn)行通訊,即: 讀入線路狀態(tài)寄存器 先判是否有錯(cuò),有則轉(zhuǎn)出錯(cuò)處理 再查數(shù)據(jù)接收狀態(tài),決定是否接收數(shù)據(jù) 再查數(shù)據(jù)發(fā)送狀態(tài),決定是否發(fā)送數(shù)據(jù) 在接收數(shù)據(jù)時(shí),要先查接收數(shù)據(jù)是否有錯(cuò),只有正確的接收數(shù)據(jù),才可讓CPU讀取。在發(fā)送數(shù)據(jù)時(shí),應(yīng)先查發(fā)送寄存器是否空,決定是否發(fā)送數(shù)據(jù)。例3:應(yīng)用

37、編程舉例 這個(gè)例子給出了一段完整的程序,用來(lái)說(shuō)明8250用于串行通信的編程。 程序功能為:將PC/XT系列COM1中的8250設(shè)置成自檢方式,從鍵盤輸入字符,經(jīng)8250發(fā)送出,又自行接收回來(lái),再送到CRT上顯示出來(lái),直到鍵入ESC返回DOS。 編程思路: 寫(xiě)除數(shù)寄存器(確立2400bps) 寫(xiě)線路寄存器(7位數(shù)據(jù)、1位停止位、奇校驗(yàn)) 寫(xiě)MODEM控制寄存器(自檢) 寫(xiě)中斷允許寄存器(不中斷) 讀線路狀態(tài)寄存器 判是否有錯(cuò),有則提示 判接收數(shù)據(jù)是否就緒,決定是否轉(zhuǎn)接收 判發(fā)送寄存器是否為空,決定是否發(fā)送 完成取鍵、發(fā)送、接收 判鍵是否ESC,是退出,不是送顯 在計(jì)算機(jī)的應(yīng)用中,常常要對(duì)外界的某

38、些信號(hào)進(jìn)行計(jì)數(shù),希望計(jì)算機(jī)既能控制計(jì)數(shù)的過(guò)程又能讀取計(jì)數(shù)的結(jié)果,進(jìn)而做為控制或管理的決策依據(jù)。因此計(jì)數(shù)電路也成為計(jì)算機(jī)輸入/輸出接口中的一種類型。如果被計(jì)數(shù)的信號(hào)有準(zhǔn)確的固定周期,這種計(jì)數(shù)也就成為一種定時(shí)方式。現(xiàn)在已有多種可編程計(jì)數(shù)/定時(shí)電路在微型計(jì)算機(jī)及其接口中應(yīng)用。 IBM PC/XT中使用的是Intel8253-PIT,簡(jiǎn)稱8253。IBM PC/AT開(kāi)始被8254所取代。8254與8253結(jié)構(gòu)相似、引腳兼容、程序兼容。 8253/8254為24引腳芯片,+5V電源供電,每一片內(nèi)部有三個(gè)獨(dú)立的16位計(jì)數(shù)通道,一個(gè)8位控制寄存器,共占用4個(gè)地址。每個(gè)計(jì)數(shù)通道具有6種工作方式。 8253在線

39、計(jì)數(shù)最高頻率可達(dá)2MHz。而8254可達(dá)到8MHz。8254-2可以接收10MHz。D7-DO:數(shù)據(jù)線CLKO-CLK2:時(shí)鐘輸入端GATEO-GATE1:門控輸入OUTO-OUT2:定時(shí)/計(jì)數(shù)器輸出A1、AO Al AO=OO 通道0 Al AO=O1 通道1 Al AO=10 通道2 Al AO=ll 控制寄存器RD、WR:讀寫(xiě)信號(hào)CS:片選信號(hào)數(shù)據(jù)緩沖器三態(tài),雙向,8位緩沖器,是8253與CPU數(shù)據(jù)傳輸通道。讀/寫(xiě)控制邏輯一方面接收CPU來(lái)的控制信息,另一方面將控制信息譯碼后產(chǎn)生各部分的控制信息??刂谱旨拇嫫饔蒀PU通過(guò)總線送入控制信息,控制每個(gè)計(jì)數(shù)器的工作方式??刂谱种荒軐?xiě)入,不能讀出

40、。計(jì)數(shù)器三個(gè)計(jì)數(shù)器內(nèi)部結(jié)構(gòu)相同,均為16位可預(yù)置計(jì)數(shù)器。每個(gè)計(jì)數(shù)器都具有:1個(gè)時(shí)鐘輸入CLK(8253時(shí)鐘周期380ns),1個(gè)門空信號(hào)GATE,1個(gè)輸出信號(hào)OUT。 8253/8254在讀取某通道的當(dāng)前計(jì)數(shù)值,需要先將計(jì)數(shù)值鎖存到輸出鎖存器中后再讀取,避免在讀取低字節(jié)時(shí)高字節(jié)有變化。 CPU讀取后,將自動(dòng)解除鎖存狀態(tài),鎖存器的值恢復(fù)為隨計(jì)數(shù)器變化。 即當(dāng)CPU向8253的計(jì)數(shù)初值鎖存器賦初值,且GATE1,此時(shí)并不開(kāi)始計(jì)數(shù),CLK發(fā)出第一個(gè)脈沖下降沿將初值送入計(jì)數(shù)器,從第二個(gè)脈沖下降沿減1計(jì)數(shù)器開(kāi)始減1,直到計(jì)數(shù)器減到0或1為止。 即當(dāng)CPU向8253的計(jì)數(shù)初值鎖存器賦初值,此時(shí)并不開(kāi)始計(jì)數(shù)

41、。當(dāng)GATE發(fā)出上升沿,采到CLK的上升沿后,從CLK的下降沿開(kāi)始計(jì)數(shù)減1,直到計(jì)數(shù)器減到0或1為止。 8253的每個(gè)計(jì)數(shù)通道有6種工作方式,在工作前必須進(jìn)行初始化編程以確定按照哪一種工作方式工作。初始化編程步驟為: 1、先向控制寄存器寫(xiě)入控制字,對(duì)某個(gè)計(jì)數(shù)器設(shè)定工作方式。 2、向該計(jì)數(shù)器寫(xiě)入計(jì)數(shù)初值。 1、在計(jì)數(shù)通道工作過(guò)程中,若要更換計(jì)數(shù)初值,或者要讀取計(jì)數(shù)的當(dāng)前值,也需要先寫(xiě)一個(gè)適當(dāng)?shù)目刂谱郑?然后再進(jìn)行寫(xiě)或者讀操作。 2、控制字應(yīng)寫(xiě)入控制寄存器中,而計(jì)數(shù)初值寫(xiě)入相應(yīng)的計(jì)數(shù)器中,注意切換地址。數(shù)制:0二進(jìn)制1十進(jìn)制計(jì)數(shù)值讀寫(xiě):00數(shù)值鎖存01只讀寫(xiě)低8位,高8位為010只讀寫(xiě)高8位,低8

42、位為011先讀寫(xiě)低8位,再讀寫(xiě)高8位工作方式:000方式0001方式1X10方式2X11方式3100方式4101方式5計(jì)數(shù)器選擇:00計(jì)數(shù)器001計(jì)數(shù)器110計(jì)數(shù)器211非法8253方式控制字注意:D5D4位為00是8253的鎖存命令,讀數(shù)時(shí)應(yīng)先寫(xiě)該命令,如果是16位讀寫(xiě)要分兩次進(jìn)行。計(jì)數(shù)初值: 寫(xiě)入控制字后,應(yīng)給計(jì)數(shù)器寫(xiě)入計(jì)數(shù)初值。根據(jù)控制字的規(guī)定,計(jì)數(shù)初值可以送兩字節(jié),也可以只送單字節(jié)。但是在8253內(nèi)部全部當(dāng)成兩字節(jié)數(shù),未送的字節(jié)自動(dòng)被補(bǔ)上0。 當(dāng)計(jì)數(shù)器被設(shè)定為二進(jìn)制計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍為1到FFFFH+1。當(dāng)計(jì)數(shù)器被設(shè)定為十進(jìn)制計(jì)數(shù)時(shí),計(jì)數(shù)初值的范圍為1到9999+1,且以壓縮型BC

43、D碼形式表示計(jì)數(shù)初值。 計(jì)數(shù)初值為0時(shí),需要重新減到O或1計(jì)數(shù)結(jié)束,因此0用來(lái)表示最大的計(jì)數(shù)初值。方式方式0 0:計(jì)數(shù)結(jié)束時(shí)中斷:計(jì)數(shù)結(jié)束時(shí)中斷 這是一種軟件啟動(dòng),不能自動(dòng)重復(fù)的計(jì)數(shù)方式。對(duì)計(jì)數(shù)器寫(xiě)入方式0的控制字CW后,其輸出端OUT變低,再寫(xiě)入計(jì)數(shù)初值,在寫(xiě)信號(hào)WR以后經(jīng)過(guò)CLK的一個(gè)上升沿和一個(gè)下 降沿,初值進(jìn)入計(jì)數(shù)器計(jì)數(shù),計(jì)數(shù)器減到0后,OUT變?yōu)楦唠娖?,此信?hào)可以接至8259A的IR端,作為中斷請(qǐng)求。注意:1、在寫(xiě)初值時(shí)的WR信號(hào)上升沿的下一個(gè)CLK脈沖的下降沿才開(kāi)始計(jì)數(shù),所以,若計(jì)數(shù)初值為N,則OUT是在N+1個(gè)CLK脈沖后才變高。2、在整個(gè)計(jì)數(shù)過(guò)程中,GATE始終應(yīng)保持為高電平。

44、若GATEO則暫停計(jì)數(shù),待GATE1后,從暫停時(shí)的計(jì)數(shù)值繼續(xù)往下遞減。3、在計(jì)數(shù)過(guò)程中,可以改變計(jì)數(shù)初值。若是8位計(jì)數(shù)值,在寫(xiě)入新計(jì)數(shù)值后,計(jì)數(shù)器將按新計(jì)數(shù)值開(kāi)始計(jì)數(shù),若是16位計(jì)數(shù)值,在寫(xiě)入低字節(jié)后計(jì)數(shù)器停止計(jì)數(shù),在寫(xiě)入高字節(jié)后,計(jì)數(shù)器將按新計(jì)數(shù)值開(kāi)始計(jì)數(shù)??梢杂眠@種方法擴(kuò)展脈沖寬度。方式方式1 1:可編程單脈沖:可編程單脈沖 這是一種硬件啟動(dòng),不自動(dòng)重復(fù)的計(jì)數(shù)方式。在寫(xiě)入方式1的控制字后,OUT成為高電平,待寫(xiě)入計(jì)數(shù)初值后,要等GATE信號(hào)出現(xiàn)上升沿才啟動(dòng)計(jì)數(shù)。此時(shí)OUT端立即變低,至到計(jì)擻器減0才回到高,其間隔為計(jì)數(shù)初值N乘以CLK 的周期TCLK,就是說(shuō)OUT端產(chǎn)生一個(gè)寬為N*TCLK

45、的負(fù)脈沖。 計(jì)數(shù)過(guò)程一旦啟動(dòng),GATE即使變成低電平也無(wú)妨。 無(wú)論計(jì)數(shù)是否完成,若GATE再來(lái)一個(gè)正跳變,則計(jì)數(shù)過(guò)程重新開(kāi)始(若在計(jì)數(shù)沒(méi)結(jié)束GATE就來(lái)一個(gè)正跳變,則相當(dāng)于使單穩(wěn)脈沖加寬)。 若在計(jì)數(shù)沒(méi)結(jié)束時(shí)改變計(jì)數(shù)初值,不影響計(jì)數(shù)過(guò)程,只有再次硬件觸發(fā)啟動(dòng)時(shí),才按新計(jì)數(shù)初值開(kāi)始計(jì)數(shù)。方式方式2 2:速率發(fā)生器:速率發(fā)生器 方式2的計(jì)數(shù)既可以軟件啟動(dòng),也可以硬件啟動(dòng)。若送計(jì)數(shù)初值時(shí)GATE1,則為軟件啟動(dòng),在寫(xiě)入計(jì)數(shù)初值后啟動(dòng)計(jì)數(shù);若送計(jì)數(shù)初值時(shí)GATEO,則為硬件啟動(dòng),即送完計(jì)數(shù)初值后并不開(kāi)始計(jì)數(shù),直到GATE出現(xiàn)正跳變后開(kāi)始計(jì)數(shù)。 方式2一且啟動(dòng)后,計(jì)數(shù)器可以自動(dòng)重復(fù)工作。即:計(jì)數(shù)結(jié)束后,

46、會(huì)自動(dòng)重新裝入計(jì)數(shù)初值,重新開(kāi)始計(jì)數(shù)。 以軟件啟動(dòng)為例,寫(xiě)入方式2的控制字后,OUT變高。此時(shí)若GATE=1,則為軟件啟動(dòng)。在寫(xiě)入計(jì)數(shù)初值后,計(jì)數(shù)器即對(duì)CLK計(jì)數(shù)。當(dāng)計(jì)數(shù)值減到1時(shí)OUT變低,計(jì)數(shù)器減至0,OUT回到高,計(jì)數(shù)器又自動(dòng)從初值開(kāi)始計(jì)數(shù)。 在OUT端,每N個(gè)CLK信號(hào)中輸出一個(gè)寬度等于CLK信號(hào)周期的負(fù)脈沖。方式方式3 3:方波發(fā)生器:方波發(fā)生器 方式3也兼有兩種啟動(dòng)方式,且能自動(dòng)重復(fù)計(jì)數(shù)。計(jì)數(shù)OUT端的波形不是負(fù)脈沖,而是方波。 在寫(xiě)入方式3的控制字后,計(jì)數(shù)器OUT端立即變高,若GATE0時(shí)為硬件啟動(dòng),GATE正跳變啟動(dòng)計(jì)數(shù)。若GATE1時(shí)則為軟件啟動(dòng),在寫(xiě)完計(jì)數(shù)初值N后,開(kāi)始對(duì)C

47、LK信號(hào)計(jì)數(shù)。計(jì)數(shù)到N/2時(shí)OUT端變低,計(jì)完余下的N/2,OUT又變回高,如此自動(dòng)重復(fù)。OUT端產(chǎn)生周期為N*TCLK方波。實(shí)際上,電路中對(duì)半周期N/2的控制方法是每來(lái)一個(gè)CLK信號(hào),讓計(jì)數(shù)器器2,因此來(lái)N/2個(gè)CLK信號(hào)后,計(jì)數(shù)器就已經(jīng)減到O,OUT端發(fā)生一次高低電位的變化,且又將初值裝入計(jì)數(shù)器重新開(kāi)始。若計(jì)數(shù)初值為奇數(shù),計(jì)數(shù)的前半周期為(N+1)/2,后半周期為(N-1)/2。方式方式4 4:軟件觸發(fā)選通:軟件觸發(fā)選通 方式4是一種軟件啟動(dòng)、不自動(dòng)重復(fù)的計(jì)數(shù)方式。在寫(xiě)入方式4控制字后,OUT變高,若GATE1,寫(xiě)計(jì)數(shù)初值后的第一個(gè)CLK信號(hào)上升沿將初值N置入計(jì)數(shù)器,CLK信號(hào)下降沿開(kāi)始做

48、減法,(N+1)個(gè)CLK信號(hào)后減到O,OUT變低,第(N+2)個(gè)CLK信號(hào)使OUT又回到高而停止,形成一個(gè)TCLK的負(fù)脈沖。方式方式5: 5: 硬件觸發(fā)選通硬件觸發(fā)選通 方式5是硬件啟動(dòng)、不自動(dòng)重復(fù)的計(jì)數(shù)方式。寫(xiě)入方式控制字后,OUT變高,寫(xiě)入計(jì)數(shù)初值時(shí),即使GATE1,計(jì)數(shù)過(guò)程也仍不啟動(dòng),而是要求GATE出現(xiàn)一個(gè)正跳變的上升沿,下一個(gè)CLK信號(hào)才開(kāi)始計(jì)數(shù),計(jì)數(shù)器減到0時(shí),OUT變低,經(jīng)過(guò)一個(gè)CLK信號(hào)后,OUT變高且一自保持。82538253工作方式一覽表工作方式一覽表例1:設(shè)計(jì)8253初始化程序,要求滿足使計(jì)數(shù)器0工作在方式1,二進(jìn)制計(jì)數(shù),計(jì)數(shù)值為805AH(設(shè)口地址為4AOH4A3H)。

49、控制字:例2:設(shè)計(jì)一定時(shí)系統(tǒng),要求定時(shí)100ms發(fā)一脈沖,口地址:為250257H,系統(tǒng)提供8MHz時(shí)鐘,CPU為8086最小工作模式。分析:系統(tǒng)提供8MHz時(shí)鐘,T= 1/8MHz= 125ns65535方法一:選用8253實(shí)現(xiàn)定時(shí) 將8MHz經(jīng)4分頻后得2MHz,T=500ns380ns。N=1OOms/T=200000=20000*1O=9C40H*OAH設(shè)計(jì)數(shù)器0(CNT0),采用方式2,定時(shí)觸發(fā)脈沖 計(jì)數(shù)器1(CNT1),采用方式2,定時(shí)觸發(fā)脈沖 1、計(jì)數(shù)器0控制字:0 0 1 1 0 1 0 0 B = 34H 計(jì)數(shù)初值=9C40H 2、計(jì)數(shù)器1控制字:0 1 0 1 0 1 0

50、0 B = 54H 計(jì)數(shù)初值=OAH方法二:選用8254實(shí)現(xiàn)定時(shí) 8MHz時(shí)鐘不需要分頻,可以直接接入,N=1OOms/(1/8MHz)=1OOms/125ns=800000=800*1000(設(shè)采用十進(jìn)制數(shù)計(jì)數(shù)) 1、計(jì)數(shù)器0控制字:0 0 1 0 0 1 0 1 B =25H 計(jì)數(shù)初值=08H(為BCD碼) 2、計(jì)數(shù)器1控制字:0 1 1 0 0 1 0 1 B =65H 計(jì)數(shù)初值=1OH(為BCD碼)例3:設(shè)計(jì)用8253控制揚(yáng)聲器發(fā)出1KHz的聲音,直到有鍵按下為止,設(shè)系統(tǒng)提供2MHz時(shí)鐘,8088最小工作模式,口地址為40H-47H。分析: 1、系統(tǒng)提供2MHz時(shí)鐘,T=1/2MHz=

51、500ns380ns 2、計(jì)數(shù)初值:N=(1/1KHz)/(1/2MHz)=200065536 3、選一個(gè)計(jì)數(shù)通道,設(shè):用計(jì)數(shù)器0 4、采用方式3,可產(chǎn)生連續(xù)方波。 5、控制字: a、工作方式控制字: 0 0 1 1 0 1 1 0 B= 36H 送入控制寄存器中 b、計(jì)數(shù)初值=2000。送入計(jì)數(shù)器0中 6、通過(guò)對(duì)D觸發(fā)器控制,實(shí)現(xiàn)對(duì)揚(yáng)聲器發(fā)聲的控制 7、設(shè)8253口地址為40H - 43H,D觸發(fā)器的地址為44H上電后Q為0,揚(yáng)聲器不響。8253初始化后,OUT0輸出方波,但揚(yáng)聲器仍不響。直到使Q為1時(shí),揚(yáng)聲器才以方波的頻率發(fā)音。例4:試編程讀取8253中計(jì)數(shù)通道2的當(dāng)前計(jì)數(shù)值。設(shè)8253口

52、地址為lEOH-lE3H。分析:由于8253計(jì)數(shù)通道為16位,而8253與CPU的數(shù)據(jù)傳輸通道為8位,也就是說(shuō),在讀16位計(jì)數(shù)值時(shí)需要兩次完成,且要求先讀低字節(jié),再讀高字節(jié)。首先通過(guò)設(shè)置控制字將當(dāng)前計(jì)數(shù)值進(jìn)行鎖存,然后再讀計(jì)數(shù)值。程序段: MOV AL,1000 0000B; 鎖存計(jì)數(shù)器2的計(jì)數(shù)值 MOV DX,1E3H;設(shè)置控制字口地址 OUT DX,AL;送控制字 MOV DX,1E2H;設(shè)置計(jì)數(shù)器2口地址 IN AL,DX;從計(jì)數(shù)器2讀計(jì)數(shù)低字節(jié) MOV AH,AL IN AL,DX;從計(jì)數(shù)器2讀計(jì)數(shù)高字節(jié) XCHG AH,AL 中斷控制器8259A的功能就是在有多個(gè)中斷源的系統(tǒng)中,接收

53、外部的中斷請(qǐng)求,先進(jìn)行優(yōu)先級(jí)判斷,選中當(dāng)前優(yōu)先級(jí)最高的中斷請(qǐng)求,再將此請(qǐng)求送到CPU的可屏蔽中斷請(qǐng)求INTR端。當(dāng)CPU響應(yīng)中斷時(shí),能自動(dòng)向CPU提供該中斷源的中斷類型碼,當(dāng)CPU進(jìn)入中斷處理程序的處理過(guò)程后,中斷控制器仍負(fù)責(zé)對(duì)外部中斷請(qǐng)求的管理。比如當(dāng)某個(gè)外部中斷請(qǐng)求的優(yōu)先級(jí)高于當(dāng)前正在處理的中斷優(yōu)先級(jí)時(shí),中斷控制器會(huì)讓此中斷通過(guò)而到達(dá)CPU的INTR端,從而實(shí)現(xiàn)中斷的嵌套,反之,對(duì)其他級(jí)別較低的中斷給于禁止。 8259A的工作特點(diǎn): (1)1片8259A能管理8級(jí)中晰,并且在基本不增加其他電路的情況下,可以用9片8259A構(gòu)成64級(jí)的主從式中斷系統(tǒng)。 (2) 8259A通過(guò)編程工作在多種不

54、同的方式下。 (3) 8259A用NMOS工藝制造,只需一組5V電源。ICW1、OCW2、OCW3占同一地址,通過(guò)特征位區(qū)別。ICW2、ICW3、ICW4、OCW1,4個(gè)命令字占同一地址,按順序?qū)懭爰纯?。根?jù)本次操作前所寫(xiě)入OCW3的內(nèi)容,響應(yīng)從IRR或ISR或中斷級(jí)別編碼中選一個(gè)讀出。 在使用8259A時(shí),必須用程序選定其工作狀態(tài)。8259A的四個(gè)初始化命令字必須按順序?qū)懭耄乙话悴恢貜?fù)寫(xiě)。主片和從片需分別初始化,且不盡相同。8259A初始化順序:0不寫(xiě)1寫(xiě)ICW40多片級(jí)聯(lián)1單片對(duì)于80 x86總為000對(duì)于80 x86總為00上升沿觸發(fā)1高電平觸發(fā)ICW1的特征位偶地址 向偶地址中寫(xiě)入

55、一個(gè)D41的字節(jié),即認(rèn)為是ICW1。寫(xiě)入ICW1后,則啟動(dòng)了8259A的初始化過(guò)程,8259A默認(rèn)處于一般完全嵌套方式,中斷屏蔽寄存器OCW1清為0,允許中斷。根據(jù)IRx信號(hào)自動(dòng)填入:000-IR0001-IR1010-IR2011-IR3100-IR4101-IR5110-IR6111-IR7中斷類型碼奇地址中斷類型碼的高5位就是ICW2的高5位。中斷類型碼的低3位由中斷請(qǐng)求的引腳IRx決定。例:若寫(xiě)ICW2為40H,則中斷類型號(hào)范圍為40H,41H,46H,47H若寫(xiě)ICW2為45H,則中斷類型號(hào)范圍為40H,41H,46H,47H即只有40H,45H的高5位01000有含義。主片命令字:

56、Sx1表示IRx有從片接入Sx0表示IRx無(wú)從片接入奇地址從片命令字:從片識(shí)別碼,表示該從片接在主片的哪個(gè)IR端奇地址無(wú)用,一般為0如ID2,IDl,IDO=lOO,則表示該8259接在主片8259的IR4端。如:ICW3=OOOlOOOOB,則表示主片8259的IR4端有從片接入。0一般嵌套1特殊嵌套(一般用于多片方式)奇地址08080/808518086/80880正常EOI1自動(dòng)EOI0X非緩沖方式10從片緩沖11主片緩沖未定義注意:(1)ICWI-ICW4必需順序?qū)懭?,即使改變一個(gè)參數(shù)也需全部重新寫(xiě)入ICW。(2)單片只寫(xiě)ICWl,ICW2,ICW4。級(jí)連ICW1ICW4全寫(xiě),但主、從

57、片的ICW3不同。(3)ICWl的AO=0,其它ICW的AO=1。 8259A在初始化編程后,應(yīng)進(jìn)行工作編程,即寫(xiě)入操作命令字。操作命令字共有三個(gè)(OCW1、OCW2、OCW3),它們或地址不同,或有自己的特征位,因此寫(xiě)入的順序沒(méi)有要求。這些操作命令字可根據(jù)需要允許重復(fù)寫(xiě)入。0允許IRx中斷1屏蔽IRx中斷奇地址如:OCW1=80H,則表示IR7端的中斷被屏蔽。編碼:00000011010201131004101511061117偶地址說(shuō)明:EOI命令: 在初始化編程時(shí),如果在ICW4中設(shè)置了正常結(jié)束EOI方式,則在程序結(jié)束前應(yīng)通過(guò)送OCW2命令字實(shí)現(xiàn)送結(jié)束命令EOI。EOI命令有兩種形式:特

58、征位EOI命令編碼有效優(yōu)先權(quán)循環(huán)1、正常結(jié)束EOI命令:SL、EOI01,表明通知8259A當(dāng)前正在服務(wù)的中斷已結(jié)束,清除ISR中的相應(yīng)位(置0)。2、特定EOI命令:SL、EOI11,除了通知8259A當(dāng)前正在服務(wù)的中斷已結(jié)束,同時(shí)根據(jù)L2L0指定編碼,清除ISR中的相應(yīng)位(置0)。 設(shè)置優(yōu)先級(jí)方式 8259A共有3種優(yōu)先級(jí)方式:1、完全嵌套方式:指定IR0優(yōu)先級(jí)最高,IR7優(yōu)先級(jí)最低。如:IR3、IR5同時(shí)申請(qǐng)中斷,則先響應(yīng)IR3,若在響應(yīng)IR3期間,IR2和IR4申請(qǐng)中斷,則會(huì)掛起IR3,響應(yīng)IR2。IR2結(jié)束后,繼續(xù)響應(yīng)IR3,最后響應(yīng)IR4。2、自動(dòng)循環(huán)嵌套方式:R、SL10,這種方

59、式,當(dāng)某個(gè)IR被響應(yīng)之后,將自動(dòng)變?yōu)樽畹偷膬?yōu)先級(jí),在其它IR被響應(yīng)前,這個(gè)IR不會(huì)再被響應(yīng)。如:IR3被響應(yīng)后,優(yōu)先級(jí)變?yōu)镮R3IR4IR5IR6IR7IR0IR1IR2。3、按編碼循環(huán)嵌套方式:R、SL11,這種方式,由L2L0指定哪個(gè)優(yōu)先級(jí)最低。如: R、SL11,L2L1L0=010,則優(yōu)先級(jí)變?yōu)镮R2IR3IR4IR5IR6IR7IR0IR1。0X無(wú)用10查詢IRR11查詢ISR偶地址說(shuō)明:中斷屏蔽方式:1、一般屏蔽方式:D5D610,此時(shí)所有中斷源是否被屏蔽由IMR決定。2、特殊屏蔽方式:D5D611,此時(shí)所有IMR開(kāi)放的中斷源均可請(qǐng)求,不受優(yōu)先級(jí)的高低制約,優(yōu)先級(jí)低的也可中斷優(yōu)先級(jí)

60、高的。中斷查詢方式: 8259A可工作在查詢方式,OCW3的P(D2)設(shè)置為1,CPU通過(guò)同一口地址讀入1個(gè)中斷識(shí)別編碼,可判斷中斷的情況。特征位0X無(wú)用10一般屏蔽模式11特殊屏蔽模式0非查詢命令1查詢命令讀IRR和ISR的操作: 如果OCW3的P(D2)0,則同一地址讀入的可能是中斷請(qǐng)求寄存器IRR或中斷服務(wù)寄存器ISR。當(dāng)D1D010,表示用IN指令從本偶地址讀入的是IRR;當(dāng)D1D011,表示用IN指令從本偶地址讀入的是ISR;最高優(yōu)先級(jí)申請(qǐng)的中斷源編碼偶地址0無(wú)中斷1有中斷分兩步:1、外設(shè)8259A8259A處理外設(shè)中斷申請(qǐng),決定是否向CPU發(fā)中斷申請(qǐng)信號(hào)。2、8259ACPU若82

溫馨提示

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

評(píng)論

0/150

提交評(píng)論