




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1基本理論基礎1.1串行通信的方式通信的基本方式可以分為并行通信和串行通信兩種。串行通信時數(shù)據(jù)用一根傳輸線逐為順序傳送。串行通信又分為兩種類型:串行異步通信和串行同步通信。串行異步通信是指通信中兩個字符之間的時間間隔是不固定的,而在一個字符內(nèi)各位的時間間隔是固定的。同步通信時指在約定的數(shù)據(jù)通信數(shù)率下,發(fā)送方和接收方的時鐘信號頻率和相位始終保持一致,通信雙方發(fā)送數(shù)據(jù)和接收數(shù)據(jù)具有完全一致的定時關系。1.2串行通信數(shù)據(jù)傳送方式單工傳送:單工傳送時指在通信時只能由一方發(fā)送數(shù)據(jù),另一方接收數(shù)據(jù)的通信方式。半雙工傳送:指在通信時雙方都能夠接收或者發(fā)送,但是不能夠同時接收和發(fā)送的通信方式。全雙工傳送:通信雙方之間有兩條通路,發(fā)送信息和接收信息可以同時進行。1.3串行通信接口標準RS-232CRS-232C標準是美國EIA于1969年公布的通信協(xié)議。它的作用是實現(xiàn)不同的廠商的計算機和各種外圍設備進行串行連接。2.INS82502.1INS8250的外部引腳和結(jié)構(gòu)INS8250是通用異步收發(fā)器UART,用作異步通信接口電路。INS8250的引腳信號基本上可以分為兩大類:與CPU系統(tǒng)總線相連的信號線和與通信設備MODEM連接的信號線。2.2INS的內(nèi)部寄存器及其編程方法2.2.1波特率因子寄存器(DLL/DLH)波特率因子寄存器是用來控制串行數(shù)據(jù)傳輸?shù)臄?shù)率。波特率因子=1843200:(分頻值X16)內(nèi)部設置波特率因子寄存器DLL/DLH,在初始化時將選用的波特率因子值的高低、低字節(jié)分別放入DLH和DLL中。若設定通信波特率為1200bps,波特率因子寄存器的初始化程序為:MOVDX,3FBHMOVAL,80HOUTDX,ALMOVDX,3F8HMOVAL,60HOUTDX,ALMOVDX,3F9HMOVAL,00HOUTDX,AL2.2.2通信線路控制寄存器(LCR)通信線路控制寄存器LRC主要用來指定異步通信數(shù)據(jù)格式,即字符長度、停止位位數(shù)、奇偶校驗。LRC的控制字如下D7D6D5D4D3D2D1D0DLABSBSPEPSPENSTBWLS,^LS2.2.3通信線路狀態(tài)寄存器通信線路狀態(tài)寄存器用來表示數(shù)據(jù)接收和數(shù)據(jù)發(fā)送時8250的狀態(tài)。控制字如下D7D6D5D4D3D2D1D00TSRETHREBTFEPEOEDR2.2.4中斷允許寄存器中斷源提出的中斷請求被允許還是被禁止是由允許中斷寄存器控制??刂谱指袷饺缦?/p>
D7D6D5D4D3D2D1D00000EMSIELSIETBEIERBFI2.2.5中斷識別寄存器為了具體識別時哪種事件引起的中斷,直到該中斷請求被CPU響應并服務之后,才能接收其他的中斷請求。該寄存器為只讀寄存器,內(nèi)容格式為D7D6D5D4D3D2D1D000000ID.JD1 IP2.2.6調(diào)制解調(diào)控制寄存器MODEM控制寄存器用來設置對MODEM的聯(lián)絡控制信號和芯片自檢,寄存器的各位定義如下:D7D6D5D4D3D2D1D0000LOOPOUT2OUT】RTSDTR2.2.7MODEM狀態(tài)寄存器Modem狀態(tài)寄存器用來檢測和記錄來自Modem的聯(lián)絡信號及其狀態(tài)變化。此寄存器的各位定義為:D7D6D5D4D3D2D1D0RLSDRIDSRCTS△RLSD△RI△DSR△CTS2.2.8發(fā)送保持寄存器和接收緩沖寄存器發(fā)送時,CPU首先將待發(fā)送的字符寫到8250的發(fā)送保持寄存器THR中,然后進入發(fā)送移位寄存器,在發(fā)送始終的作用下,從SOUT引腳輸出。一旦THR的內(nèi)容送到發(fā)送移位寄存器TSR后,THR就變空,同時將LSR的THRE位置“1”,產(chǎn)生中斷請求,要求CPU發(fā)送下一個字符。CPU向THR寫入下一個字符后,THRE位自動清“0”。如此重復,直到全部數(shù)據(jù)發(fā)送完畢。接收時,串行數(shù)據(jù)在接收時鐘的作用下,從SIN引腳先輸入到移位寄存器RSR,然后由RSR并行輸入到接收緩沖寄存器RBR,一旦RBR變滿,將LSR的DR位置“1”,產(chǎn)生中斷請求,要求CPU讀取數(shù)據(jù)字符。CPU從RBR讀取該字符后,。日位自動清“0”。如此重復,直到所有的數(shù)據(jù)接收完畢。2.3INS8250的各寄存器的地址寄存器COM1端口下的地址COM2端口下的地址THR3F8H2F8HRBR3F8H2F8HLSB3F8H2F8HMSB3F9H12F9H1IER3F9H2F9HIIR3FAH2FAHLCR3FBH2FBHMCR3FCH2FCHLSR3FDH2FDHMSR3FEH2FEH3程序設計3.1程序設計思路根據(jù)設計要求,要實現(xiàn)通過串口進行通信,就必須有一個發(fā)送端和一個接收端,因此要編寫兩個程序,在發(fā)送端編寫發(fā)送程序,在接受端編寫接收程序。發(fā)送pc機和接收PC機通過RS-232C的3根信號線(TXD、RXD、GND)進行相連。我決定采用查詢方式編寫發(fā)送程序和接收程序。編寫接收程序的時候,首先要初始化段寄存器,設置發(fā)送緩沖區(qū)指針。然后初始化8250,通過初始化8250來設置串口的參數(shù)。再根據(jù)線路狀態(tài)寄存器的內(nèi)容,測試發(fā)送保持寄存器是否為空,如果不為空,繼續(xù)讀線狀態(tài)寄存器的內(nèi)容,判斷發(fā)送保持寄存器是否為空,如果為空的話,讀取按鍵字符并顯示和發(fā)送它。我事先規(guī)定當輸入某一個字符的時候發(fā)送結(jié)束,這時候我就要判斷按鍵是否為該字符,是該字符的時候結(jié)束程序。編寫接收程序的時候首先要設置接收緩沖區(qū),設置接收錯信息,初始段寄存器,設置接收緩沖寄存器地址指針然后初始化8250,初始設置和接收端的保持一置。以上完成后開始接收,在屏幕上顯示接收開始。然后讀線狀態(tài)寄存器,判斷是否接收錯,在屏幕上顯示接收錯誤,繼續(xù)讀線狀態(tài)寄存器,如果接收無誤,則測試接收數(shù)據(jù)是否準備好了,為準備好則循環(huán)測試,準備好了則接收字符。判斷接收的字符是否為規(guī)定的結(jié)束字符,如果是結(jié)束程序,如果不是顯示字符。兩臺機器的連接圖如下。3.2程序流程圖3.2.1發(fā)送端程序流程圖3.2.2接收端的程序流程圖3.3具體的程序3.3.1發(fā)送端的程序代碼DATASEGMENTDISPDB'TRANSMISSIONSTART:',0AH,0DH,'$'DATAENDSSTACKSEGMENTPARASTACK'STACK'DB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVDX,3FBH;置DLAB=1MOVAL,80HOUTDX,ALMOVDX,3F8H;置波特率因子寄存器MOVAL,60H;波特率因子低字節(jié)OUTDX,ALMOVDX,3F9HMOVAL,0;波特率因子高字節(jié)OUTDX,ALMOVDX,3FBH;置線路控制寄存器MOVAL,0AH;數(shù)據(jù)位7位,停止位1位、奇校驗OUTDX,ALMOVDX,3FCH;置MODEM控制寄存器MOVAL,02H;禁止中斷OUTDX,ALMOVDX,3F9H;置中斷允許寄存器MOVAL,0;屏蔽所有中斷OUTDX,ALMOVDX,OFFSETDISP;顯示發(fā)送提示信息MOVAH,9INT21HLOP:MOVDX,3FDH;讀線路狀態(tài)寄存器INAL,DXTESTAL,20H;測試發(fā)送保持寄存器JZLOP;不空,則循環(huán)測試MOVAH,1;讀取按鍵字符并顯示INT21HMOVDX,3F8H;發(fā)送該字符OUTDX,ALCMPAL,'P;判斷按下的字符是否為PJZOVER;是,則結(jié)束JMPLOP;不是繼續(xù)循環(huán)OVER:MOVAH,4CH;返回DOSINT21HCODEENDSENDSTART3.3.2接收端的程序源代碼DATASEGMENTRBUFDB30DUP(0)DISPDB'RECEIVESTART:',0AH,0DH,'$'ERRORDB'RECEIVEERRO!',0AH,0DH,'$'DATAENDSSTACKSEGMENTPARASTACK'STACK'CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXLEASI,RBUF;置接收緩沖區(qū)地址指針MOVDX,3FBH;置DLAB=1MOVAL,80HOUTDX,ALMOVDX,3F8H;置波特率因子寄存器MOVAL,60H;波特率因子低字節(jié)OUTDX,ALMOVDX,3F9HMOVAL,0;波特率因子高字節(jié)OUTDX,ALMOVDX,3FBH;置通信線路控制寄存器MOVAL,0AH;數(shù)據(jù)位7位、停止位1位、奇校驗OUTDX,ALMOVDX,3FCH;置MODEM控制寄存器MOVAL,02;禁止中斷OUTDX,ALMOVDX,3F9H;置中斷允許寄存器MOVAL,0;屏蔽所有中斷OUTDX,ALMOVDX,OFFSETDISP;顯示接收提示信息MOVAH,9INT21HMOVDX,3F8H;讀接收緩沖器內(nèi)容,不處理INAL,DXLOP:MOVDX,3FDH;讀線路狀態(tài)寄存器INAL,DXTESTAL,1EH;測試接收錯誤?JNZER;有,轉(zhuǎn)錯誤顯示TESTAL,01H;無,則測試接收數(shù)據(jù)準備好JZLOP;未準備好則循環(huán)測試MOVDX,3F8HINAL,DXANDAL,7FHCMPAL,'P;判斷接收結(jié)束嗎?JZOVER;結(jié)束轉(zhuǎn)OVERMOV[SI],AL;未結(jié)束則存入緩沖區(qū)INCSIMOVDL,AL;顯示該字符MOVAH,02INT21HJMPLOPER: MOVDX,3F8H;清標志位INAL,DXMOVDX,OFFSETERROR;顯示錯誤信息MOVAH,9INT21HJMPLOPOVER:MOVDL,ALMOVAH,2MOVAH,4CH;返回DOSINT21HCODEENDSENDSTART運行程序在MF2KP中新建空白文檔,輸入發(fā)送端的程序,保存為ASM文件。編譯連接運行。運行結(jié)果截圖如下:在MF2KP中新建空白文檔,輸入接收端的程序,保存為ASM文件。編譯連接運行。運行結(jié)果截圖如下:心得體會這次微機原理課程設計歷時5天,在整整5天的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。以前在上課的時候,老師經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序原理方框圖化出來,但是我開始總覺得這樣做沒必要,很浪費時間。但是,這次課程設計完全改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎的,但是在課程設計中碰到的那些需要很多代碼才能完成的任務,畫程序方框圖是很有必要的。因為通過程序方框圖,在做設計的過程中,我們每一步要做什么,每一步要完成什么任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。其次,以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,怎么去了解每個寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在陳老師的辛勤指導下,終于游逆而解。同時,在趙老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會場布置合同范本
- 鄉(xiāng)鎮(zhèn)商品房出租合同范本
- pe管材及管件購銷合同范本
- 協(xié)議離婚陰陽合同范本
- 酒店投資合作合同范本
- 燒豬店鋪轉(zhuǎn)讓合同范本
- 櫥柜衣柜制作及其安裝合同范本
- 國際采購合同范本
- 合法用工合同范本
- 教育機構(gòu)培訓合同范本
- 部編版三年級語文下冊期中試卷及參考答案
- JT-T-1199.1-2018綠色交通設施評估技術要求第1部分:綠色公路
- 酒店能耗分析報告
- 桃花紅杏花紅混聲合唱簡譜
- DL-T995-2016繼電保護和電網(wǎng)安全自動裝置檢驗規(guī)程
- 2024年蘇州農(nóng)業(yè)職業(yè)技術學院單招職業(yè)適應性測試題庫含答案
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術學院單招職業(yè)適應性測試題庫含答案
- 2024年大理農(nóng)林職業(yè)技術學院單招職業(yè)適應性測試題庫含答案
- C語言課程思政案例
- 《柔性棚洞防護結(jié)構(gòu)技術規(guī)程》
- 現(xiàn)場施工環(huán)境保護應急預案
評論
0/150
提交評論