版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第8章串行接口本章內(nèi)容:概述可編程串行接口8251A8251A的應(yīng)用8.1概述本節(jié)內(nèi)容:串行通信的基本概念串行數(shù)據(jù)傳輸方式串行通信的類型串行接口和串行接口標(biāo)準(zhǔn)8.1.1串行通信的基本概念通信的基本方式可分為:并行通信:把一個字符的各數(shù)位用幾根數(shù)據(jù)線同時(shí)進(jìn)行傳輸。串行通信:數(shù)據(jù)逐位順序傳送。優(yōu)點(diǎn):是用于通信的線路少,在遠(yuǎn)距離通信時(shí)可以極大地降低成本。缺點(diǎn):相對并行通信方式,串行通信速度較慢PC機(jī)上一般都有兩個串行異步通信接口COM1和COM2,鍵盤、鼠標(biāo)器與主機(jī)之間也常采用串行數(shù)據(jù)傳送方式。8.1.2串行數(shù)據(jù)傳輸方式目前,在微機(jī)通信系統(tǒng)中,單工方式很少采用,多數(shù)是采用半雙工或全雙工方式。調(diào)制和解調(diào)當(dāng)微機(jī)系統(tǒng)通過電話線路進(jìn)行數(shù)據(jù)傳送時(shí),常需要調(diào)制解調(diào)器(Modem)。為了通過電話線路發(fā)送數(shù)字信號,必須先把數(shù)字信號轉(zhuǎn)換為適合在電話線路上傳送的模擬信號,這就是調(diào)制(Modulating);經(jīng)過電話線路傳輸后,在接收端再將模擬信號轉(zhuǎn)換為數(shù)字信號,這就是解調(diào)(Demodulating)。8.1.3串行通信的類型串行通信時(shí),數(shù)據(jù)、控制和狀態(tài)信息都使用同一根信號線傳送。為使通信能順利進(jìn)行,收發(fā)雙方必須遵守共同的通信協(xié)議(通信規(guī)程),才能解決傳送速率、信息格式、同步方式、數(shù)據(jù)校驗(yàn)等問題。根據(jù)同步方式的不同,將串行通信分為兩類:異步通信同步通信1.異步通信串行異步通信以字符為單位進(jìn)行傳輸,采用起止式異步通信協(xié)議。異步通信的字符格式異步通信所采用的字符格式由一組可變“位數(shù)”數(shù)據(jù)組成。第一位為起始位(StartBit),它的寬度為1位,低電平,用于實(shí)現(xiàn)“字符同步”。接著傳送數(shù)據(jù)位(DataBit),數(shù)據(jù)可以由5~8個二進(jìn)制位組成,按照先低位后高位的順序逐位傳送。數(shù)據(jù)位傳送完成后可以選擇一個奇偶檢驗(yàn)位(ParityBit),用于校驗(yàn)是否正確傳送了數(shù)據(jù),可以選擇奇校驗(yàn),也可以選擇偶校驗(yàn),還可以不傳送檢驗(yàn)位。字符最后是停止位(StopBit),以表示這個字符的傳送結(jié)束,寬度可以是1位、1.5位或2位,停止位采用高電平。一個字符傳輸結(jié)束后,可以接著傳輸下一個字符,也可以停一段空閑時(shí)間再傳輸下一個字符,空閑位為高電平。異步通信的工作原理傳送開始后,接收設(shè)備不斷檢測傳輸線是否有起始位到來,當(dāng)接收到一系列的“1”(空閑位或停止位)之后,檢測到第一個“0”,說明起始位出現(xiàn),就開始接收所規(guī)定的數(shù)據(jù)位、奇偶校驗(yàn)位及停止位。經(jīng)過接收器處理,將停止位去掉,把數(shù)據(jù)位拼裝成為一個字節(jié)數(shù)據(jù),經(jīng)校驗(yàn)無誤,則接收完畢。當(dāng)一個字符接收完畢后,接收設(shè)備又繼續(xù)測試傳輸線,監(jiān)視“0”電平的到來和下一個字符的開始,直到全部數(shù)據(jù)接收完畢。異步通信的特點(diǎn)優(yōu)點(diǎn):由于接收方通過每個字符的起始位達(dá)到字符傳送的同步時(shí)鐘作用,所以收/發(fā)雙方設(shè)備較簡單,實(shí)現(xiàn)起來方便,對各字符間的間隔長度沒有限制。缺點(diǎn):每個數(shù)據(jù)要加上起始位、停止位等信息,至少要有20%的冗余時(shí)間,這樣就降低了數(shù)據(jù)的傳送速率。2.同步通信在串行同步通信時(shí)所使用的數(shù)據(jù)格式根據(jù)控制規(guī)程可分為:面向字符型面向比特型1)面向字符型的數(shù)據(jù)格式由圖8.4可看出,同步通信在每個數(shù)據(jù)中并不加起始和停止位,而是將數(shù)據(jù)順序連接起來,以一個數(shù)據(jù)塊(稱為“幀”)為傳輸單位。從同步通信數(shù)據(jù)格式中可以看出,傳送的數(shù)據(jù)信息越長,數(shù)據(jù)傳輸效率越高,故同步通信運(yùn)用于要求快速、連續(xù)傳輸大量數(shù)據(jù)的場合。2)面向比特型的數(shù)據(jù)格式面向比特型的數(shù)據(jù)以幀為單位傳輸,每幀由六部分組成。第一部分是開始標(biāo)志“7EH”;第二部分是一個字節(jié)的地址場;第三部分是一個字節(jié)的控制場;第四部分是需要傳送的數(shù)據(jù),數(shù)據(jù)都是位的集合;第五部分是兩個字節(jié)的循環(huán)校驗(yàn)碼;最后部分又是“7EH”,作為結(jié)束標(biāo)志。波特率串行通信的傳輸速率也稱波特率(BaudRate),即每秒傳輸?shù)亩M(jìn)制位數(shù)。標(biāo)準(zhǔn)波特率系列為110、300、600、1200、1800、2400、4800、9600和19200?,F(xiàn)在,數(shù)據(jù)傳輸速率可以達(dá)到115200bps或更高。例如,數(shù)據(jù)傳輸速率為1200,則一位的時(shí)間長度為0.833ms(=1/1200);對于采用1個停止位、不用校驗(yàn)的8位數(shù)據(jù)傳送來說,一個字符共有10位,每秒能傳送120(=1200/10)個字符。異步傳輸與同步傳輸?shù)谋容^在異步傳輸過程中,設(shè)每個字符對應(yīng)1個起始位、7個信息位、1個奇/偶校驗(yàn)位和1個停止位,如果波特率為1200,則每秒鐘能傳輸?shù)淖畲笞址麛?shù)為1200/10=120個。作為比較,再來看一個同步傳輸?shù)睦?。假如也?200的波特率工作,用2個同步字符和2個CRC碼,那么傳輸100個字符所用的時(shí)間為7×(100十4)/1200=0.6067s,這就是說,每秒鐘能傳輸?shù)淖址麛?shù)可達(dá)到100/0.6067=165個??梢姡谕瑯拥膫鬏斔俾氏?,同步傳輸實(shí)際字符傳輸速率要比異步傳輸時(shí)高。8.1.4串行接口和串行接口標(biāo)準(zhǔn)本小節(jié)內(nèi)容:串行接口概述串行接口標(biāo)準(zhǔn)RS-232C1.串行接口概述串行通信實(shí)際上把數(shù)據(jù)一位一位地發(fā)送和接收,而計(jì)算機(jī)處理數(shù)據(jù)是并行的,它要傳輸?shù)臄?shù)據(jù)也是并行的,因此這就需要一個部件把并行數(shù)據(jù)與串行數(shù)據(jù)進(jìn)行轉(zhuǎn)換。對于發(fā)送數(shù)據(jù)端來說,這個部件就是并行輸入串行輸出的移位寄存器,CPU通過對相應(yīng)端口的寫數(shù)操作,把要傳輸?shù)臄?shù)據(jù)寫入這個并入串出移位寄存器中,然后移位寄存器在同步時(shí)鐘的作用下,把數(shù)據(jù)逐位移出,發(fā)送給接收端。對于接收端來說,相應(yīng)的部件是串行輸入并行輸出移位寄存器,在同步時(shí)鐘的作用下,發(fā)送端送來的數(shù)據(jù)逐位移入這個串入并出移位寄存器,然后CPU對相應(yīng)端口進(jìn)行讀數(shù)操作,把串入并出移位寄存器的數(shù)據(jù)讀入CPU中。串行通信接口電路是微型計(jì)算機(jī)系統(tǒng)另一個重要的外圍I/O接口電路,它可以方便地實(shí)現(xiàn)CPU與I/O設(shè)備的串行數(shù)據(jù)的通信。例如,可以將CRT顯示終端、打印機(jī)或調(diào)制解調(diào)器連接到微機(jī)上。2.串行接口標(biāo)準(zhǔn)RS-232CRS-232C是由美國電子工業(yè)協(xié)會(ElectronicsIndustriesAssociation,EIA)于1962年公布,并于1969年修訂的一種國際通用的串行接口標(biāo)準(zhǔn)。它最初是為遠(yuǎn)程通信連接數(shù)據(jù)終端設(shè)備(DataTerminalEquipment,DTE)(例如計(jì)算機(jī))和數(shù)據(jù)通信設(shè)備(DataCommunicationEquipment,DCE)(例如調(diào)制解調(diào)器)制定的標(biāo)準(zhǔn),目前已廣泛用作計(jì)算機(jī)與終端或外部設(shè)備的串行通信接口標(biāo)準(zhǔn)。利用RS-232C接口不僅可以實(shí)現(xiàn)遠(yuǎn)距離通信,也可以實(shí)現(xiàn)近距離連接兩臺微機(jī)或電子設(shè)備。目前,PC機(jī)上的COM1、COM2接口就是RS-232C接口。EIA電平RS-232C接口標(biāo)準(zhǔn)采用EIA電平。規(guī)定:高電平為+5V~+15V低電平為-5V~-15VRS-232C的數(shù)據(jù)線TxD和RxD使用負(fù)邏輯,即高電平表示邏輯0,低電平表示邏輯1。聯(lián)絡(luò)信號線為正邏輯,高電平有效,低電平無效。TTL和RS-232C之間的電平轉(zhuǎn)換電路使用MODEM的RS-232C接口RS-232C的三線連接方法由于通信雙方并未進(jìn)行聯(lián)絡(luò)應(yīng)答,所以采用三線連接方式時(shí),應(yīng)注意傳輸?shù)目煽啃?。例如,發(fā)送方無法知道接收方是否可以接收數(shù)據(jù)、是否接收到了數(shù)據(jù)。傳輸?shù)目煽啃孕枰密浖硖岣?,例如先發(fā)送一個字符,等待接收方確認(rèn)之后(回送一個響應(yīng)字符)再發(fā)送下一個字符。8.2可編程串行接口8251AIntel8251A是一種通用的同步異步接收/發(fā)送器。本節(jié)內(nèi)容:8251A的基本工作原理8251A的引腳和外部連接8251A的編程8.2.18251A的基本工作原理8251A的主要功能特點(diǎn):可用于串行異步通信也可用于同步通信。對于異步通信,其字符格式為1個起始位,5~8個數(shù)據(jù)位,1位、1.5位或2位停止位;對于同步通信,可設(shè)定單同步、雙同步或者外同步。同步字符可由用戶自行設(shè)定。異步通信的時(shí)鐘頻率(外部時(shí)鐘)可設(shè)定為傳輸速率的l倍、16倍或64倍。異步通信的波特率的可選范圍為0~19.2kb/s。同步通信時(shí),速率的可選范圍為0~64kb/s。能夠以單工、半雙工、全雙工方式進(jìn)行通信。提供與外部設(shè)備(特別是調(diào)制解調(diào)器)的聯(lián)絡(luò)信號,便于直接和通信線路連接。8251A的內(nèi)部結(jié)構(gòu)框圖1.數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器通過D7~D0引腳和系統(tǒng)的數(shù)據(jù)總線相連。包括三部分:接收數(shù)據(jù)緩沖寄存器:暫存接收到的準(zhǔn)備送往CPU的數(shù)據(jù)。發(fā)送數(shù)據(jù)緩沖寄存器:暫存來自CPU的數(shù)據(jù)或控制字。8251A寫入的控制命令和發(fā)送的數(shù)據(jù)共用同一寄存器。狀態(tài)字緩沖寄存器:寄存8251A接收或發(fā)送操作的各種工作狀態(tài)。2.讀/寫控制電路讀/寫控制電路用來接收CPU輸出的一系列的控制信號。由它們可確定8251A處于何種狀態(tài),并向8251A內(nèi)部各功能部件發(fā)出有關(guān)的控制信號。3.發(fā)送器由發(fā)送緩沖器、發(fā)送移位寄存器及發(fā)送控制電路組成。CPU需要發(fā)送的數(shù)據(jù)經(jīng)數(shù)據(jù)發(fā)送緩沖寄存器并行輸入,并鎖存到發(fā)送緩沖器中。如果采用異步方式,則由發(fā)送控制電路在其首尾加上起始位和停止位,然后從起始位開始,經(jīng)移位寄存器從數(shù)據(jù)輸出線TxD逐位串行輸出,其發(fā)送速率由引腳TXC上收到的發(fā)送時(shí)鐘頻率決定。如果采用同步方式,則在發(fā)送數(shù)據(jù)之前,發(fā)送器將自動送出1個(單同步)或2個(雙同步)同步字符(SYNC),然后逐位串行輸出數(shù)據(jù)。當(dāng)發(fā)送器做好發(fā)送數(shù)據(jù)準(zhǔn)備時(shí),由發(fā)送控制電路向CPU發(fā)出TxRDY有效信號,CPU可立即向8251A并行輸出數(shù)據(jù)。如果8251A與CPU之間采用中斷方式傳輸信息,則TxRDY可作為向CPU發(fā)出中斷請求的信號。當(dāng)發(fā)送器中的所有數(shù)據(jù)發(fā)送完畢時(shí),由發(fā)送控制電路向CPU發(fā)出TxE有效信號,表示發(fā)送器中移位寄存器已空。4.接收器包括接收緩沖器、接收移位寄存器和接收控制電路。從外部通過數(shù)據(jù)接收端RxD接收的串行數(shù)據(jù)逐位進(jìn)入接收移位寄存器中。如果是異步方式,則應(yīng)識別并刪除起始位和停止位;如果是同步方式,則要檢測到同步字符,確認(rèn)已經(jīng)達(dá)到同步,接收器才可開始接收串行數(shù)據(jù)。待一組數(shù)據(jù)接收完畢,便把移位寄存器中的數(shù)據(jù)并行置入接收緩沖器中,同時(shí)RxRDY引腳輸出高電平,表示接收器中已準(zhǔn)備好數(shù)據(jù),等待向CPU傳送。其接收數(shù)據(jù)的速率取決于RXC端輸入的接收時(shí)鐘頻率。5.調(diào)制解調(diào)控制邏輯當(dāng)8251A實(shí)現(xiàn)遠(yuǎn)距離串行通信時(shí),該電路是8251A將數(shù)據(jù)輸出端的數(shù)字信號轉(zhuǎn)換為模擬信號,或?qū)?shù)據(jù)接收端的模擬信號解調(diào)成數(shù)字信號的接口電路。它能使8251A與調(diào)制解調(diào)器直接相連。8251A的調(diào)制解調(diào)控制邏輯雖然提供了一些基本控制信號,但沒有提供RS-232C標(biāo)準(zhǔn)中的全部信號,其輸入/輸出電平可以和TTL電平相兼容,但如果需要和RS-232C的電平進(jìn)行連接,則需要如圖8.6所示的電平轉(zhuǎn)換電路。8.2.28251A的引腳和外部連接作為CPU與外設(shè)或調(diào)制解調(diào)器之間的接口電路,因此它的接口信號分為兩組:8251A和CPU之間的信號8251A與外設(shè)或調(diào)制解調(diào)器之間的信號8251A引腳圖8251A與CPU及外設(shè)的接口圖1.825lA和CPU之間的信號主要有:C/D信號RxRDY信號SYNDET/BRKDET信號TxRDY信號TxE信號控制/數(shù)據(jù)線信號C/D輸入信號。此引腳為高電平,則數(shù)據(jù)信號線D7~D0上的信息是狀態(tài)信息或控制信息。此引腳為低電平,則數(shù)據(jù)信號線D7~D0上的信息是數(shù)據(jù)信息。它一般由CPU低位地址線提供。接收器準(zhǔn)備好信號RXRDY高電平有效,輸出信號。當(dāng)8251A已從它的串行輸入端RXD接收了一個字符,可以傳送到CPU時(shí),此信號有效。當(dāng)CPU與8251A之間用查詢方式交換信息時(shí),此信號可作為一個狀態(tài)信號。當(dāng)CPU與8251A之間用中斷方式交換信息時(shí),此信號可作為825lA的一個中斷請求信號。當(dāng)CPU讀了一個字符后,此信號復(fù)位。同步檢測信號SYNDET/斷點(diǎn)檢測信號BRKDET復(fù)用功能引腳,高電平有效。對于異步方式,該引腳功能為斷點(diǎn)檢測端BRKDET。若在起始位之后,從RxD端上連續(xù)收到8個“0”信號,則輸出端BRKDET為高電平,表示當(dāng)前處于斷點(diǎn)狀態(tài),無數(shù)據(jù)可接收。若從RxD端上接收到“1”信號,BRKDET由高電平變?yōu)榈碗娖健τ谕椒绞?,該引腳功能為同步檢測端SYNDET。如果采用內(nèi)同步,則SYNDET為輸出端,高電平有效。當(dāng)從RxD端上檢測到一個(單同步)或2個(雙同步)同步字符時(shí),SYNDET輸出高電平有效信號,表示接收數(shù)據(jù)已處于同步狀態(tài),后面接收到的是有效數(shù)據(jù)。如果采用外同步,則SYNDET為輸入端,外同步字符從該端輸入,SYNDET為高電平有效信號時(shí),表示已達(dá)到同步,接收器可開始串行接收數(shù)據(jù)。發(fā)送器準(zhǔn)備好信號TXRDY高電平有效,輸出信號。用來通知CPU,8251A已準(zhǔn)備接收一個數(shù)據(jù)。當(dāng)CPU與8251A之間用查詢方式交換信息時(shí),此信號可作為一個狀態(tài)信號。當(dāng)CPU與8251A之間用中斷方式交換信息時(shí),此信號可作為8251A的一個中斷請求信號。當(dāng)8251A從CPU接收了一個字符時(shí),此信號復(fù)位。發(fā)送器空信號TxE高電平有效,輸出信號。當(dāng)它有效時(shí),表示發(fā)送器中的并行到串行轉(zhuǎn)換器空。TxRDY和TxE的區(qū)別在于,TxRDY有效表示發(fā)送緩沖器已空,而TxE有效表示發(fā)送移位寄存器已空。2.8251A與外設(shè)或調(diào)制解調(diào)器之間的信號主要有:DTR和DSR信號RTS和CTS信號RxC和RxD信號TxC和TxD信號DTR和DSR信號數(shù)據(jù)終端準(zhǔn)備好信號DTR低電平有效,輸出信號。用以表示CPU準(zhǔn)備就緒。數(shù)據(jù)裝置準(zhǔn)備好信號DSR低電平有效,輸入信號。表示調(diào)制解調(diào)器或外設(shè)已難備好。該信號實(shí)際上是對DTR的回答。DTR和DSR是一組信號,通常用于接收器。RTS和CTS信號請求發(fā)送信號RTS(RequestToSend)低電平有效,輸出信號。等效于DTR,用于通知CPU準(zhǔn)備就緒。允許發(fā)送信號CTS(ClearToSend)低電平有效,輸入信號。是調(diào)制解調(diào)器或外設(shè)對8251A的RTS信號的回答。RXC和RXD信號接收器時(shí)鐘信號RxC(ReceiverClock)輸入信號??刂平邮掌鹘邮兆址乃俣?。在同步方式時(shí),等于波特率,由調(diào)制解調(diào)器提供;在異步方式時(shí),是波特率的1,16或64倍,即波特率系數(shù)的倍數(shù),由方式控制字確定,這有利于在位信號的中間對每位數(shù)據(jù)進(jìn)行多次采樣,以減少讀數(shù)錯誤。在RxC的上升沿采樣RxD。接收器數(shù)據(jù)信號RxD字符在這條線上串行地被接收,在接收器中轉(zhuǎn)換為并行格式的字符。TXC和TXD信號發(fā)送時(shí)鐘信號TxC輸入信號。控制發(fā)送器發(fā)送字符的速度。時(shí)鐘速度與波特率之間的關(guān)系同RxC。數(shù)據(jù)是在TxC的下降沿由TxD逐位發(fā)出。發(fā)送器數(shù)據(jù)信號TxD由CPU送來的并行格式字符在這條線上被串行地發(fā)送。8.2.38251A的編程8251A是可編程的多功能通信接口,在用它傳送數(shù)據(jù)之前必須對它進(jìn)行初始化,確定它的工作方式。。改變8251A的工作方式,也必須要對其再次進(jìn)行初始化編程。本小節(jié)內(nèi)容:工作方式控制字命令控制字狀態(tài)字初始化編程1.工作方式控制字2.命令控制字只有寫入命令控制字后,8251A才能處于相應(yīng)的運(yùn)行狀態(tài),接收或發(fā)送數(shù)據(jù)。3.狀態(tài)字工作方式控制字、同步字符、命令控制字都是CPU寫入8251A的,以控制8251A工作方式和操作。但8251A在實(shí)際的發(fā)送或接收數(shù)據(jù)過程中的狀態(tài)如何?CPU可通過I/O讀操作把8251A的狀態(tài)字讀入加以分析,以便控制CPU與8251A的數(shù)據(jù)交換。4.初始化編程初始化編程舉例8251A工作于異步方式,波特率系數(shù)為64,7位數(shù)據(jù)位,2位停止位,采用偶校驗(yàn),則工作方式控制字為11111011B,即FBH。操作命令使接收允許,發(fā)送允許,出錯復(fù)位,則命令控制字為000l0101B,即15H。設(shè)825lA端口地址為FEH,則初始化程序如下:MOVAL,0FBH;送工作方式控制字OUT0FEH,ALMOVAL,15H;送命令控制字OUT0FEH,AL8.38251A的應(yīng)用利用PC機(jī)的RS-232C接口,可以以方便地與另一臺PC機(jī)或單片機(jī)系統(tǒng)(如MCS-51系統(tǒng))之間相互傳輸數(shù)據(jù)。本節(jié)內(nèi)容:RS-232C串口通信接線方法與軟件編程BIOS串行通信口功能利用BIOS串行通信功能的軟件編程1.RS-232C串口通信接線方法與軟件編程雖然標(biāo)準(zhǔn)串口的信號線很多,但由于RS-232C是全雙工通信,在實(shí)際應(yīng)用時(shí),PC機(jī)與其它系統(tǒng)相連,可采用三線制連接。三線制就是指發(fā)送數(shù)據(jù)線TxD、接收數(shù)據(jù)線RxD及信號地線GND。連接時(shí),雙方的地線直接相連,收發(fā)數(shù)據(jù)線交叉相連。圖8.16是一個雙機(jī)通信的原理圖。設(shè)8251A工作于異步方式,波特率系數(shù)為64,8位數(shù)據(jù)位,1位停止位,采用偶校驗(yàn)。查詢傳送的工作原理:發(fā)送方8086每查詢到本機(jī)8251A的TXRDY狀態(tài)位為1,就向8251A并行輸出一個數(shù)據(jù),再由本機(jī)8251A向?qū)Ψ酱邪l(fā)送;接收方8086每查詢到本機(jī)8251A的RXRDY狀態(tài)位為1,就將本機(jī)8251A接收到的串行數(shù)據(jù)已經(jīng)變換后的并行數(shù)據(jù)輸入8086。設(shè)發(fā)送方(1)的數(shù)據(jù)口地址為FFF0H,控制口地址為FFF2H;接收方(2)的數(shù)據(jù)口地址為FFF8H,控制口地址為FFFAH。設(shè)發(fā)送數(shù)據(jù)塊首地址為2000H,接收緩沖區(qū)首地址為6000H,共傳送100個字節(jié)。8251A用于雙機(jī)通信
8251A用于雙機(jī)通信示意
發(fā)送方初始化程序和發(fā)送控制程序
MOVDX,0FFF2H;送方式選擇控制字 MOVAL,7FH OUTDX,AL MOVAL,11H;送操作命令控制字,允許發(fā)送,出錯復(fù)位 OUTDX,AL MOVSI,2000H MOVCX,100TRANS:MOVDX,0FFF2H;讀狀態(tài)字INAL,DX TESTAL,01H;查詢TXRDY=1? JZTRANS MOVDX,0FFF0H;發(fā)送一個數(shù)據(jù) MOVAL,[SI] OUTDX,AL INCSI LOOPTRANS HLT接收方初始化程序和接收控制程序 MOVDX,0FFFAH;送方式選擇控制字 MOVAL,7FH OUTDX,AL MOVAL,14H;送操作命令控制字,允許接收,出錯復(fù)位 OUTDX,AL MOVSI,6000H MOVCX,100RECEI: MOVDX,0FFFAH;讀狀態(tài)字 INAL,DX TESTAL,02H;查詢RXRDY=1? JZRECEI TESTAL,38H;判斷幀格式錯,溢出錯,奇偶校驗(yàn)錯 JNZERR;有錯則轉(zhuǎn)出錯處理 MOVDX,0FFF8H;接收一個數(shù)據(jù) INAL,DX MOV[SI],AL;存入接收緩沖區(qū) INCSI LOOPRECEI HLT2.BIOS串行通信口功能IBMPC及其兼容機(jī)提供比較靈活的關(guān)于串行口的BIOS中斷調(diào)用方法,即通過INT14H調(diào)用ROMBIOS串行通信口例行程序。1)初始化串行通信口(AH=0)調(diào)用參數(shù):AL=初始化參數(shù)DX=通信口號,0:COM1,1:COM2返回參數(shù):AH=通信口狀態(tài)AL=調(diào)制解調(diào)器狀態(tài)串行通信口狀態(tài)字格式在接收和發(fā)送過程中,錯誤狀態(tài)位(D1,D2,D3,D4位)一旦被置為1,則讀入的接收數(shù)據(jù)已不是有效數(shù)據(jù),所以在串行通信應(yīng)用程序中,應(yīng)檢測數(shù)據(jù)傳輸是否出錯。調(diào)制解調(diào)器狀態(tài)字格式2)向串行通信口寫字符(AH=1)輸入?yún)?shù):AL=所寫字符DX=通信口號,0:COM1,1:COM2輸出參數(shù):寫字符成功:AH.7=0,AL=已寫入的字符寫字符失敗:AH.7=1,AH.0~6=通信口狀態(tài)3)從串行通信口讀字符(AH=2)輸入?yún)?shù):DX=通信口號,0:COM1,1:COM2輸出參數(shù):讀字符成功:AH.7=0,AL=讀入的字符讀字符失?。篈H.7=1,AH.0~6=通信口狀態(tài)4)讀通信口狀態(tài)(AH=3)輸入?yún)?shù):DX=通信口號,0:COM1,1:COM2輸出參數(shù):AH=通信口狀態(tài),AL=調(diào)制解調(diào)器狀態(tài)3.利用BIOS串行通信功能的軟件編程
設(shè)通信雙方有一臺計(jì)算機(jī)為PC,使用COM1端口。在串行通信中,必須首先設(shè)定通信雙方所使用字符串的數(shù)據(jù)結(jié)構(gòu),才能進(jìn)行軟件編程。這里設(shè)數(shù)據(jù)在接收和發(fā)送的字符串中,序號為0的字節(jié)為數(shù)據(jù)長度,其后的字節(jié)為所接收的數(shù)據(jù)。設(shè)COM1口的傳輸速率為2400波特,字符長度為8位,1位停止位,無奇偶校驗(yàn)。接收過程對于接收過程,程序首先用“INT14H,AH=3”來獲得COM1端口的狀態(tài),如果檢測到“數(shù)據(jù)準(zhǔn)備好”位有效,表明COM1口接收到一個數(shù)據(jù),則用“INT14H,AH=2”功能,將字符從COM1口讀到AL寄存器。接收過程的主程序BUFFERDB100DUP(?);定義字符串緩沖區(qū)……MOVAH,0;設(shè)置COM1口MOVAL,0A3HMOVDX,0INT14H……CALLRECEIVE;接收第0號數(shù)據(jù)TESTAH,80H;測試讀是否成功JNZREC_ERROR;不成功,轉(zhuǎn)出錯處理MOVCH,0MOVCL,AL;CL為接收字符串長度LEABX,BUFFER;建立指針MOV[BX],AL;保存數(shù)據(jù)長度REC_LOP1:INCBXCALLRECEIVE;接收數(shù)據(jù)
TESTAH,80HJNZREC_ERRORMOV[BX],AL;存入數(shù)據(jù)LOOPREC_LOP1;循環(huán)……REC_ERROR:…;接收出錯處理接收過程的子程序RECEIVEPROCFAR;接收數(shù)據(jù)子程序,出口AL,AHREC_CHECK:MOVAH,3;讀通信口狀態(tài)字
MOVDX,0;COM1口
INT14HTESTAH,1;測試接收數(shù)據(jù)準(zhǔn)備好位JZREC_CHECK;數(shù)據(jù)未準(zhǔn)備好,再讀狀態(tài)字MOVAH,2;數(shù)據(jù)準(zhǔn)備好,讀通信口數(shù)據(jù)到;AL,通信口狀態(tài)到AHMOVDX,0;COM1口INT14HRETRECEIVEENDP發(fā)送過程發(fā)送程序與接收程序相似,程序首先用INTl4H,AH=3來獲得COM1端口的狀態(tài),如果檢測到“發(fā)送保存寄存器空”位有效,表明可以寫入一個數(shù)據(jù)到COM1,就用IHTl4H,AH=1功能,將字符寫到COM1的發(fā)送保存寄存器中。發(fā)送過程的主程序LEABX,BUFFER;建立指針MOVAL,[BX];取數(shù)據(jù)長度MOVCL,ALMOVCH,0;CX為發(fā)送數(shù)據(jù)長度CALLSEND;發(fā)送數(shù)據(jù)長度TESTAH,80H;測試發(fā)送是否成功JNZSEND_ERROR;不成功,轉(zhuǎn)出錯處理SEND_LOP1:INCBXMOVAL,[BX];取數(shù)據(jù)CALLSEND;發(fā)送數(shù)據(jù)TESTAH,80H;測試發(fā)送是否成功JNZSEND_ERROR;不成功,轉(zhuǎn)出錯處理LOOPSEND_LOP1……SEND_ERROR:……;發(fā)送出錯處理發(fā)送過程的子程序SENDPROCFARPUSHAXSEND_CHECK:MOVAH,3;讀通信口狀態(tài)字MOVDX,0;COM1口INT14HTESTAH,20H;測試“發(fā)送保存寄存器空”位JZSEND_CHECK;發(fā)送保存寄存器滿,再讀狀態(tài)字POPAXMOVAH,1;發(fā)送數(shù)據(jù)MOVDX,0;COM1口INT14HRETSENDENDP第9章計(jì)數(shù)器/定時(shí)器本章內(nèi)容:概述可編程計(jì)數(shù)器/定時(shí)器82538253的應(yīng)用9.1概述在計(jì)算機(jī)系統(tǒng)中經(jīng)常要用到定時(shí)信號:微機(jī)系統(tǒng)中動態(tài)存儲器的刷新定時(shí)系統(tǒng)日歷時(shí)鐘的計(jì)時(shí)喇叭的聲源在計(jì)算機(jī)實(shí)時(shí)控制和處理系統(tǒng)中,計(jì)算機(jī)主機(jī)需要每隔一定的時(shí)間就對處理對象進(jìn)行采樣,再對獲得的數(shù)據(jù)進(jìn)行處理,這也要用到定時(shí)信號。定時(shí)的實(shí)現(xiàn)方法:軟件定時(shí)不可編程的硬件定時(shí)可編程定時(shí)器電路軟件定時(shí)讓計(jì)算機(jī)執(zhí)行一個延遲程序段。通過正確地挑選指令和安排循環(huán)次數(shù)很容易實(shí)現(xiàn)軟件定時(shí)。優(yōu)點(diǎn):節(jié)省硬件缺點(diǎn):執(zhí)行延遲程序期間,CPU一直被占用,降低了CPU的效率。不可編程的硬件定時(shí)可以采用小規(guī)模集成電路器件如555,外接電阻和電容構(gòu)成。定時(shí)電路簡單,而且通過改變電阻和電容,可以使定時(shí)在一定的范圍內(nèi)改變。這種定時(shí)電路在硬件連接好以后,定時(shí)值及定時(shí)范圍不能由程序(軟件)來控制和改變??删幊潭〞r(shí)器電路定時(shí)值及定時(shí)范圍可以很容易地由軟件來確定和改變,功能較強(qiáng),使用靈活。優(yōu)點(diǎn):計(jì)數(shù)時(shí)不占用CPU的時(shí)間,并且如果利用定時(shí)器產(chǎn)生中斷信號,就可以建立多作業(yè)的環(huán)境,可以大大提高CPU的利用率。計(jì)數(shù)器/定時(shí)器本身的開銷并不很大,因此,這種方法得到了廣泛應(yīng)用。9.2可編程計(jì)數(shù)器/定時(shí)器82538253的主要功能:有3個獨(dú)立的、功能相同的16位減法計(jì)數(shù)器。每個計(jì)數(shù)器都可以按照二進(jìn)制或BCD碼進(jìn)行計(jì)數(shù)。每個計(jì)數(shù)器的計(jì)數(shù)速率可高達(dá)2MHz。每個計(jì)數(shù)器有6種工作方式,可由程序設(shè)置和改變。所有的輸入輸出引腳電平都與TTL電平兼容。本節(jié)內(nèi)容:8253的內(nèi)部結(jié)構(gòu)和引腳特性8253的控制字8253的工作方式8253的編程9.2.18253的內(nèi)部結(jié)構(gòu)和引腳特性1)數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是8253與CPU數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,有三方面的功能:往計(jì)數(shù)器設(shè)置計(jì)數(shù)初值從計(jì)數(shù)器讀取計(jì)數(shù)值往控制寄存器設(shè)置控制字2)讀/寫控制邏輯電路接收CPU送來的讀/寫信號(RD/WR),片選信號(CS),端口選擇信號(AlA0),以決定3個計(jì)數(shù)器、控制寄存器中哪一個進(jìn)行工作,以及數(shù)據(jù)傳送的方向。3)控制寄存器每個計(jì)數(shù)器都有一個控制寄存器,用來接收CPU送來的控制字,這個控制字用來選擇計(jì)數(shù)器及相應(yīng)的工作方式等。控制寄存器只能寫入不能讀出,且共用一個控制端口地址。4)計(jì)數(shù)器0~28253內(nèi)部有3個結(jié)構(gòu)完全相同的計(jì)數(shù)器:計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2。每個計(jì)數(shù)器的輸入和輸出都決定于本身所帶的控制寄存器的控制字,互相之間工作完全獨(dú)立。每個計(jì)數(shù)器通過3個引腳和外部聯(lián)系:時(shí)鐘輸入端CLK門控信號輸入端GATE輸出端OUT。每個計(jì)數(shù)器內(nèi)部有:1個8位控制寄存器CW1個16位計(jì)數(shù)初值寄存器CR1個16位減法計(jì)數(shù)執(zhí)行部件CE1個16位輸出鎖存器OL。8253的工作原理由程序首先寫控制字給控制寄存器,再寫計(jì)數(shù)初值給相應(yīng)計(jì)數(shù)器,初值在CR中保存,并送CE中,在GATE門控信號允許或觸發(fā)下,CE便開始對CLK脈沖進(jìn)行減計(jì)數(shù),直到計(jì)數(shù)值被減到0時(shí),計(jì)數(shù)結(jié)束或本周期結(jié)束,輸出OUT端產(chǎn)生相應(yīng)波形。輸出信號的波形由事先規(guī)定的工作方式?jīng)Q定并受控于GATE信號。在減計(jì)數(shù)過程中,CE中當(dāng)前的計(jì)數(shù)值同時(shí)送給OL。因此,若想要知道計(jì)數(shù)過程中的當(dāng)前計(jì)數(shù)值,則必須用指令將當(dāng)前值鎖存,然后從OL中讀出,同時(shí)又不影響CE的連續(xù)計(jì)數(shù)。注意:不能直接從CE中讀出。2.
8253的引腳信號和功能D7~D0數(shù)據(jù)線雙向三態(tài)輸入/輸出數(shù)據(jù)線,與系統(tǒng)數(shù)據(jù)總線相連,供8253與CPU之間傳送數(shù)據(jù)、命令信息用。CS、RD、WR、A1、A0信號CS片選信號輸入,低電平有效。只有在保持低電平的情況下,8253才能被選中,才能對它進(jìn)行讀/寫操作。RD讀信號輸入,低電平有效。有效時(shí),表示CPU正在對8253的一個計(jì)數(shù)器進(jìn)行讀操作。WR寫信號輸入,低電平有效。有效時(shí),表示CPU正在對8253的一個計(jì)數(shù)器寫入計(jì)數(shù)初值或者對控制寄存器寫入控制字。A1、A0地址線3個獨(dú)立的計(jì)數(shù)器各有一個端口地址,另外三個控制寄存器共用一個端口地址,所以8253共有4個端口地址。當(dāng)A1A0=11時(shí),為控制寄存器端口;當(dāng)A1A0=00、01、10時(shí),分別為計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2的端口。8253輸入信號與各功能的對應(yīng)關(guān)系
CLK0~CLK2信號計(jì)數(shù)器0、1、2的(時(shí)鐘)脈沖輸入端,它們各自獨(dú)立。8253進(jìn)行定時(shí)或計(jì)數(shù)工作時(shí),每輸入一個CLK脈沖,計(jì)數(shù)值減1。GATE0~GATE2信號計(jì)數(shù)器0、1、2的門控信號輸入端,它們各自獨(dú)立,用來禁止、暫停、停止、允許、啟動計(jì)數(shù)的控制。在不同的6種工作方式中,GATE控制作用也不同。OUT0~OUT2信號計(jì)數(shù)器0、1、2的輸出信號端,它們各自獨(dú)立。當(dāng)定時(shí)或計(jì)數(shù)值減為0時(shí),在OUT端輸出信號,該信號的波形取決于工作方式。該信號可供CPU檢測、查尋,或作為中斷請求信號使用,也可作為控制信號或信號源使用。9.2.28253的控制字在使用8253前,必須對它進(jìn)行初始化編程。對8253的工作方式、計(jì)數(shù)方式、操作方式的確定和計(jì)數(shù)器的選擇都是由控制字來確定的。不同計(jì)數(shù)器的控制字必須分別設(shè)置,但它的端口地址共用一個。圖9.48253控制字格式圖9.48253控制字格式9.2.38253的工作方式基本規(guī)則:控制字寫入計(jì)數(shù)器時(shí),所有的控制邏輯電路立即復(fù)位,輸出端OUT進(jìn)入初始狀態(tài)(高電平或者低電平)。初始值寫入以后,要經(jīng)過時(shí)鐘的一個上升沿和一個下降沿,計(jì)數(shù)執(zhí)行部件才開始進(jìn)行計(jì)數(shù)。通常,在時(shí)鐘脈沖CLK的上升沿,門控信號GATE被采樣。在時(shí)鐘脈沖的下降沿,計(jì)數(shù)器作減法計(jì)數(shù)。0是計(jì)數(shù)器所能容納的最大初始值,當(dāng)選用二進(jìn)制時(shí),0相當(dāng)于216;用BCD碼時(shí),0相當(dāng)于l04。1.方式0-可編程階躍信號發(fā)生器能使OUT端產(chǎn)生正階躍信號,常被用來作為中斷請求信號。方式0的說明(1)寫入控制字,WR信號的上升沿使OUT端輸出低電平作為初始狀態(tài)。(2)再寫入計(jì)數(shù)初值n,WR信號的上升沿將這個計(jì)數(shù)初值先送到CR中,在WR信號上升沿之后的第一個CLK脈沖的下降沿時(shí)才將初值從CR送到CE中。此時(shí)如果GATE=0,那CE仍不能減1計(jì)數(shù),只有GATE=1條件下,CE立即開始對CLK脈沖下降沿作減1計(jì)數(shù)。在計(jì)數(shù)過程中,OUT端仍輸出低電平,直到減1計(jì)數(shù)到0,OUT端才變?yōu)楦唠娖?。此高電平一直保持到CPU又寫入控制字或又重新寫入新計(jì)數(shù)初值時(shí),OUT端才變?yōu)榈碗娖剑匦麻_始新的計(jì)數(shù)周期。(3)在計(jì)數(shù)過程中,可由門控制信號GATE控制暫停。若GATE由1變?yōu)?,則CE立即暫停計(jì)數(shù),并保持當(dāng)前計(jì)數(shù)值,一旦GATE變?yōu)?,CE接著計(jì)數(shù)。在暫停過程中,OUT端仍輸出低電平,也就是說GATE信號的變化不影響輸出端狀態(tài)。利用這一功能,可延長定時(shí)時(shí)間。(4)在計(jì)數(shù)過程中可改變計(jì)數(shù)初值。若CPU重新寫入新的計(jì)數(shù)初值,則CE停止原計(jì)數(shù),直到信號上升沿后的第1個CLK脈沖的下降沿時(shí)將按新的初值n重新開始計(jì)數(shù)。2.方式1-可編程單穩(wěn)態(tài)輸出方式能使OUT端產(chǎn)生單脈沖波形信號,單脈沖寬度可由程序設(shè)定。方式1的說明(1)寫入控制字后,WR信號的上升沿使OUT端輸出高電平作為初始狀態(tài)(若原為低電平,則由低電平變?yōu)楦唠娖?。(2)再寫入計(jì)數(shù)初值n,WR信號上升沿將這個計(jì)數(shù)初值先送到CR中,在WR信號上升沿之后的第一個CLK脈沖的下降沿時(shí)才將初值從CR送到CE中。然后,只有當(dāng)GATE信號出現(xiàn)上升沿并在上升后的第一個CLK脈沖下降沿時(shí)才啟動計(jì)數(shù)并使OUT端變?yōu)榈碗娖?,直到?jì)數(shù)值減到0時(shí),使OUT端再變?yōu)楦唠娖剑纱薕UT端上產(chǎn)生一個負(fù)單穩(wěn)態(tài)脈沖波形,脈沖寬度為n個CLK脈沖周期寬度。
(3)在計(jì)數(shù)過程中,如果CPU又寫入新的計(jì)數(shù)初值,當(dāng)前計(jì)數(shù)值將不受影響,仍繼續(xù)計(jì)數(shù)直到結(jié)束。計(jì)數(shù)結(jié)束后,只有再次出現(xiàn)GATE上升沿脈沖,才按新初值啟動計(jì)數(shù)。(4)在計(jì)數(shù)過程中,如果GATE又出現(xiàn)上升沿脈沖,則計(jì)數(shù)器將立即從初值開始重新計(jì)數(shù),直到計(jì)數(shù)結(jié)束,OUT端才變?yōu)楦唠娖健@眠@一功能,可延長OUT輸出的單脈沖寬度。(5)當(dāng)計(jì)數(shù)到0后,如果GATE又出現(xiàn)上升沿脈沖,則可以再輸出一個同樣寬度的單脈沖,而不用再次送計(jì)數(shù)初值。3.方式2-可編程頻率發(fā)生器/分頻器使OUT端輸出固定頻率的脈沖,輸出脈沖周期等于n個CLK脈沖的寬度,也相當(dāng)于對CLK信號n分頻。這種方式給自動控制中的實(shí)時(shí)檢測、實(shí)時(shí)控制提供了實(shí)時(shí)時(shí)鐘,也可作為一個可編程脈沖速率發(fā)生器。方式2的說明(1)寫入控制字后,OUT端輸出高電平作為初始狀態(tài)。(2)寫入計(jì)數(shù)初值后的第一個CLK脈沖下降沿,初值才送入CE。在GATE=l時(shí),開始減1計(jì)數(shù),當(dāng)計(jì)數(shù)減到1(注意不是減到0)時(shí),OUT端變?yōu)榈碗娖剑辉贉p1,即計(jì)數(shù)減到0,OUT端又變?yōu)楦唠娖?,同時(shí)計(jì)數(shù)器自動重新從計(jì)數(shù)初值開始新的減1計(jì)數(shù)過程,如此重復(fù)進(jìn)行,輸出固定頻率的脈沖。(3)在計(jì)數(shù)過程中,CPU寫入新的初值并不影響當(dāng)前計(jì)數(shù),而是影響后面的計(jì)數(shù)。(4)在計(jì)數(shù)過程中,GATE變?yōu)榈碗娖?,則停止計(jì)數(shù),直到GATE恢復(fù)高電平后,計(jì)數(shù)器則從計(jì)數(shù)初值開始重新計(jì)數(shù)。由此可見,這種方式下,門控信號既可用電平觸發(fā),也可用上升沿觸發(fā)。4.方式3-可編程方波發(fā)生器方式3與方式2工作原理相似,但輸出波形則為占空比1:1或近似1:1的連續(xù)方波或矩形波。
方式3的說明(1)寫入控制字后,OUT端輸出高電平作為初始狀態(tài)。(2)寫計(jì)數(shù)初值n,該WR信號上升沿將這個計(jì)數(shù)初值先送到CR中,在WR信號上升沿之后的第一個CLK脈沖的下降沿時(shí)才送入CE中。此時(shí),若GATE=1,CE就啟動計(jì)數(shù)。若計(jì)數(shù)初值n為偶數(shù)時(shí),每經(jīng)過一個CLK信號,計(jì)數(shù)值減2,直至減到0,OUT狀態(tài)反轉(zhuǎn),同時(shí)重裝計(jì)數(shù)初值,再重復(fù)進(jìn)行計(jì)數(shù)。當(dāng)計(jì)數(shù)初值n為偶數(shù)時(shí),OUT正半周寬度與負(fù)半周相等,為TCLK*n/2。若計(jì)數(shù)初值n為奇數(shù)時(shí),第一個CLK到來時(shí),計(jì)數(shù)器計(jì)數(shù)值減1;隨后每一個CLK,計(jì)數(shù)值減2,直至減到0,OUT反轉(zhuǎn)為低電平同時(shí)重裝計(jì)數(shù)初值;初值重裝后的第一個CLK使計(jì)數(shù)值減3,隨后每一個CLK,計(jì)數(shù)值減2,直至減到0,OUT反轉(zhuǎn)為高電平。然后重裝計(jì)數(shù)初值,重復(fù)進(jìn)行上述計(jì)數(shù)過程。當(dāng)計(jì)數(shù)初值n為奇數(shù)時(shí),OUT的正半周時(shí)間為TCLK*(n+1)/2,OUT的負(fù)半周時(shí)間為TCLK*(n-1)/2,即OUT輸出為高電平的寬度比其為低電平的寬度多一個CLK周期。
5.方式4-可編程軟件觸發(fā)的選通信號發(fā)生器計(jì)數(shù)器主要靠寫入新的計(jì)數(shù)初值來觸發(fā)計(jì)數(shù)器工作,所以常稱它為軟件觸發(fā)。OUT端輸出的負(fù)單脈沖信號常作為選通信號使用;另外還可用作定時(shí)功能,定時(shí)時(shí)間為n個CLK周期。方式4的說明(1)寫入控制字后,OUT端輸出高電平作為初始狀態(tài)。(2)寫計(jì)數(shù)初值n,該信號上升沿將這個計(jì)數(shù)初值先送到CR中,在信號上升沿之后的第一個CLK脈沖的下降沿時(shí)才送入CE中。此時(shí),若GATE=1,CE就啟動減1計(jì)數(shù),直到計(jì)數(shù)值減到0時(shí),OUT端才由高電平變?yōu)榈碗娖?,并且僅保持一個時(shí)鐘周期的低電平后,就自動變?yōu)楦唠娖剑簿褪窃贠UT端產(chǎn)生一個負(fù)脈沖信號波形。(3)在計(jì)數(shù)過程中,若CPU又寫入新的計(jì)數(shù)初值,則信號下降沿使計(jì)數(shù)器停止計(jì)數(shù),然后在的上升沿后的第一個CLK脈沖下降沿開始按新計(jì)數(shù)初值作減1計(jì)數(shù)。注意:若該初值為雙字節(jié)數(shù),則寫第一個字節(jié)時(shí),不影響原計(jì)數(shù),寫第二個字節(jié)時(shí)信號才起作用。(4)在計(jì)數(shù)過程中,若GATE由高電平變?yōu)榈碗娖剑?jì)數(shù)器立即停止計(jì)數(shù),但OUT端輸出仍保持高電平,直到GATE恢復(fù)到高電平時(shí),計(jì)數(shù)器將從初值開始重新減1計(jì)數(shù)。(5)由程序置入的計(jì)數(shù)初值只一次有效,減1計(jì)數(shù)到0輸出一個負(fù)單脈沖信號后,計(jì)數(shù)結(jié)束,不再計(jì)數(shù)。若要繼續(xù)進(jìn)行計(jì)數(shù),必須重新寫計(jì)數(shù)初值,在GATE=1條件下,啟動計(jì)數(shù)。方式4時(shí),計(jì)數(shù)器主要靠寫入新的計(jì)數(shù)初值來觸發(fā)計(jì)數(shù)器工作,所以常稱它為軟件觸發(fā)。OUT端輸出的負(fù)單脈沖信號常作為選通信號使用;另外還可用作定時(shí)功能,定時(shí)時(shí)間為n個CLK周期。6.方式5-可編程硬件觸發(fā)的選通信號發(fā)生器方式5與方式l工作原理相似,由門控信號GATE的上升沿觸發(fā)計(jì)數(shù)器計(jì)數(shù),但OUT端輸出波形為單脈沖選通信號,同方式4。方式5的說明(1)寫入控制字后,OUT端輸出高電平作為初始狀態(tài)。(2)寫計(jì)數(shù)初值n,在信號上升沿將這初值先送到CR中,在GATE信號出現(xiàn)上升沿后的第一個CLK脈沖的下降沿時(shí)將初值送入CE,并開始減1計(jì)數(shù),直到減到0時(shí),OUT端由高電平變?yōu)榈碗娖?,并僅保持一個CLK脈沖周期的低電平后就自動變?yōu)楦唠娖?,也就是在OUT端產(chǎn)生一個負(fù)單脈沖信號波形。(3)在計(jì)數(shù)過程中或計(jì)數(shù)結(jié)束后,若GATE信號再次出現(xiàn)上升沿,則計(jì)數(shù)器將自動重裝初值并開始新的計(jì)數(shù)周期。(4)在計(jì)數(shù)過程中,若CPU又寫入新的計(jì)數(shù)初值,只要GATE不出現(xiàn)上升沿,就不影響當(dāng)前計(jì)數(shù)。如果在這以后,GATE出現(xiàn)上升沿,則在其后的第一個CLK脈沖下降沿啟動計(jì)數(shù)器,并按新初值開始計(jì)數(shù)。7.8253工作小結(jié)8253有6種不同的工作方式,它們的特點(diǎn)不同,因而應(yīng)用的場合也就不同。8253沒有復(fù)位RESET輸入,開機(jī)加電后,其工作方式和OUT端輸出都是不確定的,必須對其進(jìn)行初始化編程,初始化編程包括寫控制字和寫計(jì)數(shù)初值。先寫控制字,使OUT端輸出初始狀態(tài)電平,其中只有方式0的初始狀態(tài)為OUT端輸出低電平,其它方式的初始狀態(tài)都是OUT端輸出高電平。OUT端輸出波形都是在CLK脈沖下降沿時(shí)產(chǎn)生電平的變化。門控信號的觸發(fā)方式有二種;高電平觸發(fā),上升沿觸發(fā)。方式0、4中GATE為高電平觸發(fā);方式l、5中GATE為上升沿觸發(fā);方式2、3中GATE既可用高電平觸發(fā)也可用上升沿觸發(fā)。方式0與方式1的OUT端輸出波形類似,在計(jì)數(shù)過程中都保持低電平,計(jì)數(shù)結(jié)束立即變?yōu)楦唠娖剑@種正階躍信號輸出??捎米髦袛嗾埱笮盘?。但它們的OUT端初始狀態(tài)不一樣,方式0的OUT端輸出正階躍信號,方式1的OUT端輸出負(fù)單穩(wěn)態(tài)脈沖波。7.8253工作小結(jié)(續(xù))方式2與方式3有一共同的特點(diǎn),都具有減到0后計(jì)數(shù)初值自動再重裝功能,所以O(shè)UT端都能輸出連續(xù)的波形。它們主要的區(qū)別在于占空比不同,方式2輸出連續(xù)的負(fù)脈沖波,其中負(fù)脈沖寬僅為一個CLK脈沖,而周期為n個CLK脈沖;方式3輸出連續(xù)方波或矩形波,占空比為1:1或近似1:1。方式4與方式5的輸出波形相同,它們主要區(qū)別是計(jì)數(shù)啟動的觸發(fā)信號不同,方式4由寫計(jì)數(shù)初值指令的上升沿啟動計(jì)數(shù),方式5由GATE上升沿啟動計(jì)數(shù)。6種工作方式都受GATE門控信號的控制。在使用計(jì)數(shù)器前,必須先寫入計(jì)數(shù)初值n。在某些工作方式下初值只能用一次,如下次要用,必須重新寫入初值n;而在另外—些方式下,能自動重新裝入初值n實(shí)現(xiàn)循環(huán)計(jì)數(shù)。方式0:寫入的初值n一次有效方式1:寫入的初值n一次有效,但可觸發(fā)重裝方式2:寫入的初值n能自動重裝方式3:寫入的初值n能自動重裝方式4:寫入的初值n一次有效方式5:寫入的初值n一次有效,但可觸發(fā)重裝6種工作方式在計(jì)數(shù)過程中都可寫入新計(jì)數(shù)初值,但是在不同方式時(shí)對當(dāng)前計(jì)數(shù)及OUT輸出的影響各不相同。9.2.48253的編程本小節(jié)內(nèi)容:8253的初始化編程8253計(jì)數(shù)值的讀取編程1.8253的初始化編程初始化編程的步驟為:(1)寫控制字,規(guī)定計(jì)數(shù)器的工作方式。(2)寫計(jì)數(shù)初值。
①若規(guī)定只寫低8位,則寫入的為計(jì)數(shù)初值的低8位,高8位自動置0。
②若規(guī)定只寫高8位,則寫入的為計(jì)數(shù)初值的高8位,低8位自動置0。
③若是16位計(jì)數(shù)初值,則分兩次寫入,先寫入低8位,再寫入高8位。例9.1若要使計(jì)數(shù)器0工作在方式1,按BCD碼計(jì)數(shù),計(jì)數(shù)初值為5080,若端口地址分別為F8H~FBH,則初始化程序?yàn)椋篗OVAL,33HOUT0FBH,AL;向計(jì)數(shù)器0寫控制字
MOVAL,80HOUT0F8H,AL;向計(jì)數(shù)器0寫計(jì)數(shù)初值的低8位
MOVAL,50HOUT0F8H,AL;向計(jì)數(shù)器0寫計(jì)數(shù)初值的高8位注意:采用BCD碼計(jì)數(shù)時(shí),計(jì)數(shù)初值為十進(jìn)制數(shù),但在初始化寫初值時(shí),一定要在十進(jìn)制數(shù)值后加十六進(jìn)制后綴H。2.8253計(jì)數(shù)值的讀取編程CPU可以用輸入指令讀取8253任一計(jì)數(shù)器的計(jì)數(shù)值,此時(shí)CPU讀到的是執(zhí)行輸入指令瞬間計(jì)數(shù)器的現(xiàn)行值。8253的計(jì)數(shù)器是16位的,要分兩次讀至CPU,在讀入過程中,計(jì)數(shù)值可能發(fā)生變化。因此,在讀取計(jì)數(shù)值之前,需對現(xiàn)行計(jì)數(shù)值進(jìn)行鎖存。例9.2在例9.1的計(jì)數(shù)過程中,若要讀取計(jì)數(shù)器0的當(dāng)前16位計(jì)數(shù)值,并且讀取的數(shù)值存入CX寄存器中,其程序?yàn)椋篗OVAL,03H;鎖存控制字為00000011BOUT0FBH,AL;向計(jì)數(shù)器0寫控制字,實(shí)現(xiàn)鎖存INAL,0F8H;讀取計(jì)數(shù)器0的鎖存器低8位計(jì)數(shù)值MOVCL,AL;保存至CLINAL,0F8H;再讀一次計(jì)數(shù)器0的鎖存器,讀取高8位計(jì)數(shù)值MOVCH,AL;保存至CH9.38253的應(yīng)用例9.3例9.4例9.5例9.3利用8253和8255實(shí)現(xiàn)對揚(yáng)聲器的控制。試設(shè)計(jì)一個程序,使揚(yáng)聲器發(fā)出262Hz頻率的聲音,按下任意鍵聲音停止。已知8253計(jì)數(shù)器2與控制口地址為42H與43H,8255PB口的地址為61H。8253揚(yáng)聲器控制分析在PC/XT計(jì)算機(jī)系統(tǒng)中,PC機(jī)的發(fā)聲系統(tǒng)以計(jì)數(shù)器2為核心。CLK2的輸入頻率1.19MHz,改變計(jì)數(shù)器初值可以由OUT2得到不同頻率的方波輸出。計(jì)數(shù)器2定義為工作方式3,控制字為10110110B。對于要求OUT2輸出600Hz的聲音驅(qū)動信號,可以得出計(jì)數(shù)初值:1.19MHz/262Hz=4542。另外
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年:前配偶贍養(yǎng)費(fèi)終止條件補(bǔ)充協(xié)議3篇
- 放映員知識培訓(xùn)課件模板
- 校園消防知識培訓(xùn)課件
- 專業(yè)個人勞務(wù)協(xié)議格式2024版樣本版B版
- 2024年租賃合同違約責(zé)任追究協(xié)議
- 2024影視公司與特效公司的委托特效制作合同
- 礦泉水行業(yè)知識培訓(xùn)課件
- 2025年度環(huán)境監(jiān)測數(shù)據(jù)采集與分析合同3篇
- 2024年民事離婚合同規(guī)范化文檔版B版
- 《男科網(wǎng)絡(luò)推廣方案》課件
- 分布式計(jì)算安全與隱私保護(hù)
- 安全防護(hù)、文明施工措施項(xiàng)目支出清單
- 社交媒體在人力資源招聘中的角色與利用研究
- 節(jié)日作文指導(dǎo)課件
- 缺點(diǎn)列舉法課件
- 采購付款明細(xì)統(tǒng)計(jì)表
- 2022年四川省公務(wù)員錄用考試《行測》真題及答案
- 尼康D610數(shù)碼單反攝影從入門到精通
- 2023-2024學(xué)年安徽省界首市小學(xué)語文三年級期末評估試卷詳細(xì)參考答案解析
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 2023-2024人教版小學(xué)5五年級數(shù)學(xué)下冊(全冊)教案
評論
0/150
提交評論