2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩17頁(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、<p><b>  課 程 設(shè) 計(jì)</b></p><p>  課程名稱_接口與通信_(tái)__________</p><p>  題目名稱__雙擊串行通信 _______</p><p>  學(xué)生學(xué)院__計(jì)算機(jī)學(xué)院__________</p><p>  專業(yè)班級(jí)__計(jì)算機(jī)科學(xué)與技術(shù)2班</p>&

2、lt;p>  學(xué) 號(hào)____________</p><p>  學(xué)生姓名________________</p><p>  指導(dǎo)教師________________</p><p>  200 年 月 日</p><p>  一. 課程設(shè)計(jì)的內(nèi)容</p><p>  編寫(xiě)程序,實(shí)現(xiàn)雙機(jī)

3、串行通信,能正確進(jìn)行文件或字符的發(fā)送和接收。</p><p><b>  二. 相關(guān)技術(shù)</b></p><p>  1、8250串行通信初始化及收發(fā)數(shù)據(jù)</p><p><b>  2、匯編語(yǔ)言</b></p><p>  3、虛擬串口軟件及串口測(cè)試軟件的使用</p><p&g

4、t;  4、masm和link編譯器的使用</p><p><b>  三. 方案設(shè)計(jì)</b></p><p>  根據(jù)8250串行口的發(fā)送接收原理,在程序開(kāi)始時(shí)一定要先對(duì)8250進(jìn)行初始化,設(shè)置相應(yīng)的參數(shù),使8250串行口工作在合理的工作狀態(tài)。進(jìn)行相關(guān)協(xié)議的設(shè)置——即什么時(shí)候發(fā)送,什么時(shí)候接收,接收跟發(fā)送通過(guò)什么來(lái)進(jìn)行響應(yīng),保證數(shù)據(jù)傳送的正確性。我設(shè)計(jì)的程序所采用的

5、是查詢機(jī)制,雖然效率不及中斷機(jī)制高,但是簡(jiǎn)單易行。</p><p>  在代碼階段,雖然匯編的可讀性和結(jié)構(gòu)性都不是很好,但是我還是希望我的代碼能做到清晰易讀,所以我采取了兩種方案</p><p>  如果需要傳遞參數(shù),則使用宏使代碼結(jié)構(gòu)化</p><p>  如果不需要參數(shù),則使用子程序,使代碼結(jié)構(gòu)化的同時(shí),調(diào)試簡(jiǎn)單</p><p>  程序

6、設(shè)計(jì)如以下流程圖</p><p><b>  程序總流程圖</b></p><p><b>  發(fā)送輸入字符流程圖</b></p><p><b>  發(fā)送一個(gè)字符流程圖</b></p><p><b>  接收字符流程圖</b></p>&

7、lt;p><b>  接收一個(gè)字符流程圖</b></p><p><b>  四. 實(shí)現(xiàn)與測(cè)試</b></p><p><b>  1、實(shí)現(xiàn)的源碼:</b></p><p>  ESCAPE EQU 1BH</p><p><b>  ;定義堆棧<

8、;/b></p><p>  STACKSG SEGMENT STACK 'S'</p><p>  DW 64 DUP(?)</p><p>  STACKSG ENDS</p><p>  DATA SEGMENT</p><p>  CHOICE DB ?</p>&

9、lt;p>  Parm DB ?,'$'</p><p><b>  COM DW ?</b></p><p><b>  TEMP DW ?</b></p><p>  COM1 DW 3f0H</p><p>  COM2 DW 2f0H</p><

10、p>  COM3 DW 3e0H</p><p>  COM4 DW 2e0H</p><p>  TOP DB 0DH,0AH,'------------------------------------------------------------'</p><p>  DB 0DH,0AH,' Computer Serial

11、 Communication ------Colin'</p><p>  DB 0DH,0AH,'-----------------------------------------------------------'</p><p>  OPTMENU DB 0DH,0AH,' 1.Send Message

12、 '</p><p>  DB 0DH,0AH,' 2.Recive Message '</p><p>  DB 0DH,0AH,' 3.EXIT

13、 '</p><p>  SELECT_STR DB 0DH,0AH,'Please input your choice:',0DH,0AH,'$'</p><p>  SEND_TIP DB 0DH,0AH,'Please input your message(esc to exit):',0

14、DH,0AH,'$'</p><p>  REV_TIP DB 0DH,0AH,'Your rev message:',0DH,0AH,'$'</p><p>  MAINMENU DB 0DH,0AH,'Select COM: '&

15、lt;/p><p>  DB 0DH,0AH,' 1.COM1 '</p><p>  DB 0DH,0AH,' 2.COM2 '</p><

16、;p>  DB 0DH,0AH,' 3.COM3 '</p><p>  DB 0DH,0AH,' 4.COM4 '</p><p>  DB 0DH

17、,0AH,' 5.EXIT '</p><p>  DB 0DH,0AH,'Please input your choice:$'</p><p><b>  DATA ENDS</b></p><p><

18、b>  ;定義宏</b></p><p>  ; 設(shè)置顯示顏色(4字節(jié)有效)</p><p>  SETCLR MACRO COLOR</p><p>  PUSH CX</p><p>  PUSH BX</p><p>  PUSH AX</p><p&

19、gt;  MOV AH, 9</p><p>  MOV AL, ' '</p><p>  MOV BH, 0</p><p>  MOV BL, COLOR</p><p>  MOV CX, 4</p><p>  INT 10H</p>

20、<p>  POP AX</p><p>  POP BX</p><p>  POP CX</p><p><b>  ENDM</b></p><p><b>  ;回顯一個(gè)字符</b></p><p>  PUTS MACRO

21、 S</p><p>  PUSH DX</p><p>  PUSH AX</p><p>  MOV AH, 9</p><p>  LEA DX, S</p><p>  INT 21H</p><p>  POP AX</p>

22、<p>  POP DX</p><p><b>  ENDM</b></p><p><b>  ;輸出字符串</b></p><p>  OUTPUT MACRO S</p><p>  PUSH DX</p><p>  PUSH AX&

23、lt;/p><p>  MOV AH, 9</p><p>  LEA DX, S</p><p>  INT 21H</p><p>  POP AX</p><p>  POP DX</p><p><b>  ENDM</b><

24、;/p><p><b>  ;將最高位清零</b></p><p>  LCRDL MACRO</p><p><b>  PUSH DX</b></p><p>  MOV AL,1FH</p><p>  MOV DX,COM</p><p>  

25、MOV TEMP,DX</p><p>  ADD TEMP,0BH</p><p>  MOV DX,TEMP</p><p>  OUT DX, AL</p><p><b>  POP DX</b></p><p><b>  ENDM</b></p>&

26、lt;p><b>  ;選擇</b></p><p>  INPUT_SELECT MACRO</p><p><b>  PUSH AX</b></p><p><b>  PUSH DX</b></p><p>  MOV AH, 0CH </p>

27、<p>  MOV AL, 06H</p><p>  MOV DL, 0FFH</p><p><b>  INT 21H</b></p><p>  MOV AH,01H</p><p><b>  INT 21H</b></p><p>  MOV Par

28、m,AL</p><p><b>  POP DX</b></p><p><b>  POP AX</b></p><p><b>  ENDM</b></p><p>  CODE SEGMENT</p><p>  MAIN PROC FAR<

29、;/p><p>  ASSUME CS:CODE,DS:DATA</p><p>  START: </p><p>  MOV AX,DATA</p><p><b>  MOV DS,AX</b></p><p>  OUTPUT MAIN

30、MENU</p><p>  INPUT_SELECT</p><p>  MOV AL,[Parm]</p><p>  CMP AL,32H</p><p>  JL SELECTCOM1</p><p>  JE SELECTCOM2</p><p>  CMP AL,34H</p&

31、gt;<p>  JL SELECTCOM3</p><p>  JE SELECTCOM4</p><p>  JG PROOVER</p><p>  SELECTCOM1:</p><p>  MOV AX,COM1</p><p>  MOV COM,AX</p><p&g

32、t;<b>  JMP INITC</b></p><p>  SELECTCOM2:</p><p>  MOV AX,COM2</p><p>  MOV COM,AX</p><p><b>  JMP INITC</b></p><p>  SELECTCOM3:

33、</p><p>  MOV AX,COM3</p><p>  MOV COM,AX</p><p><b>  JMP INITC</b></p><p>  SELECTCOM4:</p><p>  MOV AX,COM4</p><p>  MOV COM,AX

34、</p><p><b>  JMP INITC</b></p><p><b>  INITC:</b></p><p>  CALL INIT_COM</p><p><b>  PROSTART:</b></p><p>  OUTPUT TO

35、P</p><p>  INPUT_SELECT</p><p>  MOV AL,[Parm]</p><p>  CMP AL,32H</p><p>  JL CALL_SEND</p><p>  JE CALL_REV</p><p>  JG PROOVER</p>&

36、lt;p>  CALL_SEND: </p><p>  CALL NEAR PTR SEND_MEG</p><p>  JMP PROSTART</p><p><b>  CALL_REV:</b></p><p>  CALL NEAR PTR REV_MEG</p><p> 

37、 JMP PROSTART</p><p><b>  PROOVER:</b></p><p>  MOV AX, 4C00H</p><p><b>  INT 21H</b></p><p><b>  MAIN ENDP</b></p><p>

38、<b>  ;初始化端口</b></p><p>  INIT_COM PROC NEAR</p><p><b>  PUSH AX</b></p><p><b>  PUSH DX</b></p><p>  MOV AL,80H</p><p>

39、  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,0BH</p><p>  MOV DX,TEMP</p><p><b>  OUT DX,AL</b></p><p>  MOV AL,0CH</p><p>

40、  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,08H</p><p>  MOV DX,TEMP</p><p><b>  OUT DX,AL</b></p><p><b>  MOV AL,0</b><

41、/p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,09H</p><p>  MOV DX,TEMP</p><p><b>  OUT DX,AL</b></p><p>  MOV AL,0000111

42、0B ;7bit for data 2bit for stop,hava test</p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,0BH</p><p>  MOV DX,TEMP</p><p><b>  OUT DX,AL

43、</b></p><p>  MOV AL,0FH</p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,09H</p><p>  MOV DX,TEMP</p><p><b>  OUT DX,AL

44、</b></p><p>  MOV AL,0BH</p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,0CH</p><p>  MOV DX,TEMP</p><p><b>  OUT DX,AL

45、</b></p><p><b>  POP DX</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  INIT_COM ENDP</p><p><b>  ;

46、發(fā)送一個(gè)字符</b></p><p>  SENDCH PROC NEAR</p><p>  SETCLR 0CH</p><p>  MOV Parm, AL </p><p>  ; PUTS Parm ; 顯示[字符]</p><p><b>

47、  LCRDL</b></p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,0DH</p><p>  MOV DX, TEMP ; 狀態(tài)口</p><p>  SEND: IN AL, DX

48、 ; 讀狀態(tài)</p><p>  TEST AL, 20H ; 發(fā)送就緒?</p><p>  JZ SEND</p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,08H</p>

49、<p>  MOV DX, TEMP ; 數(shù)據(jù)口</p><p>  MOV AL, [Parm]</p><p>  OUT DX, AL</p><p><b>  RET</b></p><p>  SENDCH ENDP</p><p>  ;

50、 從串口接收一個(gè)字符 </p><p>  RECVCH PROC NEAR</p><p><b>  LCRDL</b></p><p>  MOV DX,COM</p><p>  MOV TEMP,DX</p><p>  ADD TEMP,0DH</p>

51、<p>  MOV DX, TEMP ; 狀態(tài)口</p><p>  IN AL, DX ; 讀狀態(tài)</p><p>  TEST AL, 01H ; 收到數(shù)據(jù)?</p><p>  JZ NORECV</p><p>  MOV DX,COM<

52、/p><p>  MOV TEMP,DX</p><p>  ADD TEMP,08H</p><p>  MOV DX, TEMP ; 數(shù)據(jù)口</p><p>  IN AL, DX</p><p>  SETCLR 0AH</p><p>  MOV

53、 Parm, AL ; 顯示<字符></p><p>  PUTS Parm</p><p>  NORECV: </p><p>  RET ; NOP </p><p>  RECVCH ENDP</p><p><b>  ;發(fā)送信息</b

54、></p><p>  SEND_MEG PROC NEAR</p><p><b>  PUSH AX</b></p><p><b>  PUSH DX</b></p><p>  OUTPUT SEND_TIP</p><p>  JMP GETKEY</p

55、><p>  KEYRD: MOV AH, 0CH ; 清除鍵盤(pán)緩沖區(qū)</p><p>  MOV AL, 06H</p><p>  MOV DL, 0FFH</p><p>  INT 21H</p><p>  GETKEY: MOV AH, 1 ; 讀取

56、鍵盤(pán)輸入</p><p><b>  INT 21H</b></p><p>  CMP AL,ESCAPE ; ESC鍵結(jié)束發(fā)送</p><p>  JE OVERSEND </p><p>  CMP AL, 32 ; 排除不可見(jiàn)字符</p><p> 

57、 JL KEYRD</p><p>  CMP AL,126</p><p>  JG KEYRD</p><p>  CALL SENDCH</p><p>  JMP KEYRD</p><p>  OVERSEND: </p><p>  CALL SEND

58、CH </p><p><b>  POP DX</b></p><p><b>  POP AX</b></p><p>  RET </p><p>  SEND_MEG ENDP</p><p><b>  ;接收信息</b><

59、;/p><p>  REV_MEG PROC NEAR</p><p><b>  PUSH AX</b></p><p><b>  PUSH DX</b></p><p>  OUTPUT REV_TIP</p><p>  REV: CALL RECVCH<

60、/p><p>  CMP AL, ESCAPE </p><p>  JE OVERREV</p><p><b>  JMP REV</b></p><p><b>  OVERREV:</b></p><p><b>  POP DX</b></

61、p><p><b>  POP AX</b></p><p><b>  RET </b></p><p>  REV_MEG ENDP</p><p><b>  CODE ENDS</b></p><p><b>  END STAR

62、T</b></p><p><b>  2、測(cè)試:</b></p><p><b>  a)創(chuàng)建虛擬端口</b></p><p><b>  b)選擇端口</b></p><p><b>  選擇操作</b></p><p&

