帶緩沖區(qū)的PC機(jī)查詢式串行通信實(shí)驗(yàn)(共7頁(yè))_第1頁(yè)
帶緩沖區(qū)的PC機(jī)查詢式串行通信實(shí)驗(yàn)(共7頁(yè))_第2頁(yè)
帶緩沖區(qū)的PC機(jī)查詢式串行通信實(shí)驗(yàn)(共7頁(yè))_第3頁(yè)
帶緩沖區(qū)的PC機(jī)查詢式串行通信實(shí)驗(yàn)(共7頁(yè))_第4頁(yè)
帶緩沖區(qū)的PC機(jī)查詢式串行通信實(shí)驗(yàn)(共7頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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、PAGE 6PAGE 8帶緩沖區(qū)的PC機(jī)查詢(chxn)式串行通信實(shí)驗(yàn)實(shí)驗(yàn)(shyn)目的:掌握(zhngw)對(duì)通用異步收發(fā)器的編程進(jìn)一步熟悉利用系統(tǒng)功能調(diào)用從鍵盤(pán)上讀取字符的方法實(shí)驗(yàn)設(shè)備和相關(guān)軟件:386以上微機(jī)一臺(tái);串行通信電纜一條;操作系統(tǒng):MS-DOS或者WINDOWS95以上的MS-DOS環(huán)境;匯編和連接:TASM.EXE,TLINK.EXE;文本編輯工具:記事本、EDIT、BORLAND C+或者PWB;調(diào)試程序:TD.EXE。實(shí)驗(yàn)內(nèi)容:編寫(xiě)程序?qū)崿F(xiàn):接收鍵盤(pán)輸入的一個(gè)字符串并存于發(fā)送緩沖區(qū)TRBUFF(以回車(chē)符0DH結(jié)束),當(dāng)輸入回車(chē)時(shí)啟動(dòng)查詢式發(fā)送;查詢式接收來(lái)自串行口輸入的一

2、個(gè)字符串并存于接收緩沖區(qū)DIBUFF,當(dāng)收到回車(chē)符時(shí),啟動(dòng)顯示,顯示接收的字符串并換行;要求當(dāng)按ESC鍵時(shí)退出該程序的運(yùn)行,返回操作系統(tǒng),其中ESC鍵的ASCII碼為1BH。實(shí)驗(yàn)步驟:編寫(xiě)帶緩沖區(qū)的PC機(jī)查詢式串行通信實(shí)驗(yàn),實(shí)現(xiàn)接收鍵盤(pán)輸入的一個(gè)字符串并存于發(fā)送緩沖區(qū)TRBUFF(以回車(chē)符0DH結(jié)束),當(dāng)輸入回車(chē)時(shí)啟動(dòng)查詢式發(fā)送;查詢式接收來(lái)自串行口輸入的一個(gè)字符串并存于接收緩沖區(qū)DIBUFF,當(dāng)收到回車(chē)符時(shí),啟動(dòng)顯示,顯示接收的字符串并換行;要求當(dāng)按ESC鍵時(shí)退出該程序的運(yùn)行,返回操作系統(tǒng),其中ESC鍵的ASCII碼為1BH。通信程序幀格式和波特率與同組同學(xué)協(xié)商后定義,先按MODEM控制字為

3、循環(huán)方式工作,進(jìn)行測(cè)試程序通過(guò)與否。在通過(guò)(tnggu)的基礎(chǔ)上MODEM控制字改為禁止循環(huán)方式工作(gngzu),用通信電纜將兩臺(tái)PC機(jī)串口對(duì)接(du ji),測(cè)試程序通過(guò)與否。兩臺(tái)PC機(jī)串口通信實(shí)現(xiàn)后,分別改變一方程序中定義的幀格式和波特率,觀察和記錄通信效果,說(shuō)明產(chǎn)生此現(xiàn)象的原因。設(shè)計(jì)思想提示:在程序中,將用到緩沖區(qū)和標(biāo)志位,注意要事先將收發(fā)緩沖滿標(biāo)志和接收標(biāo)志清零;還將用到關(guān)于鍵盤(pán)動(dòng)作的訪問(wèn)方法。其中系統(tǒng)功能調(diào)用中INT 16H的AH=01H號(hào)子功能是檢查鍵盤(pán)緩沖隊(duì)列中有無(wú)輸入字符,如果有輸入字符,則零標(biāo)志位清零,如果無(wú),零標(biāo)志位置1,利用AH=00H號(hào)子功能可以讀取已經(jīng)存在的鍵值。過(guò)

4、程分析如下:1)、調(diào)用初始化子程序,初始化INS8250芯片2)、掃描鍵盤(pán),有無(wú)輸入,無(wú),轉(zhuǎn)到8)3)、有, 測(cè)試字符是否為ESC,是,退出,轉(zhuǎn)12)4)、顯示該字符,判斷發(fā)送緩沖滿標(biāo)志是否為1,是轉(zhuǎn)8)5)、把字符放到發(fā)送緩沖,指針加1 6)、測(cè)試字符是否為回車(chē),不是,轉(zhuǎn)到8)7)、一次發(fā)送結(jié)束,發(fā)送緩沖滿標(biāo)志置1,發(fā)送緩沖區(qū)復(fù)位8)、調(diào)用收發(fā)子程序,測(cè)試接收結(jié)束標(biāo)志是否為0,是,轉(zhuǎn)2)9)、提示接受數(shù)據(jù),顯示一個(gè)字符,直到遇到回車(chē)符10)、復(fù)位SI,調(diào)用收發(fā)子程序11)、提示繼續(xù)接收12)、退出應(yīng)用程序,返回操作系統(tǒng)。收發(fā)子程序的編寫(xiě)提示:1)、測(cè)試接收結(jié)束標(biāo)志是否為1,是轉(zhuǎn)5)2)測(cè)試線

