串行接口實(shí)驗(yàn)報(bào)告(共13頁)_第1頁
串行接口實(shí)驗(yàn)報(bào)告(共13頁)_第2頁
串行接口實(shí)驗(yàn)報(bào)告(共13頁)_第3頁
串行接口實(shí)驗(yàn)報(bào)告(共13頁)_第4頁
串行接口實(shí)驗(yàn)報(bào)告(共13頁)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)名稱: 串行接口 專業(yè)班級(jí): 學(xué) 號(hào): 姓 名: 同組人員: 指導(dǎo)教師: 報(bào)告日期: 實(shí)驗(yàn)二實(shí)驗(yàn)二1. 實(shí)驗(yàn)?zāi)康?.熟悉串行接口芯片8251的工作原理2.掌握串行通訊接收/發(fā)送程序的設(shè)計(jì)方法2. 實(shí)驗(yàn)內(nèi)容通過對(duì)8251芯片的編程,使得實(shí)驗(yàn)臺(tái)上的串行通訊接口(RS232)以查詢方式實(shí)現(xiàn)信息在雙機(jī)上的。具體過程如下:1. 從A電腦鍵盤上輸入一個(gè)字符,將其通過A試驗(yàn)箱的8251數(shù)據(jù)口發(fā)送出去,然后通過B試驗(yàn)箱的8251接收該字符,最后在B電腦的屏幕上顯示出來。2.從A試驗(yàn)箱上輸入步進(jìn)電機(jī)控制信息(開關(guān)信息),通過A試驗(yàn)箱的8251數(shù)據(jù)口發(fā)送到B試驗(yàn)

2、箱的 8251數(shù)據(jù)口,在B試驗(yàn)箱上接收到該信息之后,再用這個(gè)信息控制B試驗(yàn)箱上的步進(jìn)電機(jī)的啟動(dòng)停止、轉(zhuǎn)速和旋轉(zhuǎn)方向。3. 實(shí)驗(yàn)原理1.8251控制字說明在準(zhǔn)備發(fā)送數(shù)據(jù)和接收數(shù)據(jù)之前必須由CPU把一組控制字裝入8251??刂谱址謨煞N:方式指令和工作指令,先裝入方式指令,后裝入工作指令。另外,在發(fā)送和接收數(shù)據(jù)時(shí),要檢查8251狀態(tài)字,當(dāng)狀態(tài)字報(bào)告“發(fā)送準(zhǔn)備好”/“接收準(zhǔn)備好”時(shí),才能進(jìn)行數(shù)據(jù)的發(fā)送或接收。2.8251方式指令(端口地址2B9H)3.8251工作指令(端口地址2B9H)4. 8251狀態(tài)字(端口地址2B9H)5.8253控制字(283H)6.8253計(jì)數(shù)初值(283H)計(jì)數(shù)初值=時(shí)鐘

3、頻率/(波特率× 波特率因子)本實(shí)驗(yàn):脈沖源=1MHz 波特率=1200 波特率因=16計(jì)數(shù)初值= /1200*16=52NYYN讀入字符顯示在屏幕上為ESC?接收準(zhǔn)備好?NY發(fā)送字符接收字符從鍵盤接收一字符發(fā)送準(zhǔn)備好?接收字符顯示在屏幕上初始化8253,設(shè)置工作方式和計(jì)數(shù)初值初始化8251,先后傳方式和工作命令字結(jié)束開始7.程序流程框圖4.程序代碼Fxc.asm;*;*8251串行通訊(自發(fā)自收)*;*;data segment io8253a equ 280h ;8253計(jì)數(shù)0端口地址 io8253b equ 283h ;8253控制端口地址 io8251a equ 2b8h ;

4、8251數(shù)據(jù)端口地址 io8251b equ 2b9h ;8251控制端口地址 mes1 db 'you can play a key on the keybord!',0dh,0ah,24h mes2 dd mes1data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8253b ;設(shè)置8253計(jì)數(shù)器0工作方式 mov al,16h ;控制字為B out dx,al mov dx,io8253a mov al,52 ;給8253計(jì)數(shù)器0送初值 out dx,al mo

