实验五串行接口输入输出实验.docx
《实验五串行接口输入输出实验.docx》由会员分享,可在线阅读,更多相关《实验五串行接口输入输出实验.docx(8页珍藏版)》请在冰豆网上搜索。
实验五串行接口输入输出实验
只能写入,不能读出。
对状态寄存器和数据接收寄存器只能读出,不能写入。
Intel8251使用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的命令行提示符状态下输入:
A2000
2000:
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进行初始化。
注意:
每次按“RESET”键后,在对COM2进行收、发数据之前,都要运行该程序,而且每按一次“RESET”键后,只能对COM2进行一次初始化,即只能运行一次初始化程序。
2)程序2:
从与COM2相连的从PC上输入一个字符串,在与COM1口相连的主PC上显示出来。
在主PC的PCEC16的命令行提示符状态下输入:
A2040
2040:
IN91;判键盘上是否按了一个键(读8251状态寄存器,地址为0091H)
2041:
SHRR0;即串行口是否有了输入的字符(判断D1位是否为1?
)
2042:
SHRR0
2043:
JRNC2040;没有输入则循环测试(D1=0则循环查询)
2044:
IN90;从COM2口读入字符到R0
2045:
OUT90;将该字符从COM2口输出至从PC回显
2046:
OUT80;将该字符从COM1口输出
2047:
MVRDR1,00FF
2049:
MVRDR2,000D
204B:
ANDR0,R1
204C:
CMPR0,R2
204D:
JRNZ2040
204E:
RET
204F:
在命令行提示符状态下输入:
G2040,运行该程序。
从与COM2口相连的从PC机键盘上输入一个字符串,则在与COM1口相连的主PC机的屏幕上显示该字符串,按回车键结束。
3)程序3:
从与COM1口相连的主PC上输入字符串,在与COM2口相连的从PC上显示该字符串。
在主PC的PCEC16的命令行提示符状态下输入:
A2060
2060:
IN81;判键盘上是否按了一个键
2061:
SHRR0;即串行口是否有了输入的字符
2062:
SHRR0
2063:
JRNC2060;没有,则循环等待
2064:
IN80;接收键盘输入的字符
2065:
OUT80;字符送主PC回显
2066:
OUT90;将键盘输入的字符从COM2输出(8251数据发送缓冲器地址为90H)
2067:
MVRDR1,00FF
2069:
MVRDR2,000D
206B:
ANDR0,R1
206C:
CMPR0,R2
206D:
JRNZ2060
206E:
RET
206F:
在命令行提示符状态下输入:
G2060,运行该程序。
从主PC机键盘输入字符串,在在与COM2口相连的从PC机的屏幕上显示,按回车键结束。
6、准备两台TEC-XP+教学计算机,各自分别与PC进行联机(运行PCEC16)。
用另一条串口线将两台教学计算机的COM2连接起来,在两台PC机对应的PCEC16上分别输入以下程序:
从2000H单元开始输入下面的程序:
2000:
MVRDR0,004E;给R0赋值004E
2002:
OUT91;将R0的值输出到COM2口的8251中的寄存器中
2003:
MVRDR0,0037;给R0赋值0037
2005:
OUT91;将R0的值输出到COM2口的8251中的寄存器中
;以上为8251的初始化程序
2006:
IN81;检查本机键盘是否按了一个键,
2007:
SHRR0;即串行口是否有了输入的字符
2008:
SHRRO
2009:
JRNC200D;没有,则转去检查扩展接口COM2的键盘有没有输入
200A:
IN80;若本机键盘有输入则接收该字符
200B:
OUT80;将键盘输入的字符在本机PC上输出
200C:
OUT90;将从键盘输入的字符输出经扩展串口COM2送到另一台教学机输出
200D:
IN91;检查扩展串口相连的另一台教学机对应的PC键盘上是否按键,
200E:
SHRR0;即串行口是否有了输入的字符
200F:
SHRR0
2010:
JRNC2006;没有,则转去判本机键盘是否有输入
2011:
IN90;若有,则接收
2012:
OUT80;在本机输出
2013:
JR2006
2014:
RET
注意:
每次运行该程序前,须对COM2进行复位操作,即依次按RESET键和START键。
该程序完成两台教学计算机的COM2接口扩展操作并完成该串口初始化,同时运行这个程序,则两个键盘的输入同时显示在两个屏幕上,实现的是双机的双向通讯功能。
四、实验要求
1、实验前应查阅intel8251芯片的资料,了解芯片的基本功能和初始化及使用的方法;
2、实验后写出实验报告,记录操作过程及程序运行的结果,并写出实验心得体会。
3、如何判断intel8251可以发送数据?
如何判断intel8251已经接收了一个数据?