63、gt;<b>  發(fā)送接收數(shù)據(jù) </b></p><p><b>  發(fā)送結(jié)束</b></p><p><b>  f)退出</b></p><p><b>  選擇3,正常退出</b></p><p><b>  五.分析與總結(jié)</b&g

64、t;</p><p>  本次設(shè)計(jì)為用匯編編寫(xiě)程序,實(shí)現(xiàn)雙機(jī)串行通信,能正確進(jìn)行文件或字符的發(fā)送和接收。萬(wàn)事開(kāi)頭難,在設(shè)計(jì)開(kāi)始時(shí),完全不知道如果下手。只能硬著頭皮做下去,其中遇到的問(wèn)題以及解決方法如下:</p><p>  第一步當(dāng)然是先做界面。但是因?yàn)楫?dāng)時(shí)匯編沒(méi)學(xué)好,連編譯器怎么用都忘了。無(wú)奈之下,去百度文庫(kù)下了一份msam5.0的教程,重新學(xué)習(xí)了msam的編譯、執(zhí)行、調(diào)試。而在編寫(xiě)界面

65、代碼之時(shí),才真正受了匯編沒(méi)學(xué)好的苦。拿著匯編的課本,不斷地查指令和DOS系統(tǒng)功能調(diào)用表,程序不斷出現(xiàn)錯(cuò)誤,比如忘了在字符串結(jié)束處加入’$’。經(jīng)過(guò)一個(gè)晚上的奮斗,終于初步解決了匯編語(yǔ)言問(wèn)題。不得不佩服韓順平老師的一句話:“計(jì)算機(jī)是在做中學(xué)的學(xué)科”。</p><p>  第二步是把所寫(xiě)的界面代碼結(jié)構(gòu)化。這是在看《王爽的匯編》這本書(shū)中得到的啟示。不過(guò)在結(jié)構(gòu)化方面,我不知道應(yīng)該選擇宏還是選擇子程序。雖然我傾向于子程序,不

66、過(guò)宏在參數(shù)傳遞部分很像C語(yǔ)言,所以我一開(kāi)始還是選擇了宏。這是我噩夢(mèng)的開(kāi)始,因?yàn)樵谡{(diào)試的時(shí)候,編譯器無(wú)法確定具體的錯(cuò)誤位置,使得調(diào)試非常麻煩。不得已,我將一大部分較為復(fù)雜的宏改為子程序。</p><p>  第三步是發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)之前當(dāng)然是要對(duì)串口進(jìn)行初始化。這一部分我借鑒了書(shū)中的程序,還算成功。可是在發(fā)送數(shù)據(jù)的時(shí)候我蒙了,完全不知道怎么做,把接口與通信的課本中提到8250的知識(shí)再看了一遍,發(fā)現(xiàn)以前懵懂的地方都

67、清晰了好多,再把一些疑問(wèn)往百度一貼,大概明白了設(shè)計(jì)的思路。就是在一對(duì)互連的的端口中,一端發(fā)送一端接收,主要用in和out指令,輸入輸出的地址都是規(guī)定好的。在一開(kāi)始可以用虛擬串口軟件虛擬兩個(gè)互連的端口。本著這種思路,我開(kāi)始畫(huà)程序流程圖,并且將代碼結(jié)構(gòu)寫(xiě)出。</p><p>  第四步是測(cè)試發(fā)送數(shù)據(jù)是否成功。因?yàn)闆](méi)有寫(xiě)接收的代碼,所以測(cè)試方面,我用了一個(gè)串口測(cè)試軟件,將其波特率,數(shù)據(jù)位,停止位,校驗(yàn)位等設(shè)置好,測(cè)試是

68、否能接收到。當(dāng)然錯(cuò)誤是避免不了的,一開(kāi)始發(fā)送時(shí),系統(tǒng)總是出現(xiàn)錯(cuò)誤提示,而程序就直接掛了。懷疑是串口問(wèn)題,在用其它串口的時(shí)候發(fā)現(xiàn)每次都要修改代碼重新編譯,非常麻煩。所以在程序入口處,加入了串口選擇功能。最后在單步執(zhí)行的時(shí)候發(fā)現(xiàn),是高位清零的宏中,串口地址賦值錯(cuò)誤。改正后,終于發(fā)送成功了。</p><p>  第五步是接收數(shù)據(jù)。有了前面的經(jīng)驗(yàn),這時(shí)顯得比較輕松,出現(xiàn)的一些代碼問(wèn)題都能解決。</p>&l

69、t;p>  每次的課程設(shè)計(jì)都是對(duì)自己能力的升華。這次課程設(shè)計(jì),然后有了挑戰(zhàn)苦難的信心,本來(lái)一頭霧水的設(shè)計(jì),通過(guò)一步步做下來(lái),竟然解決了,當(dāng)時(shí)的成就感不言而喻。而在對(duì)于端口的理解和匯編語(yǔ)言的掌握程度,毫無(wú)疑問(wèn)地前進(jìn)了一大步!</p><p><b>  附參考書(shū)目</b></p><p>  [1] 余永權(quán),湯榮江《計(jì)算機(jī)接口與通信》</p><

溫馨提示

  • 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ù)僅提供信息存儲(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)論