实验三 串行通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告实验名称:串行通信
一、实验目的
1.了解串行通信的基本原理。
2.掌握串行接口芯片8251的工作原理和编程方法。
3.掌握串行接口芯片8250的工作原理和编程方法。
4.掌握对串行接口芯片的初始化编程;学会串行半双工和全双工的编程技巧。
二、实验内容及步骤
1. 利用PC机系统的串行通信接口实现与实验系统的双机通信,PC机的串行通信接口的
端口地址为3F8H,并画出三线连接,七线连接通信接口的连线图,接口为标准RS—232(25芯)插座。
2. 按图1连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD
连在九针接口处。
串行通讯电路
3.连线:
CLK0/8254 接1M时钟
CLK/8251 接1M时钟(系统已经连接,不用学生连接)
GATE0/8254 接+5V
OUT0 /8254 接TX/RXCLK/8251
CS/8254 接Y0/IO地址
CS/8251 接Y7/IO地址
RXD/8251 接TXD/九针接口
TXD/8251 接RXD/九针接口
4. 8254计数器的计数初值=时钟频率/(波特率X波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特因子若选16,则计数器初值为52。
5. 设串行通信的波特率为1200、偶校验、数据位为7位、1位停止位,利用查询方式实现单工通信。要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。分别编写收方和发方的通信程序。
6. 上述参数不变,用中断方式实现半双工通信,编写程序。
7. PC机寄存器的端口地址如下表所示:
线路控制寄存器第七位DLAB=0
线路控制寄存器第七位DLAB=1
三、编程提示
1、可以首先采用查询方式,实现单工PC机系统与实验系统的双机通信,之后再实现双工
方式通信;
2、再尝试实现利用中断方式,实现单工PC机系统与实验系统的双机通信,之后再实现双
工方式通信;
3、要求能实现字符和文件的传输;
4、程序流程图如图所示:
四、实验程序
1. 发送端程序:
;TRANSLATE FILES
stack segment para stack'stack'
db 256 dup(0)
stack ends
data s egment
name0 db 64h
db 64h dup(?)
buff d w 64h dup(?)
data ends
code segment para public 'code'
start p roc far
assume cs: code,ds:data,es:data
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov dx,3fbh ;3fb ctrl register
mov al,80h ;
out dx,al ;给线路控制寄存器DLAB位置1
mov dx,3f8h
mov al,60h ;写除数因子低位
out dx,al
inc dx ;写除数因子高位
mov al,00
out dx,al ;写除数因子寄存器,1200baud
mov dx,3fbh
mov al,00011011b ;0寻址识别位,0禁止间断,**,11偶校验,1位停止位,8位数据
out dx,al
inc dx ;设置调制解调器控制寄存器MCR
mov al,00001111b ;正常工作状态,引脚低电平
out dx,al
mov dx,3fdh ;线路状态寄存器
in al,dx
test al,20h ;判断是否显示好,发出数据jz fa
tr:
mov ah,01h
int 21h
mov dx,3f8h
out dx,al
push bx
int 10h
pop bx
push cx
mov cx,0fh
gg:
nop
nop
nop
loop gg ;循环延迟
pop cx
jmp tr
start e ndp
code ends
end start
2. 接收端程序:
;TRANSLATE FILES
stack segment para stack'stack'
db 256 dup(0)
stack ends
data s egment
name0 db 64h
db 64h dup(?)
buff d w 64h dup(?)
data e nds
code segment para public 'code'
start p roc far
assume cs: code,ds:data,es:data
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov dx,3fbh ;3fb ctrl register
mov al,80h
out dx,al ;给线路控制寄存器DLAB位置1
mov dx,3f8h
mov al,60h ;写除数因子低位
out dx,al
inc dx ;写除数因子高位
mov al,00
out dx,al ;写除数因子寄存器,1200baud
mov dx,3fbh
mov al,00011011b ;0寻址识别位,0禁止间断,**,11偶校验,1位停止位,8位数据
out dx,al
inc dx ;设置调制解调器控制寄存器MCR
mov al,00001111b ;正常工作状态,引脚低电平
out dx,al
shoufa:
mov dx,3fdh ;读高位寄存器,判断是否接收好
in al,dx
test al,01h
jz shoufa
recv:
mov dx,3f8h ;读数据
in al,dx
push bx
m ov bx,0
mov ah,14 ;显示
int 10h
pop bx