5、v dx,io8251b ;初始化8251 ;xor al,al ;mov cx,03 ;向8251控制端口送3個(gè)0 ;delay: call out1 ;loop delay mov al,40h ;向8251控制端口送40H,使其復(fù)位 call out1 mov al,4eh ;設(shè)置為1個(gè)停止位,8個(gè)數(shù)據(jù)位,波特率因子為16 call out1 mov al,27h ;向8251送控制字允許其發(fā)送和接收 call out1 lds dx,mes2 ;顯示提示信息 mov ah,09 int 21hwaiti: mov dx,io8251b in al,dx test al,01 ;發(fā)送是否

6、準(zhǔn)備好 jz next mov ah,0bh int 21h test al,0ffh ;檢測(cè)是否有鍵盤輸入 jz next mov dl,0ffh ;有鍵盤輸入,讀入字符 mov ah,06h int 21h cmp al,27 ;若為ESC,結(jié)束 jz exit mov dx,io8251a ;inc al out dx,al ;發(fā)送 ; mov cx,40h;s51: loop s51 ;延時(shí)next: mov dx,io8251b in al,dx test al,02 ;檢查接收是否準(zhǔn)備好 jz waiti ;沒有,等待 mov dx,io8251a in al,dx ;準(zhǔn)備好,接收

7、 mov dl,al mov ah,02 ;將接收到的字符顯示在屏幕上 int 21h jmp waitiexit: mov ah,4ch ;退出 int 21hout1 proc near ;向外發(fā)送一字節(jié)的子程序 out dx,al ;push cx ;mov cx,40h;gg: loop gg ;延時(shí) ; pop cx retout1 endpcode endsend startSend .asm ;*;*8251串行通訊(自發(fā)自收)*;*;data segment io8253a equ 280h ;8253計(jì)數(shù)0端口地址 io8253b equ 283h ;8253控制端口地址 i

8、o8251a equ 2b8h ;8251數(shù)據(jù)端口地址 io8251b equ 2b9h ;8251控制端口地址buf3 byte 0 mes1 db 'you can play a key on the keybord!',0dh,0ah,24h mes2 dd mes1data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8253b ;設(shè)置8253計(jì)數(shù)器0工作方式 mov al,16h ;控制字為B out dx,al mov dx,io8253a mov al,5

9、2 ;給8253計(jì)數(shù)器0送初值 out dx,al mov dx,io8251b ;初始化8251mov dx,28bh ;8255控制口初始化 mov al,81h ;1000,0001 out dx,al ;xor al,al ;mov cx,03 ;向8251控制端口送3個(gè)0 ;delay: call out1 ;loop delay mov al,40h ;向8251控制端口送40H,使其復(fù)位 call out1 mov al,4eh ;設(shè)置為1個(gè)停止位,8個(gè)數(shù)據(jù)位,波特率因子為16 call out1 mov al,27h ;向8251送控制字允許其發(fā)送和接收 call out1 l

10、ds dx,mes2 ;顯示提示信息 mov ah,09 int 21hwaiti: mov dx,io8251b in al,dx test al,01 ;發(fā)送是否準(zhǔn)備好 jz next mov ah,0bh int 21h test al,0ffh ;檢測(cè)是否有鍵盤輸入 jz next ; mov dl,0ffh ;有鍵盤輸入,讀入字符 ;mov ah,06h ; int 21hmov dx,28ahin al,dx cmp al,27 ;若為ESC,結(jié)束 jz exit mov dx,io8251a ;inc al out dx,al ;發(fā)送 ; mov cx,40h;s51: loop

11、 s51 ;延時(shí)next: mov dx,io8251b in al,dx test al,02 ;檢查接收是否準(zhǔn)備好 jz waiti ;沒有,等待 mov dx,io8251a in al,dx ;準(zhǔn)備好,接收 mov dl,al mov ah,02 ;將接收到的字符顯示在屏幕上 int 21h jmp waitiexit: mov ah,4ch ;退出 int 21hout1 proc near ;向外發(fā)送一字節(jié)的子程序 out dx,al ;push cx ;mov cx,40h;gg: loop gg ;延時(shí) ; pop cx retout1 endpcode endsend sta

