微機原理串口通信課程設(shè)計概要_第1頁
微機原理串口通信課程設(shè)計概要_第2頁
微機原理串口通信課程設(shè)計概要_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 基礎(chǔ)理論知識1.1 通信的方式通信的基本方式可以分為并行通信和串行通信兩種。串行通信時數(shù)據(jù)用一根傳輸線逐為順序傳送。并行通信和串行通信是CPU與外部設(shè)備之間進行信息交換的基本方法。采用并行通信時,構(gòu)成一個字符或數(shù)據(jù)的各位同時傳送, 每一位都占用一條通信線,另外還需要聯(lián)絡(luò)以保證和外圍設(shè)備協(xié)調(diào)地工作,它具有較高的 傳輸速度。但由于在長線上驅(qū)動和接收信號較困難,驅(qū)動和接收電路較復(fù)雜,因此并行通 信的傳輸距離受到限制,這種通信方式多用于計算機內(nèi)部,或者作為計算機與近距離外圍 設(shè)備傳輸信息用。1.2 串行通信串行通信分為兩種類型:串行異步通信和串行同步通信。 串行異步通信是指通信中兩個字符之間的時間

2、間隔是不固定的,而在一個字符內(nèi)各位 的時間間隔是固定的。同步通信時指在約定的數(shù)據(jù)通信數(shù)率下,發(fā)送方和接收方的時鐘信號頻率和相位始終 保持一致,通信雙方發(fā)送數(shù)據(jù)和接收數(shù)據(jù)具有完全一致的定時關(guān)系。串行通信的數(shù)據(jù)傳輸方式分為單工傳送,半雙工傳送,全雙工傳送。單工傳送: 單工傳送時指在通信時只能由一方發(fā)送數(shù)據(jù), 另一方接收數(shù)據(jù)的通信方式。 半雙工傳送:指在通信時雙方都能夠接收或者發(fā)送,但是不能夠同時接收和發(fā)送的通 信方式。全雙工傳送:通信雙方之間有兩條通路,發(fā)送信息和接收信息可以同時進行。2 串口通信芯片 82502.1 8250 的內(nèi)部結(jié)構(gòu)INS 8250是通用異步收發(fā)器 UART,用作異步通信接口

3、電路。 INS 8250的引腳信號基 本上可以分為兩大類:與 CPU 系統(tǒng)總線相連的信號線和與通信設(shè)備 MODEM 連接的信號 線2.2 8251 的內(nèi)部寄存器及其編程方法在微機中用可編程芯片 8250 來實現(xiàn)串行通信。由于 8250 的引腳較多,在此就不列出 了,僅列出它的幾個寄存器,因為在編寫串行通信程序時要使用這些寄存器。2.2.1 波特率因子寄存器( DLL/DLH)8250芯片規(guī)定當線路控制寄存器寫入 D7=1 時,接著對口地址 3F8H、3F9H可分別寫 入波特率因子的低字節(jié)和高字節(jié),即寫入除數(shù)寄存器( L)和除數(shù)寄存器( H)中。而波特 率為 1.8432MHZ/ (波特率因子

4、16),波特率和除數(shù)對照表見下表:十進制十六進制波特率1047417110768300100384180300192C060096601200483024002418480012C96002.2.2 通信線路控制寄存器 (LCR)(3FBH)該寄存器規(guī)定了異步串行通信的數(shù)據(jù)格式。各位含義如下:D7D6D5D4D3D2D1D0DLABSBSPEPSPENSTBWLS1WLS0其中:D1D0 是字長。它們的取值和對應(yīng)的字長如下表:005位016位107位118位D2 是停止位。它的取值和對應(yīng)的停止位如下表:01位115 位(數(shù)據(jù)位 5位)2 位(數(shù)據(jù)位 6、7、8 位)D3 說明是否允許奇偶校驗。

