1实验五串行接口输入/输出实验一、实验目的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个地址来访问内部的寄存器,其中用偶地址访问数据发送寄存2器和数据接收寄存器,并以读、写控制信号加以区分。用奇地址访问模式寄存器、控制寄存器和状态寄存器,由于状态寄存器为只读,而模式寄存器和控制寄存器为只写,因此需进一步区分模式寄存器和控制寄存器的写操作,方法是:在对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的命令行提示符状态下输入:A20002000:MVRDR0,004E;给R0赋值004E(8251模式寄存器参数)2002:OUT91;将R0的值输出到COM2口中8251的模式寄存器(地址为0091H)2003:MVRDR0,0037;给R0赋值0037(8251控制寄存器参数)2005:OUT91;将R0的值输出到COM2口中8251的控制寄存器(地址同为0091H)2006:RET在命令行提示符状态下输入G2000,运行初始化程序,对COM2进行初始化。3注意:每次按“RESET”键后,在对COM2进行收、发数据之前,都要运行该程序,而且每按一次“RESET”键后,只能对COM2进行一次初始化,即只能运行一次初始化程序。2)程序2:从与COM2相连的从PC上输入一个字符串,在与COM1口相连的主PC上显示出来。在主PC的PCEC16的命令行提示符状态下输入:A20402040:IN91;判键盘上是否按了一个键(读8251状态寄存器,地址为0091H)2041:SHRR0;即串行口是否有了输入的字符(判断D1位是否为1?)2042:SHRR02043:JRNC2040;没有输入则循环测试(D1=0则循环查询)2044:IN90;从COM2口读入字符到R02045:OUT90;将该字符从COM2口输出至从PC回显2046:OUT80;将该字符从COM1口输出2047:MVRDR1,00FF2049:MVRDR2,000D204B:ANDR0,R1204C:CMPR0,R2204D:JRNZ2040204E:RET204F:在命令行提示符状态下输入:G2040,运行该程序。4从与COM2口相连的从PC机键盘上输入一个字符串,则在与COM1口相连的主PC机的屏幕上显示该字符串,按回车键结束。3)程序3:从与COM1口相连的主PC上输入字符串,在与COM2口相连的从PC上显示该字符串。在主PC的PCEC16的命令行提示符状态下输入:A20602060:IN81;判键盘上是否按了一个键2061:SHRR0;即串行口是否有了输入的字符2062:SHRR02063:JRNC2060;没有,则循环等待2064:IN80;接收键盘输入的字符2065:OUT80;字符送主PC回显2066:OUT90;将键盘输入的字符从COM2输出(8251数据发送缓冲器地址为90H)2067:MVRDR1,00FF2069:MVRDR2,000D206B:ANDR0,R1206C:CMPR0,R2206D:JRNZ2060206E:RET206F:在命令行提示符状态下输入:G2060,运行该程序。从主PC机键盘输入字符串,在在与COM2口相连的从PC机的屏幕上显示,按回车键结束。6、准备两台TEC-XP+教学计算机,各自分别与PC进行联机(运行PCEC16)。用另一条串口线将两台教学计算机的COM2连接起来,在两台PC机对应的PCEC16上分别输入以下程序:从2000H单元开始输入下面的程序:2000:MVRDR0,004E;给R0赋值004E2002:OUT91;将R0的值输出到COM2口的8251中的寄存器中2003:MVRDR0,0037;给R0赋值00372005:OUT91;将R0的值输出到COM2口的8251中的寄存器中;以上为8251的初始化程序52006:IN81;检查本机键盘是否按了一个键,2007:SHRR0;即串行口是否有了输入的字符2008:SHRRO2009:JRNC200D;没有,则转去检查扩展接口COM2的键盘有没有输入200A:IN80;若本机键盘有输入则接收该字符200B:OUT80;将键盘输入的字符在本机PC上输出200C:OUT90;将从键盘输入的字符输出经扩展串口COM2送到另一台教学机输出200D:IN91;检查扩展串口相连的另一台教学机对应的PC键盘上是否按键,200E:SHRR0;即串行口是否有了输入的字符200F:SHRR02010:JRNC2006;没有,则转去判本机键盘是否有输入2011:IN90;若有,则接收2012:OUT80;在本机输出2013:JR20062014:RET注意:每次运行该程序前,须对COM2进行复位操作,即依次按RESET键和START键。该程序完成两台教学计算机的COM2接口扩展操作并完成该串口初始化,同时运行这个程序,则两个键盘的输入同时显示在两个屏幕上,实现的是双机的双向通讯功能。四、实验要求1、实验前应查阅intel8251芯片的资料,了解芯片的基本功能和初始化及使用的方法;2、实验后写出实验报告,记录操作过程及程序运行的结果,并写出实验心得体会。3、如何判断intel8251可以发送数据?如何判断intel8251已经接收了一个数据?