内容发布更新时间 : 2024/11/20 7:06:31星期一 下面是文章的全部内容请认真阅读。
实验五 串行接口输入/输出实验
一、实验目的
1、学习TEC-XP+教学计算机I/O接口扩展的方法;
2、学习串行通信的基本知识,掌握串行通信接口芯片的设置和使用方法。 二、实验说明
1、TEC-XP+教学计算机的I/O结构
TEC-XP+教学计算机配置有COM1和COM2两个串行接口,其中COM1是TEC-XP+默认的标准接口,与PC终端相连接,监控程序负责对COM1进行初始化和使用管理。COM2预留给用户扩展使用,监控程序不能识别COM2,也不对COM2进行任何操作,用户需要对COM2进行初始化和使用管理。COM1和COM2均由可编程串行通信接口芯片intel8251芯片构成。
2、Intel8251的组成及控制和使用方法
可编程串行通信接口芯片Intel8251支持同步和异步两种通信方式。在异步方式下,波特率为0~19.2Kbps,数据位可为5、6、7或8位,可设1个奇偶校验位,1个起始位,1个、1.5个或2个停止位。Intel8251内部有7个功能模块负责实现与CPU的数据交换以及与I/O设备的数据通信功能,内部有6个寄存器,其中与异步通信方式的有关的寄存器有5个,即模式寄存器、控制寄存器、状态寄存器、数据发送寄存器和数据接收寄存器。
模式寄存器的功能是设定intel8251的工作模式,控制寄存器的功能是控制intel8251的数据发送和接收等工作过程,状态寄存器的功能是反映intel8251数据发送和接收等工作的状态,各寄存器的格式如图5-1、图5-2和图5-3所示。当CPU把需发送的数据写入数据发送寄存器后,intel8251将自动把数据组成帧并逐位发送出去。Intel8251能自动完成数据接收操作,并把接收到的数据存放在数据接收寄存器中,CPU从中读取即可。
图5-1模式寄存器格式 图5-2 控制寄存器格式
图5-3 状态寄存器格式
CPU对模式寄存器、控制寄存器和数据发送寄存器只能写入,不能读出。对状态寄存器和数据接收寄存器只能读出,不能写入。Intel8251使用2个地址来访问内部的寄存器,其中用偶地址访问数据发送寄存
1
器和数据接收寄存器,并以读、写控制信号加以区分。用奇地址访问模式寄存器、控制寄存器和状态寄存器,由于状态寄存器为只读,而模式寄存器和控制寄存器为只写,因此需进一步区分模式寄存器和控制寄存器的写操作,方法是:在对intel8251芯片进行复位后,以奇地址写入的数据将被写入到模式寄存器中,一旦完成了模式寄存器的写操作后就不能再次写入,以后再以奇地址写入的数据将被写到控制寄存器中。
Intel8251在使用前需进行初始化,即在intel8251芯片复位后,首先将工作模式信息写入模式寄存器,然后将运行控制信息写入控制寄存器,顺序不能颠倒。注意:① 每当intel8251芯片复位后(即按了“RESET”键),都需要对8251进行初始化,然后才能进行正常的数据传输操作;② 每次复位后,只能对8251进行1次初始化,多次初始化将导致芯片工作不正常。
3、在使用COM2时,需要将两片intel8251芯片之间的跳线短接(缺省状态),以便为COM2正常工作提供所需的控制信号和数据;此外,还需要为其分配端口地址。TEC-XP+已将COM2的控制信号C/D#与地址总线的最低位A0相连,但片选信号/CS未连,只引出1个插孔,实验时,应从标有“I/O /CS”的7个I/O译码电路输出端的插孔中,选择一个与COM2的片选信号/CS插孔相连。
三、实验内容与步骤
1、为扩展I/O接口选择一个地址,即将TEC-XP+的COM2的片选信号/CS与标有“I/O /CS”的插孔中地址为90~9FH的插孔相连。
2、将TEC-XP+的COM1连接到微机PC1的一个串口上,在PC1上运行PCEC16,进入联机状态后保持PCEC16的运行状态。
3、将PC1侧的串口插头拔出,将其连接到另一台微机PC2的串口上,在PC2上运行PCEC16,进入联机状态后保持PCEC16的运行状态。
4、用另一条串口线将PC1的串口连接到TEC-XP+的COM2。 5、与TEC-XP+的COM1相连的微机作为主PC,在主PC上用输入和运行程序,对TEC-XP+的COM2进行操作。与TEC-XP+的COM2连接的微机作为从PC,从PC只能进行数据的输入和输出。
1)程序1:初始化TEC-XP+的COM2
在主PC的PCEC16的命令行提示符状态下输入: A 2000
2000:MVRD R0,004E ;给R0赋值004E(8251模式寄存器参数)
2002:OUT 91 ;将R0的值输出到COM2口中8251的模式寄存器(地址为0091H) 2003:MVRD R0,0037 ;给R0赋值0037(8251控制寄存器参数)
2005:OUT 91 ;将R0的值输出到COM2口中8251的控制寄存器(地址同为0091H) 2006:RET
在命令行提示符状态下输入G 2000,运行初始化程序,对COM2进行初始化。
2
注意:每次按“RESET”键后,在对COM2进行收、发数据之前,都要运行该程序,而且每按一次“RESET”键后,只能对COM2进行一次初始化,即只能运行一次初始化程序。
2)程序2:从与COM2相连的从PC上输入一个字符串,在与COM1口相连的主PC上显示出来。 在主PC的PCEC16的命令行提示符状态下输入: A 2040
2040:IN 91 ;判键盘上是否按了一个键(读8251状态寄存器,地址为0091H) 2041:SHR R0 ;即串行口是否有了输入的字符(判断D1位是否为1?) 2042:SHR R0
2043:JRNC 2040 ;没有输入则循环测试(D1=0则循环查询) 2044:IN 90 ;从COM2口读入字符到R0
2045:OUT 90 ;将该字符从COM2口输出至从PC回显 2046:OUT 80 ;将该字符从COM1口输出 2047:MVRD R1,00FF 2049:MVRD R2,000D 204B:AND R0,R1 204C:CMP R0,R2 204D:JRNZ 2040 204E:RET 204F:
在命令行提示符状态下输入:G 2040,运行该程序。
3