版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 1基礎(chǔ)理論知識</b></p><p><b> 1.1通信的方式</b></p><p> 通信的基本方式可以分為并行通信和串行通信兩種。</p><p> 串行通信時數(shù)據(jù)用一根傳輸線逐為順序傳送。并行通信和串行通信是CPU與外部設(shè)備之間進行信息交換的基本方法。采用并行通信時,構(gòu)成一個
2、字符或數(shù)據(jù)的各位同時傳送,每一位都占用一條通信線,另外還需要聯(lián)絡(luò)以保證和外圍設(shè)備協(xié)調(diào)地工作,它具有較高的傳輸速度。但由于在長線上驅(qū)動和接收信號較困難,驅(qū)動和接收電路較復(fù)雜,因此并行通信的傳輸距離受到限制,這種通信方式多用于計算機內(nèi)部,或者作為計算機與近距離外圍設(shè)備傳輸信息用。</p><p><b> 1.2串行通信</b></p><p> 串行通信分為兩種類型
3、:串行異步通信和串行同步通信。</p><p> 串行異步通信是指通信中兩個字符之間的時間間隔是不固定的,而在一個字符內(nèi)各位的時間間隔是固定的。</p><p> 同步通信時指在約定的數(shù)據(jù)通信數(shù)率下,發(fā)送方和接收方的時鐘信號頻率和相位始終保持一致,通信雙方發(fā)送數(shù)據(jù)和接收數(shù)據(jù)具有完全一致的定時關(guān)系。</p><p> 串行通信的數(shù)據(jù)傳輸方式分為單工傳送,半雙工傳
4、送,全雙工傳送。</p><p> 單工傳送:單工傳送時指在通信時只能由一方發(fā)送數(shù)據(jù),另一方接收數(shù)據(jù)的通信方式。</p><p> 半雙工傳送:指在通信時雙方都能夠接收或者發(fā)送,但是不能夠同時接收和發(fā)送的通信方式。</p><p> 全雙工傳送:通信雙方之間有兩條通路,發(fā)送信息和接收信息可以同時進行。</p><p> 2 串口通信
5、芯片8250</p><p> 2.1 8250的內(nèi)部結(jié)構(gòu)</p><p> INS 8250是通用異步收發(fā)器UART,用作異步通信接口電路。INS 8250的引腳信號基本上可以分為兩大類:與CPU系統(tǒng)總線相連的信號線和與通信設(shè)備MODEM連接的信號線</p><p> 2.2 8251的內(nèi)部寄存器及其編程方法</p><p>
6、在微機中用可編程芯片8250來實現(xiàn)串行通信。由于8250的引腳較多,在此就不列出了,僅列出它的幾個寄存器,因為在編寫串行通信程序時要使用這些寄存器。</p><p> 2.2.1波特率因子寄存器(DLL/DLH)</p><p> 8250芯片規(guī)定當(dāng)線路控制寄存器寫入D7=1時,接著對口地址3F8H、3F9H可分別寫入波特率因子的低字節(jié)和高字節(jié),即寫入除數(shù)寄存器(L)和除數(shù)寄存器(H)
7、中。而波特率為1.8432MHZ/(波特率因子╳16),波特率和除數(shù)對照表見下表:</p><p> 2.2.2通信線路控制寄存器(LCR)(3FBH)</p><p> 該寄存器規(guī)定了異步串行通信的數(shù)據(jù)格式。各位含義如下:</p><p><b> 其中:</b></p><p> D1~D0是字長。它們的取值
8、和對應(yīng)的字長如下表:</p><p> D2是停止位。它的取值和對應(yīng)的停止位如下表:</p><p> D3說明是否允許奇偶校驗。如果為0無奇偶校驗,如果為1允許奇偶校驗。</p><p> D4說明是奇校驗還是偶校驗。如果為0是奇校驗,如果為1是偶校驗。這一位起作用的前題是D3為1。</p><p> D5說明是否有附加奇偶校驗位。
9、如果為0無附加奇偶校驗位,如果為1有附加奇偶校驗位。</p><p> D6如果為0正常,如果為1發(fā)空缺位。</p><p> D7如果為0允許訪問接收、發(fā)送數(shù)據(jù)寄存器或中斷允許寄存器。如果為0允許訪問波特率因子寄存器。</p><p> 通信線路控制寄存器LCR主要用來指定異步通信數(shù)據(jù)格式,即字符長度、停止位位數(shù)、奇偶校驗。LCR的控制字如下</p&g
10、t;<p> 2.2.3通信線路狀態(tài)寄存器(3FDH)</p><p> 該寄存器向CPU提供有關(guān)數(shù)據(jù)傳輸?shù)臓顟B(tài)信息,各位含義如下:</p><p> D0:DR,接收數(shù)據(jù)就緒 D1:OE,數(shù)據(jù)重疊錯 D2:PE,數(shù)據(jù)奇偶錯</p><p> D3:FE,缺少正確停止位 D4:BI,接收空缺位 D5:THRE,發(fā)送保持器空</
11、p><p> D6:TSRE,發(fā)送移位寄存器空</p><p> 讀入時各數(shù)據(jù)位等于1有效,讀入操作后各位均復(fù)位。除D6位外,其它位還可被CPU寫入,同樣可產(chǎn)生中斷請求。</p><p> 2.2.4中斷允許寄存器(3F9H)</p><p> 該寄存器允許8250四種類型中斷(相應(yīng)位置1)并通過IRQ4向8088CPU發(fā)中斷請求。各位含
12、義如下:</p><p> D0:為1允許接收緩沖區(qū)滿中斷</p><p> D1:為1允許發(fā)送保持器空中斷</p><p> D2:為1允許接收數(shù)據(jù)出錯中斷</p><p> D3:為1允許Modem狀態(tài)改變中斷</p><p> 2.2.5中斷識別寄存器(3FAH)</p><p>
13、; 為了具體識別時哪種事件引起的中斷,直到該中斷請求被CPU響應(yīng)并服務(wù)之后,才能接收其他的中斷請求。該寄存器為只讀寄存器,內(nèi)容格式為</p><p> 2.2.6調(diào)制解調(diào)控制寄存器(3FCH)</p><p> MODEM控制寄存器用來設(shè)置對MODEM的聯(lián)絡(luò)控制信號和芯片自檢,寄存器的各位定義</p><p> D0:DTR=1,數(shù)據(jù)終端就緒,輸出端DTR為
14、低電平</p><p> D1:RTS=1,請求發(fā)送,輸出端RTS為低電平</p><p> D2:OUT1=1,用戶指令輸出,輸出端OUT1為低電平</p><p> D3:OUT2=1,輸出端OUT2為低電平,允許發(fā)送IRQ4中斷請求</p><p> D4:循環(huán)(自診斷用)=1,發(fā)送數(shù)據(jù)立即被接收,可用于自檢</p>
15、<p> 2.2.7 MODEM狀態(tài)寄存器(3FEH)</p><p> Modem狀態(tài)寄存器用來檢測和記錄來自Modem的聯(lián)絡(luò)信號及其狀態(tài)變化。此寄存器的各位定義為:</p><p> 2.2.8發(fā)送保持寄存器和接收緩沖寄存器(3F8H)</p><p> 發(fā)送時,CPU首先將待發(fā)送的字符寫到8250的發(fā)送保持寄存器THR中,然后進入發(fā)送移位
16、寄存器,在發(fā)送始終的作用下,從SOUT引腳輸出。一旦THR的內(nèi)容送到發(fā)送移位寄存器TSR后,THR就變空,同時將LSR的THRE位置“1”,產(chǎn)生中斷請求,要求CPU發(fā)送下一個字符。CPU向THR寫入下一個字符后,THRE位自動清“0”。如此重復(fù),直到全部數(shù)據(jù)發(fā)送完畢。</p><p> 接收時,串行數(shù)據(jù)在接收時鐘的作用下,從SIN引腳先輸入到移位寄存器RSR,然后由RSR并行輸入到接收緩沖寄存器RBR,一旦RB
17、R變滿,將LSR的DR位置“1”,產(chǎn)生中斷請求,要求CPU讀取數(shù)據(jù)字符。CPU從RBR讀取該字符后,DR位自動清“0”。如此重復(fù),直到所有的數(shù)據(jù)接收完畢。</p><p> 2.3 8250的各寄存器的地址</p><p><b> 3程序設(shè)計</b></p><p><b> 3.1程序設(shè)計思路</b></p
18、><p> 根據(jù)設(shè)計要求,要實現(xiàn)通過串口進行通信,就必須有一個發(fā)送端和一個接收端,因此要編寫兩個程序,在發(fā)送端編寫發(fā)送程序,在接受端編寫接收程序。發(fā)送PC機和接收PC機通過RS-232C的3根信號線(TXD、RXD、GND)進行相連。我決定采用查詢方式編寫發(fā)送程序和接收程序。</p><p> 編寫發(fā)送程序的時候,首先要初始化段寄存器,設(shè)置發(fā)送緩沖區(qū)指針。然后初始化8250,通過初始化82
19、50來設(shè)置串口的參數(shù)。再根據(jù)線路狀態(tài)寄存器的內(nèi)容,測試發(fā)送保持寄存器是否為空,如果不為空,繼續(xù)讀線狀態(tài)寄存器的內(nèi)容,判斷發(fā)送保持寄存器是否為空,如果為空的話,讀取按鍵字符并顯示和發(fā)送它。我事先規(guī)定當(dāng)輸入某一個字符的時候發(fā)送結(jié)束,這時候我就要判斷按鍵是否為該字符,是該字符的時候結(jié)束程序。</p><p> 編寫接收程序的時候首先要設(shè)置接收緩沖區(qū),設(shè)置接收錯信息,初始段寄存器,設(shè)置接收緩沖寄存器地址指針然后初始化8
20、250,初始設(shè)置和接收端的保持一置。以上完成后開始接收,在屏幕上顯示接收開始。然后讀線狀態(tài)寄存器,判斷是否接收錯,在屏幕上顯示接收錯誤,繼續(xù)讀線狀態(tài)寄存器,如果接收無誤,則測試接收數(shù)據(jù)是否準備好了,為準備好則循環(huán)測試,準備好了則接收字符。判斷接收的字符是否為規(guī)定的結(jié)束字符,如果是結(jié)束程序,如果不是顯示字符。兩臺機器的連接圖如下。</p><p><b> 3.2程序流程圖</b></
21、p><p> 3.2.1發(fā)送端程序流程圖</p><p> 3.2.2接收端的程序流程圖</p><p><b> 3.3具體的程序</b></p><p> 3.3.1發(fā)送端的程序代碼</p><p> STACK SEGMENT PARA STACK 'STACK'<
22、;/p><p> DB 200 DUP(0)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p> DISP DB 'TRANSMISSION START:',0AH,0DH,'$'</p><p><b> DATA EN
23、DS</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA,SS:STACK</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV
24、AX,STACK</p><p><b> MOV SS,AX</b></p><p> MOV DX,3FBH ;置DLAB=1</p><p> MOV AL,80H</p><p><b> OUT DX,AL</b></p><p> MOV DX,3F
25、8H ;置波特率因子寄存器</p><p> MOV AL,0CH ;波特率因子低字節(jié)</p><p> OUT DX ,AL</p><p> MOV DX,3F9H</p><p> MOV AL,0 ;波特率因子高字節(jié)</p><p><b> OUT DX,AL</b
26、></p><p> MOV DX,3FBH ;置線路控制寄存器</p><p> MOV AL,03H ;數(shù)據(jù)位8位,停止位1位、無校驗</p><p><b> OUT DX,AL</b></p><p> MOV DX,3FCH ;置MODEM控制寄存器</p><p>
27、; MOV AL,02H ;禁止中斷</p><p><b> OUT DX,AL</b></p><p> MOV DX,3F9H ;置中斷允許寄存器</p><p> MOV AL,0 ;屏蔽所有中斷</p><p><b> OUT DX,AL</b></p
28、><p> MOV DX,OFFSET DISP ;顯示發(fā)送提示信息</p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p> LO0P: MOV DX,3FDH ;讀線路狀態(tài)寄存器</p><p>
29、;<b> IN AL,DX</b></p><p> TEST AL,20H ;測試發(fā)送保持寄存器</p><p> JZ L0OP ;不空,則循環(huán)測試</p><p> MOV AH,1 ;讀取按鍵字符并顯示</p><p><b> INT 21H</b&g
30、t;</p><p> MOV DX,3F8H ;發(fā)送該字符</p><p><b> OUT DX,AL</b></p><p> CMP AL,’P’ ;判斷按下的字符是否為P</p><p> JZ OVER ;是,則結(jié)束</p><p> JMP LOP
31、 ;不是繼續(xù)循環(huán)</p><p> OVER: MOV AH,4CH ;返回DOS</p><p><b> INT 21H</b></p><p><b> CODE ENDS</b></p><p><b> END START</b><
32、;/p><p> 3.3.2接收端的程序源代碼</p><p> STACK SEGMENT PARA STACK 'STACK'</p><p> DB 200 DUP(0)</p><p> STACK ENDS</p><p> DATA SEGMENT</p><p&g
33、t; RBUF DB 30 DUP(0)</p><p> DISP DB 'RECEIVE START:',0AH,0DH,'$'</p><p> ERROR DB 'RECEIVE ERRO!',0AH,0DH,'$'</p><p><b> DATA ENDS</b&
34、gt;</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA,SS:STACK</p><p> START: MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV AX,STACK&
35、lt;/p><p><b> MOV SS,AX</b></p><p> LEA SI,RBUF ;置接收緩沖區(qū)地址指針</p><p> MOV DX,3FBH ;置DLAB=1</p><p> MOV AL,80H</p><p><b> OUT DX,AL</
36、b></p><p> MOV DX,3F8H ;置波特率因子寄存器</p><p> MOV AL,0CH ;波特率因子低字節(jié)</p><p><b> OUT DX,AL</b></p><p> MOV DX,3F9H</p><p> MOV AL,0 ;波特
37、率因子高字節(jié)</p><p><b> OUT DX,AL</b></p><p> MOV DX,3FBH ;置通信線路控制寄存器</p><p> MOV AL,0AH ;數(shù)據(jù)位8位,停止位1位、無校驗</p><p><b> OUT DX,AL</b></p>&
38、lt;p> MOV DX,3FCH ;置MODEM控制寄存器</p><p> MOV AL,02 ;禁止中斷</p><p><b> OUT DX,AL</b></p><p> MOV DX,3F9H ;置中斷允許寄存器</p><p> MOV AL,0 ;屏蔽所有中斷</
39、p><p><b> OUT DX,AL</b></p><p> MOV DX,OFFSET DISP ;顯示接收提示信息</p><p><b> MOV AH,9</b></p><p><b> INT 21H</b></p><p>
40、MOV DX,3F8H ;讀接收緩沖器內(nèi)容,不處理</p><p><b> IN AL,DX</b></p><p> LOP: MOV DX,3FDH ;讀線路狀態(tài)寄存器</p><p><b> IN AL,DX</b></p><p> TEST AL,1E
41、H ;測試接收錯誤?</p><p> JNZ ER ;有,轉(zhuǎn)錯誤顯示</p><p> TEST AL,01H ;無,則測試接收數(shù)據(jù)準備好</p><p> JZ LOP ;未準備好則循環(huán)測試 </p><p> MOV DX,3F8H</p><
42、;p><b> IN AL,DX</b></p><p> AND AL,7FH</p><p> CMP AL,’P’ ;判斷接收結(jié)束嗎?</p><p> JZ OVER ;結(jié)束轉(zhuǎn)OVER</p><p> MOV [SI],AL ;未結(jié)束則存入緩沖區(qū)</p&
43、gt;<p><b> INC SI</b></p><p> MOV DL,AL ;顯示該字符</p><p><b> MOV AH,02</b></p><p><b> INT 21H</b></p><p><b> J
44、MP LOP</b></p><p> ER: MOV DX,3F8H ;清標(biāo)志位</p><p><b> IN AL,DX</b></p><p> MOV DX,OFFSET ERROR ;顯示錯誤信息</p><p><b> MOV AH,9</b>
45、</p><p><b> INT 21H</b></p><p><b> JMP LOP</b></p><p> OVER: MOV DL,AL</p><p><b> MOV AH,2</b></p><p><b>
46、INT 21H</b></p><p> MOV AH,4CH ;返回DOS</p><p><b> INT 21H</b></p><p><b> CODE ENDS</b></p><p><b> END START</b></
47、p><p><b> 4.心得體會</b></p><p> 這次微機原理課程里我學(xué)到了很多在書本上所沒有學(xué)到過的知識。以前在上課的時候,老師經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來,但是我開始總覺得這樣做沒必要,很浪費時間。但是,這次課程設(shè)計完全改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計中碰到的那些需要很
48、多代碼才能完成的任務(wù),畫程序方框圖是很有必要的。因為通過程序方框圖,在做設(shè)計的過程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。</p><p> 其次,以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,怎么去了解每個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。</p>
49、;<p> 通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。</p><
50、p> 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在曾老師的辛勤指導(dǎo)下,終于迎刃而解。同時,在曾老師的身上我學(xué)得到很多實用的知識,在此我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!</p><p><b> 參考文獻</b></p><p> [1]姚燕男,薛鈞義編著.微型計算機原理與接口技術(shù).北京:高等教育出版
51、社.2004</p><p> [2]劉永華,王成端編著.微型機原理與接口技術(shù).北京:清華大學(xué)出版社.2006</p><p> [3]楊立等編著.微型計算機原理與接口技術(shù).北京:中國水利水電出版社.2005</p><p> [4]張榮標(biāo)等編著.微型計算機原理與接口技術(shù).北京:機械工業(yè)出版社.2005</p><p> [5]古輝主
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信07微機原理課程設(shè)計封面
- 微機原理課程設(shè)計報告-雙機串行通信
- 微機原理課程設(shè)計
- 串口通信c++課程設(shè)計
- 嵌入式課程設(shè)計--串口通信
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 2017微機原理課程設(shè)計
- 微機原理課程設(shè)計--交通信號燈設(shè)計
- 微機原理課程設(shè)計報告
- 《微機原理》課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計.rar
- 微機原理課程設(shè)計課程設(shè)計----微機內(nèi)存擴充卡
- 微機原理課程設(shè)計課程設(shè)計----微機內(nèi)存擴充卡
- 串行通信微機原理課程設(shè)計--串行通信實現(xiàn)文件傳輸
- 微機原理電子秒表課程設(shè)計
- 微機原理課程設(shè)計---打字練習(xí)
- 微機原理課程設(shè)計--圖形畫法
評論
0/150
提交評論