5、如果為 0 無奇偶校驗,如果為 1 允許奇偶校驗。D4 說明是奇校驗還是偶校驗。如果為 0是奇校驗,如果為 1是偶校驗。這一位起作用 的前題是 D3 為 1。D5說明是否有附加奇偶校驗位。 如果為 0無附加奇偶校驗位, 如果為 1有附加奇偶校 驗位。D6 如果為 0 正常,如果為 1 發(fā)空缺位。D7如果為 0允許訪問接收、 發(fā)送數(shù)據(jù)寄存器或中斷允許寄存器。 如果為 0允許訪問波 特率因子寄存器。通信線路控制寄存器 LCR 主要用來指定異步通信數(shù)據(jù)格式, 即字符長度、停止位位數(shù)、 奇偶校驗。 LCR 的控制字如下2.2.3 通信線路狀態(tài)寄存器 (3FDH)該寄存器向 CPU提供有關(guān)數(shù)據(jù)傳輸?shù)臓顟B(tài)

6、信息,各位含義如下:D7D6D5D4D3D2D1D00TSRETHREBTFEPEOEDRD 0:DR,接收數(shù)據(jù)就緒 D 1:OE,數(shù)據(jù)重疊錯 D 2:PE,數(shù)據(jù)奇偶錯D 3:FE,缺少正確停止位 D 4:BI,接收空缺位 D 5:THRE,發(fā)送保持器空D 6:TSRE,發(fā)送移位寄存器空讀入時各數(shù)據(jù)位等于 1 有效,讀入操作后各位均復(fù)位。除 D6 位外,其它位還可被 CPU 寫入,同樣可產(chǎn)生中斷請求。2.2.4 中斷允許寄存器 (3F9H)該寄存器允許 8250四種類型中斷(相應(yīng)位置 1)并通過 IRQ4向 8088CPU發(fā)中斷請求 各位含義如下:D7D6D5D4D3D2D1D00000EMS

7、IELSIETBEIERBFID0:為 1 允許接收緩沖區(qū)滿中斷D1:為 1 允許發(fā)送保持器空中斷D2:為 1 允許接收數(shù)據(jù)出錯中斷D3:為 1 允許 Modem狀態(tài)改變中斷2.2.5 中斷識別寄存器 (3FAH)為了具體識別時哪種事件引起的中斷,直到該中斷請求被CPU響應(yīng)并服務(wù)之后,才能接收其他的中斷請求。該寄存器為只讀寄存器,內(nèi)容格式為D7D6D5D4D3D2D1D000000ID2ID1IP2.2.6 調(diào)制解調(diào)控制寄存器 (3FCH)MODEM 控制寄存器用來設(shè)置對 MODE的M聯(lián)絡(luò)控制信號和芯片自檢,寄存器的各位定義D7D6D5D4D3D2D1D0000LOOPOUT2OUT1RTSD

8、TRD0:DTR=1,數(shù)據(jù)終端就緒,輸出端 DTR為低電平D1:RTS=1,請求發(fā)送,輸出端 RTS為低電平D2:OUT1=,1 用戶指令輸出,輸出端 OUT1為低電平D3:OUT2=,1 輸出端 OUT2為低電平,允許發(fā)送 IRQ4中斷請求D4:循環(huán)(自診斷用) =1,發(fā)送數(shù)據(jù)立即被接收,可用于自檢2.2.7 MODEM狀態(tài)寄存器( 3FEH)Modem狀態(tài)寄存器用來檢測和記錄來自 Modem的聯(lián)絡(luò)信號及其狀態(tài)變化。此寄存器的各位 定義為:D7D6D5D4D3D2D1D0RLSDRIDSRCTSRLSDRIDSRCTS2.2.8 發(fā)送保持寄存器和接收緩沖寄存器( 3F8H)發(fā)送時, CPU首

9、先將待發(fā)送的字符寫到 8250 的發(fā)送保持寄存器 THR中,然后進入發(fā)送 移位寄存器,在發(fā)送始終的作用下,從 SOUT引腳輸出。一旦 THR的內(nèi)容送到發(fā)送移位寄 存器 TSR后,THR就變空,同時將 LSR的 THRE位置“ 1”,產(chǎn)生中斷請求,要求 CPU發(fā)送下 一個字符。 CPU向 THR寫入下一個字符后, THRE位自動清“ 0”。如此重復(fù),直到全部數(shù)據(jù) 發(fā)送完畢。接收時,串行數(shù)據(jù)在接收時鐘的作用下,從 SIN 引腳先輸入到移位寄存器 RSR,然后由 RSR并行輸入到接收緩沖寄存器 RBR,一旦 RBR變滿,將 LSR的 DR位置“ 1”,產(chǎn)生中斷請 求,要求 CPU讀取數(shù)據(jù)字符。 CP

