微机原理与接口技术双机并行传送接口
- 格式:doc
- 大小:376.33 KB
- 文档页数:9
(完整)微机原理与接口技术-双机通讯编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)微机原理与接口技术-双机通讯)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)微机原理与接口技术-双机通讯的全部内容。
石河子大学信息科学与技术学院〈微机原理与接口技术>课程设计报告2013-2014学年第二学期题目名称:通过串口实现双机通信专业: 计算机科学与技术班级:计算机科学与技术2012( 4 )班学号: 2012620192 、2012620193学生姓名: 魏绍钰、黄河指导教师:李栓明【实验目的】 (3)【实验要求】 (4)【实验设备】 (4)【实验内容】 (4)【设计思想】 (4)【程序模块介绍】 (7)发送方程序模块: (7)接收方程序模块: (7)代码 (8)一号机实验程序 (8)二号机实验程序 (11)【实验步骤】 (13)【心得体会】 (14)双机通讯实验【实验目的】1.进行全面综合,系统的训练,巩固课堂教学内容。
2.熟练掌握汇编语言常用指令及主法规则。
3.掌握汇编语言程序结构,提高调试能力.4.软件与硬件配合使用,熟悉常用接口芯片。
【实验要求】用串口8250,编程实现两台计算机近距离通信,一台为发送方,另一台为接收方【实验设备】1、TDN86/88微机教学系统两台.2、一组排线。
【实验内容】用排线将两台仪器相连,具体连线如下图所示.其中一号机用作接收机,二号机用作发送机。
实验目的是将二号机中的3000~3009H十个单元中的代码传送到一号机的3000~3009H单元中,1、2号机各自的实验程序如下:【设计思想】用串口电缆将两台机算机的COM2连接起来,把计算机设置成空MODEM方式,并为此编制了两个汇编语言程序:其一为数据发送程序;其二为数据接收程序。
HUNAN CITY UNIVERSITY 微机原理与接口课程设计报告设计课题名称:双机并行通信班级:1006402学号:姓名:指导老师:李正华阳俊2012 年6 月 14日一、设计时间2012年6月10日—6月15日二、设计地点湖南城市学院第一实验楼计算机系机房321三、设计目的1.通过该设计,掌握并行通信的基本原理和应用,掌握8255并行接口的使用,并掌握相应的程序设计和电路设计的技能。
2.掌握MFID-5接口硬件发平台的使用方法。
利用现有的实验平台和PC机,实现双机并行通信。
3.掌握8255的各种工作方式及其应用编程,掌握8255这款可编程接口芯片。
4.该设计是对并行通信接口芯片章节理论学习的总结和补充,为后续的硬件课程的学习打下基础。
四、设计小组成员五、指导老师李正华、阳俊六、设计课题双机并行通信2(双机通过并行接口传送实时信息)七、基本思路及关键问题的解决方法基本思路:1.从甲机键盘上输入的字符,通过并口传送到乙机,并在乙机的屏幕上显示出来。
双方按ESC键,停止传送,并退出。
2.甲机一侧的8255采用1方式,乙机一侧的8255采用0方式,甲机的8255与CPU之间采用查询方式交换数据,乙机8255与CPU之间采用中断方式交换数据。
3.采用两台MFID平台板上的并行接口电路进行硬件连接,两台MFID-5之间通过并行接口插座J5和26芯扁平电缆进行连接。
4.分别编写甲机的发送程序与乙机的接收程序,并进行调试,直至程序正常运行。
关键问题的解决方法1. 怎样实现两机之间的交互连接,市县两机并行通信?他通过两台MFID-5实验平台中的8255可编程接口芯片实现两机之间的并行通信。
2. 两台MFID-5实验平台怎样进行连接?应用26芯扁平电缆和实验平台上的并行接口J5进行连接。
3. 在编程中怎么实现中断?八、算法及流程图实物图双机并行通信模块电路原理框图注意: PC3和PC6 交叉连接。
流程图26 芯 并 行 口 插 座50 芯 扩展 总线26 芯 并 行 口 插 座(a) 发送程序流程图(b)接收程序流程图九、调试过程中出现的问题及相应解决办法1.问题:在编完成运行时发现不能运行?解决办法:在写程序的时候,细心谨慎,不能漏掉或者省去一个‘}、;‘等符号,字母的大小写在定义前后应保持一致。
HUNAN CITY UNIVERSITY
微机原理与接口技术
实验报告
实验题目:双机并行传递接口实验
专业:计算机科学与技术(嵌入式方向)
学生姓名:李国红
班级学号: 1006402-20
分组成员:蔡祥 1106402-09 吕赟 1106402-38 指导教师:刘德峰
2013 年5月13日
一、实验时间
2013年5月13日9:40~11:40
二、实验地点
一实验楼321机房
三、设计课题
双机并行传递接口实验
四、实验目的
学习两台微机之间并行接口电路及其控制程序的设计方法。
五、实验小组成员
李国红1106402-20 蔡祥1106402-09 吕赟1106402-38
六、实验原理
1.双机并行通信模块电路原理,如图2.1.6所示。
该模块表明双机均采用可编程并行接口芯片8255构成接口电路,只是8255的工作方式不同。
此时,双方的8255把对方视为I/O设备。
2.双机并行通信接口电路设计原理与方法的详细阐述,请参考计算机接口技术相关参考书。
图双机并行通信模块电路原理框图
七、算法及流程图
发送流程图
(b)接收程序流程图
实验现象:启动程序甲机(打开发送程序的一方)在屏幕上输入字符,在乙机(打开接收程序的一方)接收到甲机发送的字符。
八、实验步骤
硬件连线:实验资源配置好之后,使用长型26芯扁平电缆(专用),直接将甲乙两机MFID 平台板上的并行接口插座J5连接起来,如图2.1.7所示,即可进行双机并行通信实验
步骤二:将平台的电源开关拔到“内”的位置上。
在配套集成环境下进行硬件检测,达到初始化芯片的目的.
步骤三:(演示实验步骤)打开集成环境在“演示实验”菜单下点开“基本接口实验”。
在“基本接口实验”中的“并行接口实验”中选择““全双工并行通信(传送字符)””实
验进行演示。
步骤四:(学生实验步骤)打开集成环境在“文件”菜单下学生可以选择新建自己的C++/ASM 文件或者集成环境自带的C++/ASM参考程序进行调试、运行。
步骤五:观看实验现象得出结论。
图2.1.7 双机并行通信模块平台与平台的连接
九、调试过程中出现的问题及相应解决办法
1.问题:在编完成运行时发现不能运行?
解决办法:在写程序的时候,细心谨慎,不能漏掉或者省去一个‘}、;‘等符号,字母的大小写在定义前后应保持一致。
2.问题:程序运行时无法生成目标文件?
解决办法:程序中出现非法字符。
3.问题:在硬件连接的过程中,26芯扁平电缆插入后实验平台不能正常工作?解决办法:不用26芯扁平电缆,改用连接线直接把两个8255的A口连接起来,PC3与PC6交叉连接,PC7与PC7相连接来代替26扁平电缆。
4.问题:接收端接收的数据出现乱码
解决办法:检查连线是否出错,并检查两端所设置的波特率是否相同。
检查后发现任然有乱码现象,猜想可能是程序中终端设置有误,或实验平台电路老化。
由于时间问题,最终没有验证。
十、心得体会
从最初拿到题目,分析设计要求以及实现的初步思路,然后去查阅资料进行更加具体的设计这次实验无疑要求我们团队协作,互相配合并且整体上比较全面的统筹设计。
本次课程设计我们组主要研究的是双机通信实验,通过与组成员之间的合作,在开始的前两天中,主要是通过查找资料,或是在图书馆里查看书籍来学习有关双机通信实验的基本要求和实验所需要的器件,以及各实验器件所实现怎样的功能。
基本方向确定后,我们小组三人就进行了明确分工,我的主要任务是负责实物的连接,代码的二次检查,以及实验报告的排版。
当发现26扁平电缆不能连接时,我们就进行了改进,采用线直接相连。
由于最后没有出实验结果,不知道连线是否正确,这是这次实验设计比较遗憾的地方。
在这次设计中,我收获不少东西,也遇到了不少的问题。
首先,在完成微机原理与接口技术课程学习任务后,对内容的掌握不够,缺乏灵活运用的能力,对于知识的扩展也存在一定的问题,因此,初面对设计课题,无法系统地进行设计思路的拟定。
通过本次课程设计,不仅使理论知识得到了实践,有效巩固了知识。
同时也初步了解了一个完整的系统开发的过程,对于创造思维的培养和开发能力的锻炼,本次设计,为此提供了一个很好的平台。
虽然最后的结果比较遗憾,但本次设计中我依然有很大的收获,这对我以后的学习和工作有很大的影响,是我人生中浓重的一笔。
十一、源代码
(双机并行传递接口实验-发送端程序)
#include <dos.h> //getvect(); setvect();
#include <conio.h> //kbhit();
#include <stdlib.h> //exit(0);
#include <stdio.h> //printf();
void main()
{
int getvalue=0;
int invalue=0;
int i;
printf(" please input char to send. strike ESC to exit\n");
outportb(0x303,0xa0); //初始化8255
delay(200);
outportb(0x303,0x0d); //置INTEA=1
outportb(0x300,0x01); //发送联络字符
for(;;)
{
if(kbhit())
{
getvalue=getche();
if(getvalue==0x1b) //查是否ESC有按下?
{
return;
}
else
{
invalue=inportb(0x302);//查pc7状态,
while(((invalue&0x08)==0))//为高跳输出,为低空循环
{};
outportb(0x300,getvalue);//A口输出
//outportb(0x303,0x0e);
}
}
}
}
(双机并行通信接口实验-接收端程序)
#include <dos.h> //getvect(); setvect();
#include <conio.h> //kbhit();
#include <stdlib.h> //exit(0);
#include <stdio.h> //printf();
void main()
{
//int getvalue=0;
clrscr();
int invalue=0;
int receivevalue=0;
printf("now receiving, please wait ! strike ESC to exit\n");
outportb(0x303,0x98); //初始化8255
outportb(0x303,0x07); //置ACK=1
for(;;)
{
if(kbhit()) //有键按下
{
if(getch()==0x1b)
{
return;
}
}
else //没有键按下
{
invalue=inportb(0x302);
if((invalue & 0x80) == 0)//接受准备好
{
//接受字符
receivevalue=inportb(0x300);//A口接收数据
printf("\n %c",receivevalue);
outportb(0x303,0x06);//置ACK=0
delay(100);
outportb(0x303,0x07);//置ACk=1
}
}
}
}。