5、路狀態(tài)寄存器,是否接收準(zhǔn)備就緒,否,轉(zhuǎn)5)3)、接收字符串,判斷,字符是否為回車(chē)符,否,轉(zhuǎn)5)4)、接收結(jié)束標(biāo)志置1,接收緩沖區(qū)復(fù)位5)、判斷收發(fā)滿標(biāo)志是否為1,否,轉(zhuǎn)9)6)、查線路狀態(tài)寄存器是否發(fā)送保持寄存器為空,否,轉(zhuǎn)9)7)、發(fā)送字符串,判斷發(fā)送的字符是否為回車(chē)符時(shí),否,轉(zhuǎn)9)8)、發(fā)送緩沖滿標(biāo)志清零,發(fā)送緩沖區(qū)復(fù)位9)、退出子程序?qū)嶒?yàn)報(bào)告要求:畫(huà)出程序框圖,寫(xiě)出匯編語(yǔ)言源程序。若幀格式和波特率不一致,觀察和記錄通信情況,說(shuō)明產(chǎn)生此現(xiàn)象的原因。參考(cnko)程序:COM1EQU3F8HDATASEGMENTREBUFFDB 100 DUP(0);定義(dngy)串口接收緩沖區(qū)TRBU

6、FFDB100 DUP (0);定義(dngy)鍵盤(pán)接收緩沖區(qū)TRFLAGDB0DIFLAGDB0MSG1DB 0DH,0AH,INPUT A STRING:$MSG2DB 0DH,0AH,RECEIVE A STRING:$MSG3DB 0DH,0AH,CONTINUE A STRING:$DATA ENDS CODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOVAX,DATA MOV DS,AX CALL INI_COM1 ;串口初始化 LEA DX,MSG1 MOV AH,09H INT 21H LEA DI,TRBUFF LEA SI,REBUFFMN6

7、:MOV AH,1;掃描鍵盤(pán) INT 16H JZ MN2 MOV AH,0 ;接受鍵盤(pán)輸入 INT 16H CMP AL,1BH ;判斷是否為ESC鍵,是則退出 JZ QUIT MOV DL,AL MOV AH,02H INT 21H CMP TRFLAG,1 JZ MN2 MOV DI,AL ;字符(z f)放入緩沖區(qū) INC DI CMP AL,0DH ;判斷(pndun)是否一串結(jié)束 JNZ MN2 MOV TRFLAG,1 LEA DI,TRBUFF LEA DX,MSG1 MOV AH,09H INT 21HMN2:CALLREORTR;進(jìn)行一次接收(jishu)出串口接收和發(fā)送

8、CMP DIFLAG,0 JZ MN6 LEA DX,MSG2 MOV AH,09H INT 21HMN5:MOVDL,SI INC SI CMP DL,0DH JZ MN4 MOV AH,02H INT 21H JMP MN5MN4:MOVDIFLAG,0 LEA SI,REBUFF CALL REORTR MOV DX,OFFSET MSG3 MOV AH,09H INT 21H LEA BX,TRBUFFMN7:CMPBX,DI JZ MN6 MOV DL,BX INC BX MOV AH,02H INT 21H JMP MN7QUIT:MOVAH,4CH;退出(tuch) INT 21

9、HREORTR PROC CMP DIFLAG,1 JZ RT1 MOV DX,COM1+5 ;查詢(chxn)串口是否接收好一個(gè)字符 IN AL,DX TEST AL,01H JZ RT1 MOV DX,COM1 ;接收一個(gè)(y )字符 IN AL,DX MOV SI,AL INC SI CMP AL,0DH JNZ RT1 MOV DIFLAG,1 LEA SI,REBUFFRT1:CMPTRFLAG,1 JNZ RT2 MOV DX,COM1+5 ;查詢串口是否(sh fu)發(fā)送完一個(gè)字符 IN AL,DX TEST AL,20H JZ RT2 MOV AL,DI INC DI MOV

10、DX,COM1 ;發(fā)送(f sn)一個(gè)字符 OUT DX,AL CMP AL,0DH JNZ RT2 MOV TRFLAG,0 LEA DI,TRBUFFRT2: RETREORTRENDP INI_COM1 PROC MOV DX,COM1+3 MOV AL,80H OUT DX,AL MOV DX,COM1;波特率為19200bps MOV AL,06H OUT DX,AL MOV DX,COM1+1 MOV AL,00H OUT DX,AL MOV DX,COM1+3;7位數(shù)據(jù)位,2位停止(tngzh)位,偶檢驗(yàn) MOV AL,1EH OUT DX,AL MOV DX,COM1+4 MOV AL,03H OUT DX,AL MOV DX,COM1+1;關(guān)閉(gunb)中斷 MOV AL,00H OUT DX,AL MOV DX,COM1+5 IN AL,DX RETINI_COM1 ENDPCODEENDS END START內(nèi)容

溫馨提示

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