10、U從 RBR讀取該字符后, DR位自動清“ 0”。如此重復(fù),直 到所有的數(shù)據(jù)接收完畢。2.3 8250 的各寄存器的地址寄存器COM1端口下的地址COM2端口下的地址發(fā)送保持寄存器 (THR)3F8H2F8H接收數(shù)據(jù)寄存器 (RBR)3F8H2F8H低字節(jié)波特率因子(設(shè)置工作方式控制字 D7=1)(LSB)3F8H2F8H高字節(jié)波特率因子(設(shè)置工作方式控制字 D7=1)(MSB)3F9H12F9H1中斷允許寄存器 (IER)3F9H2F9H中斷識別寄存器 (IIR)3FAH2FAH線路控制寄存器 (LCR)3FBH2FBHMODE控M 制寄存器 (MCR)3FCH2FCH線路狀態(tài)寄存器 (LS

11、R)3FDH2FDHMODE狀M 態(tài)寄存器 (MSR)3FEH2FEH3 程序設(shè)計3.1 程序設(shè)計思路根據(jù)設(shè)計要求,要實現(xiàn)通過串口進行通信,就必須有一個發(fā)送端和一個接收端,因此 要編寫兩個程序,在發(fā)送端編寫發(fā)送程序,在接受端編寫接收程序。發(fā)送PC機和接收 PC機通過 RS-232C的 3 根信號線( TXD、RXD、GND)進行相連。我決定采用查詢方式編寫發(fā) 送程序和接收程序。編寫發(fā)送程序的時候,首先要初始化段寄存器,設(shè)置發(fā)送緩沖區(qū)指針。然后初始化 8250,通過初始化 8250 來設(shè)置串口的參數(shù)。再根據(jù)線路狀態(tài)寄存器的內(nèi)容,測試發(fā)送保 持寄存器是否為空,如果不為空,繼續(xù)讀線狀態(tài)寄存器的內(nèi)容,

12、判斷發(fā)送保持寄存器是否 為空,如果為空的話,讀取按鍵字符并顯示和發(fā)送它。我事先規(guī)定當輸入某一個字符的時 候發(fā)送結(jié)束,這時候我就要判斷按鍵是否為該字符,是該字符的時候結(jié)束程序。編寫接收程序的時候首先要設(shè)置接收緩沖區(qū),設(shè)置接收錯信息,初始段寄存器,設(shè)置 接收緩沖寄存器地址指針然后初始化 8250,初始設(shè)置和接收端的保持一置。 以上完成后開 始接收,在屏幕上顯示接收開始。然后讀線狀態(tài)寄存器,判斷是否接收錯,在屏幕上顯示 接收錯誤,繼續(xù)讀線狀態(tài)寄存器,如果接收無誤,則測試接收數(shù)據(jù)是否準備好了,為準備 好則循環(huán)測試,準備好了則接收字符。判斷接收的字符是否為規(guī)定的結(jié)束字符,如果是結(jié) 束程序,如果不是顯示字

13、符。兩臺機器的連接圖如下。3.2 程序流程圖3.2.1發(fā)送端程序流程圖3.2.2接收端的程序流程圖開始設(shè)置接收緩沖區(qū) 設(shè)置接收錯誤信息 初始段寄存器 設(shè)置接收緩沖區(qū)地址指針初始 8250: 1200 波特、 7 位數(shù)據(jù)、 奇校驗、 1 位停止 位、禁止中斷屏幕顯示接收開始讀線狀態(tài)寄存器顯示:接收錯接收數(shù)據(jù),取 AL 低 7位存字符到接收區(qū), 調(diào) 整指針, 送屏幕顯示3.3 具體的程序3.3.1發(fā)送端的程序代碼STACK SEGMENT PARA STACK 'STACK'DB 200 DUP(0)STACK ENDSDATA SEGMENTDISP DB 'TRANSM

