实验三串行通信
一、实验目的
1、了解串行通信的基本原理。
2、掌握串行接口芯片8251 的工作原理和编程方法。 2、掌握串行接口芯片8250 的工作原理和编程方法。
3、掌握对串行接口芯片的初始化编程;学会串行通信半双工和全双工的编程技巧。
二、实验内容及步骤
1、利用PC 机系统的串行通信接口实现与实验系统的双机通信,PC 机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS――232(25 芯)插座。
图1 七线连线通信接口的连线图
2、按图1连接好电路,其中8254计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在九针接口处。
3、接线。
CLK0 /8254 接 1M时钟CLK /8251 接 1M时钟(系统已连接,不用连接) GATE0 /8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO 地址CS /8251 接 Y7 /IO 地址
RXD /8251 接 TXD /九针接口TXD /8251 接 RXD /九针接口
4、8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
5、设串行通信的波特率为 1200、偶校验、数据位为7 位、一位停止位,利用查询方式实现单工通信。要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。分别编写收方和发方的通信程序。
6、上述参数不变,用中断方式实现半双工通信,编写程序。 7、PC 机寄存器的端口地址如下表所示。
PC 机寄存器的端口地址 PC 机寄存器的端口地址 I/O 端口 IN/OUT 3F8* OUT 3F8* IN 3F8** OUT 3F9** OUT 3F9* OUT 3FB OUT 3FA IN 3FC OUT 3FD IN 3FE IN * 线路控制寄存器第七位 DLAB=0 ** 线路控制寄存器第七位 DLAB=1
波特率和除数因子对照表 因子值 波特率 波特率 单位 HZ 单位 HZ MSB LSB 50 09 00 1800 75 06 00 2000 110 04 17 2400 134.5 03 59 3600 150 03 00 4800 600 00 C0 9600 1200 00 60 寄存器名称 发送保持寄存器 接收数据寄存器 波特率因子(LSB) 波特率因子 (MSB) 中断允许寄存器 线路控制寄存器 中断标志寄存器 MODEM 控制寄存器 线路状态寄存器 MODEM 状态寄存器 因子值 MSB 00 00 00 00 00 00 LSB 40 3A 30 20 18 0C 三、程序实现
对于整个程序的实现,可以分为几个步骤。第一是对于8250或者是8251的初
始化。即对于8250或者8251的方式控制和命令控制。这一步是关于对于串口通信中的数据位,速率,停止位和奇偶校验等的设定。初始化完了后,即进行发送或者接受程序的实现。使用查询方式的话就需要对于芯片的状态的查询。根据相应的状态进行不同的操作。如果接受数据有误的话,那么进行出错的处理。对于发送和接收的话还需要进行一个显示的操作,这就需要进行相应的操作即可。具体实现代码如下。
电脑与电脑间的双工通信,即8250与8250的双工通信: STACK SEGMENT STACK DB 256 DUP(0)
STACK ENDS CODE SEGMENT
ASSUME CS:CODE,SS:STACK START:
MOV DX,3FBH;传输线路控制寄存器LCR,最高位为DLAB=1 MOV AX,80H OUT DX,AL
MOV DX,3F8H;DLAB=1,除数锁存器(低字节)DLL MOV AX,60H OUT DX,AL
MOV DX,3F9H;DLAB=1,除数锁存器(高字节)DLH MOV AX,0
OUT DX,AL;高字节DLH:00H,低字节:60H,设置波特率为1200 MOV DX,3FBH;传输线路控制寄存器LCR,最高位为DLAB=0
MOV AX,0AH;DLAB=0,0=禁止中断,0=无附加奇偶标志位,0=奇校验,1=有奇偶校验,0=1位停止位,10=7位 OUT DX,AL MOV DX,3FCH;
MOV AX,03H;正常工作状态,rts引脚为低电平,DTR引脚低电平 OUT DX,AL
MOV DX,3F9H;DLAB =0,禁止中断 MOV AX,0 OUT DX,AL
FOREVER:MOV DX,3FDH;从线路状态寄存器读状态 IN AL,DX TEST AL,1EH;检测是否为00011110,即BI=1,检测中断,FE=1,帧错,PE=1,奇偶错,OE=1,溢出错
JNZ ERROR;传输线状态寄存器全部都是0 TEST AL,01H;检测接受数据是否准备好了 JNZ RECEIVE;等于0则表示数据没有准备好 TEST AL,20H;数据没有准备好 JNZ send;没有,则跳转等待 JMP FOREVER
send: MOV AH,1;检测键盘按下 INT 16H
JZ FOREVER;有键盘按下 MOV AH,0;读键盘 INT 16H
MOV DX,3F8H;将键盘的数据输出发送到缓冲器 OUT DX,AL
CMP AL,03H ;检测是否是Ctrl+C,是的话就停止程序,不是就进行显示 JZ DONE
MOV DL,AL ;显示键盘输入的字符 MOV AH,02H
INT 21H
CMP AL,0DH ;检测是否是回车,使得话就回车回车换行 JNZ FOREVER MOV DL,0AH MOV AH,02H INT 21H JMP FOREVER
RECEIVE:MOV DX,3F8H;接收数据 IN AL,DX
AND AL,7FH;最高位为停止位
CMP AL,03H; ;检测接收的是否是Ctrl+C,是的话就终止程序,不是就显示 JZ DONE
MOV DL,AL ;显示操作 MOV AH,02H INT 21H
CMP AL,0DH ;显示回车换行 JNZ FOREVER MOV DL,0AH MOV AH,02H INT 21H JMP FOREVER
ERROR:MOV DX,3F8H ;检测到出错时,进行处理 IN AL,DX MOV DL,0AH MOV AH,02H INT 21H JMP FOREVER DONE:MOV AH,4CH INT 21H CODE ENDS END START
运行结果:
程序正常运行,完成了在两台电脑之间的传输,传输内容显示如下:
四、实验心得与体会
本次实验是第三次实验,了解了串行通信的基本原理,学习了串行接口芯片8251的工作原理和编程方法;学习了串行接口芯片8250的工作原理和编程方法;利用 Masm For Windows 集成实验环境软件进行程序的编写、运行。利用连接线将两台电脑的芯片连接起来。两台电脑上分别运行实验程序,运行成功后,在其中一台电脑上输入小组成员姓名,在另外一台电脑上有相同的输入显示,完成了串行通信。本次实验中,由于软件的原因,更换了四组电脑才完成实验,花费时间较长,感谢老师的耐心等待。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库北理工微机原理实验3在线全文阅读。
相关推荐: