NJUPT 微机 串行通信 自发自收 8250编程

来源:互联网 发布:尼布楚条约 知乎 编辑:程序博客网 时间:2024/05/18 21:08

本来写了两三个小时,死活没反应。

原因是:笔记本的串口没有用实验室的器件插上,完成不了自发自收。

这次实验还得感谢本专业的一个大神的帮助。

参考程序如下:

;FILENAME:自发自收;when send , get and display.586data segment use16buf db 'Hello!',03Hlens equ $-bufmesg db 'The received characters:','$'data endscode segment use16assume cs:code,ds:databeg:mov ax,datamov ds,axcall i8250mov dx,offset mesgmov ah,9hint 21hlea bx,bufmov cx,lensscan:mov dx,3fdh  ;通信线状态寄存器in al,dx     ;此时要查看发送保持寄存器是否有值test al,01h  jnz process    ;如果可以读取test al,20h  ;若有a5为1则写入发送保存寄存器jz scan ;否则就不可以写入,继续查看mov dx,3f8h  ;写入发送保存寄存器mov al,[bx]  out dx,alinc bx       ;写完之后考虑直接用读取输出到屏幕上loop scanprocess:          ;接收子程序      mov dx,3f8hin al,dxand al,01111111Bcmp al,03hjnz disp         ;此时可以从接受缓存寄存器中读取 mov ah,4chint 21hdisp procpush axmov ah,02hmov dl,alint 21hpop axjmp scandisp endpi8250 procmov dx,3fbhmov al,80hout dx,almov dx,3F9Hmov al,0out dx,almov dx,3F8Hmov al,30Hout dx,almov dx,3FBHmov al,0AHout dx,almov dx,3F9Hmov al,0out dx,almov dx,3FCHmov al,0out dx,alreti8250 endpcode endsend beg


0 0
原创粉丝点击