14、ISSION START:',0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV DX,3FBH;置DLAB=1MOV AL,80HOUT DX,ALMOV DX,3F8H;置波特率因子寄存器MOV AL,0CH;波特率因子低字節(jié)OUT DX ,ALMOV DX,3F9HMOV AL,0;波特率因子高字節(jié)OUT DX,ALMOV DX,3FBH;置線路控制寄存器MOV AL,03H;數(shù)據(jù)位 8位

15、,停止位 1位、無校驗OUT DX,ALMOV DX,3FCH;置MODE控M制寄存器MOV AL,02H;禁止中斷OUT DX,ALMOV DX,3F9H;置中斷允許寄存器MOV AL,0;屏蔽所有中斷OUT DX,ALMOV DX,OFFSET DISP ;顯示發(fā)送提示信息MOV AH,9INT 21HLO0P: MOV DX,3FDH;讀線路狀態(tài)寄存器IN AL,DXTEST AL,20H;測試發(fā)送保持寄存器JZ L0OP;不空,則循環(huán)測試MOV AH,1;讀取按鍵字符并顯示INT 21HMOV DX,3F8H OUT DX,ALCMP AL, ' P'JZ OVERJM

16、P LOPOVER: MOV AH,4CHINT 21HCODE ENDS END START;發(fā)送該字符;判斷按下的字符是否為 P;是,則結(jié)束;不是繼續(xù)循環(huán);返回 DOS3.3.2 接收端的程序源代碼STACK SEGMENT PARA STACK 'STACK'DB 200 DUP(0)STACK ENDSDATA SEGMENTRBUF DB 30 DUP(0)DISP DB 'RECEIVE START:',0AH,0DH,'$'ERROR DB 'RECEIVE ERRO!',0AH,0DH,'$'DAT

17、A ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXLEA SI,RBUF;置接收緩沖區(qū)地址指針MOV DX,3FBH;置DLAB=1MOV AL,80HOUT DX,ALMOV DX,3F8H;置波特率因子寄存器MOV AL,0CH;波特率因子低字節(jié)OUT DX,ALMOV DX,3F9HMOV AL,0;波特率因子高字節(jié)OUT DX,ALMOV DX,3FBH;置通信線路控制寄存器MOV AL,0AH;數(shù)據(jù)位 8位,停止位 1位、無校驗OUT DX,

18、ALMOV DX,3FCH;置MODE控M制寄存器MOV AL,02;禁止中斷OUT DX,ALMOV DX,3F9H;置中斷允許寄存器MOV AL,0;屏蔽所有中斷OUT DX,ALMOV DX,OFFSET DISP MOV AH,9INT 21HMOV DX,3F8H IN AL,DXLOP: MOV DX,3FDHIN AL,DX TEST AL,1EHJNZ ER TEST AL,01HJZ LOP MOV DX,3F8HIN AL,DX AND AL,7FHCMP AL,' P' JZ OVER MOV SI,AL INC SI MOV DL,AL MOV AH,0

19、2 INT 21H;顯示接收提示信息 ;讀接收緩沖器內(nèi)容,不處理;讀線路狀態(tài)寄存器;測試接收錯誤?;有,轉(zhuǎn)錯誤顯示 ;無,則測試接收數(shù)據(jù)準備好 ;未準備好則循環(huán)測試;判斷接收結(jié)束嗎? ;結(jié)束轉(zhuǎn) OVER ;未結(jié)束則存入緩沖區(qū);顯示該字符JMP LOPER: MOV DX,3F8H;清標志位IN AL,DXMOV DX,OFFSET ERROR ;顯示錯誤信息MOV AH,9INT 21HJMP LOP;返回 DOSOVER: MOV DL,AL MOV AH,2 INT 21HMOV AH,4CHINT 21HCODE ENDS END START4.心得體會這次微機原理課程里我學(xué)到了很多在書本上所沒有學(xué)到過的知識。以前在上課的時 候,老師經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來,但是我開 始總覺得這樣做沒必要,很浪費時間。但是,這次課程設(shè)計完全改變了我以前的那種錯誤 的認識,以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計中碰到的那些需要 很多代碼才能完成的任務(wù),畫程序方框圖是很有必

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論