12、rt步進(jìn)電機(jī): 1.K0=0,逆時(shí)針轉(zhuǎn);K0=1,順時(shí)針轉(zhuǎn) 2.K1=0,慢轉(zhuǎn);K1=1,快轉(zhuǎn)data segment buf1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;LED顯示 buf2 byte 0 ;步進(jìn)電機(jī)數(shù)據(jù) buf3 byte 0 ;保存開關(guān)數(shù)據(jù) buf4 byte 0 ;保存順轉(zhuǎn)數(shù)據(jù) buf5 byte 9 ;保存反轉(zhuǎn)數(shù)據(jù) buf6 byte 0 ;開關(guān)機(jī)data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov buf2,b ;步進(jìn)電機(jī)

13、數(shù)據(jù) mov dx,28bh ;8255控制口初始化 mov al,81h ;1000,0001 out dx,al;-逆轉(zhuǎn)控制-R0: mov dx,28ah ;讀C口 in al,dx mov buf3,al ;保存C口數(shù)據(jù) test al,04 ; jnz kai ;轉(zhuǎn)反轉(zhuǎn) test al,01 ;測(cè)試K0=1? jnz L0 ;轉(zhuǎn)反轉(zhuǎn) mov al,buf4 ;走馬燈開始一步順轉(zhuǎn) cmp al,9 jnz S1 call change9_0S1: inc al ;數(shù)據(jù)加1 mov buf4,al mov bx,offset buf1 xlat mov dx,289h ;B口輸出 out

14、 dx,al ;數(shù)據(jù)完成加1 mov al,buf2 ;電機(jī)開始一步逆轉(zhuǎn) ror al,1 ;數(shù)據(jù)左移 mov buf2,al mov dx,288h ;A口輸出 out dx,al ;電機(jī)完成一步逆轉(zhuǎn) mov al,buf3 ;回復(fù)C口數(shù)據(jù) test al,02 jnz R1 ;轉(zhuǎn)快轉(zhuǎn) call delay_s ;否則慢轉(zhuǎn) jmp R0 R1: call delay_q ;快轉(zhuǎn) jmp R0;-順轉(zhuǎn)控制-L0: mov al,buf5 ;走馬燈開始一步順轉(zhuǎn) cmp al,0 jnz S2T2: test al,03 ;測(cè)試K2=1? jnz T2 call change0_9 S2: dec

15、 al ;數(shù)據(jù)減1 mov buf5,al ; mov bx,offset buf1 xlat mov dx,289h ;B口輸出 out dx,al ;走馬燈結(jié)束一步順轉(zhuǎn) mov al,buf2 ;電機(jī)開始一步順轉(zhuǎn) rol al,1 ;數(shù)據(jù)右移 mov buf2,al mov dx,288h ;A口輸出 out dx,al ;電機(jī)結(jié)束一步順轉(zhuǎn) mov al,buf3 ;回復(fù)C口數(shù)據(jù) test al,02 jnz L1 ;轉(zhuǎn)快轉(zhuǎn) call delay_s ;否則慢轉(zhuǎn) jmp R0T3: test al,03 ;測(cè)試K2=1? jnz T3 L1: call delay_q ;快轉(zhuǎn) jmp R0

16、kai: mov dx,28ah ;讀C口 in al,dx mov buf3,al ;保存C口數(shù)據(jù) test al,04 ; jz L0 ;轉(zhuǎn)反轉(zhuǎn) jmp kaiexit: mov ah,4ch int 21hdelay_s proc near ;長(zhǎng)延時(shí) mov bx,20h lp1: mov cx,0ffffh lp2: loop lp2 dec bx jnz lp1 retdelay_s endpdelay_q proc near ;短延時(shí) mov bx,1 lp11: mov cx,0ffffh lp22: loop lp22 dec bx jnz lp11 retdelay_q endpchange9_0 proc near mov buf4,-1 mov al,buf4 retchange9_0 endpchange0_9 proc near mov buf5,10 mov al,buf5 retchange0_9 endpcode ends end star

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論