欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    双机并行通讯程序设计.doc

    • 资源ID:1163850       资源大小:171.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    双机并行通讯程序设计.doc

    1、双机并行通讯程序设计摘 要本课程设计要求完成的任务是实现两台PC机之间1K数据的并行传输。为了使程序编写简单并便于进行调试,本设计采用DOS功能调用,由键盘输入字符串来模拟要传输的1K数据。因为传输包括发送和接收两方面内容,所以程序采用模块化思想,将整个程序分为发送和接收两个功能模块分别来进行编写,然后通过调用来实现整体的功能。程序设计的关键部分是8255A的编程控制,本设计按要求采用方式2,在传输过程中通过查询相关端口来判断是否发送或接收完毕,从而实现1K数据的接收与发送。关键词:并行通讯 发送 接收 8255A DOS功能调用1 问题的描述与分析题目要求由甲乙两台微机之间并行传送1K字节数

    2、据。先甲机发送,乙机接收,后乙机发送,甲机接收。甲乙双方的8255A均采用方式2工作。8255A控制口地址为303。本题属于双机并行通讯问题,应分为发送和接收两方面分别来进行研究。由于程序需要对地址进行直接操作,所以选择汇编语言来编写较为简单方便。在写程序的过程中,由于要用8255A芯片作为并行传输芯片,所以要熟练掌握8255A的控制方法;此外,程序多处还要用到DOS功能调用,所以还要对DOS的各种功能进行系统的学习。两台PC各与一个8255A芯片相连,程序分为两部分,分别运行与两台PC机上以实现并行传输。连接图如下:图1-1 双机通讯的连接图程序分为两个部分,分别在甲机和乙机上面运行。甲机运

    3、行的程序是先发送后接收,乙机上运行的程序时先接收后发送,实现先从甲机到乙机传输1KB的数据,后从乙机到甲机传输1KB的数据的功能。我们在两台微机的内存中各开辟一个1KB的字符区BUF1,象征性的输入少许字符,来模拟要传输的1KB的数据。再各开辟一个1KB的字符区BUF2用来存储接收到的1KB数据。2 8255A芯片的介绍2.1 8255A的引脚功能8255A的芯片引脚图见图2-1:图2-1 8255A的芯片引脚图RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲

    4、器,一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。 CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255A与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255A通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信

    5、号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255A。 D0D7:三态双向数据总线,8255A与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。A1、A0:端口地址总线,8255A中有端口A、B、C和一个内部控制字寄存器,共4个端口,由A0、A1输入地址信号来寻址。2.2 8255A的编程8255A是将所有端口分为两组来控制的,因此方式控制字也分为了两部分:A组控制D6D3和B组控制D2D0。其具体格式见表2-1。表2-1 8255A的方式控制字D7D6D5D4D3D2D1D01A口方式A口方向PC上口方向

    6、B口方式B口方向PC下口方向方式控制字00:方式001:方式11X:方式20:输出1:输入0:输出1:输入0:方式01:方式10:输出1:输入0:输出1:输入此外,8255A还有一个特殊的功能,即对C口直接进行置“1”或清“0”操作,这种方法使C口的控制变得更加简单、方便。其具体格式见表2-2。表2-2 8255A的C口控制字D7D6D5D4D3D2D1D00无效引脚选择置位、复位选择C口控制字000:PC0001:PC1010:PC2111:PC70:复位1:置位2.3 8255A的工作方式8255A有三种工作方式:l 方式0基本输入/输出方式l 方式1选通输入/输出方式l 方式2双向传输方

    7、式其中只有A口可以工作在方式2,由于本题要求工作在方式2,所以这里只重点介绍方式2的工作原理。方式2的双向传输方式是指在同一端口内分时进行输入/输出的操作,它需要5个控制信号进行“联络”,这5个控制信号由C口提供。由于方式2的A口既能发送,也能接收数据,所以A口的引脚在“空闲”状态下是三态的。A口在某一时刻下,输入或输出是由相应“联络”线确定的。工作时可用软件查询方式,也可用中断方式。A口工作在方式2时,C口的“联络”线既要提供A口的输入“联络”线和,又要提供A口的输出“联络”线和,同时还要有一个处理A口中断的中断申请线,具体端口分配见表2-3。表2-3 8255A的方式控制字D7D6D5D4

    8、D3D2D1D0A组B组或I/O口l A口的中断请求信号。当其有效时,8255A的A口向CUP申请中断。l A口的选通信号(外设发出,低电平有效)。当其有效时,外设把数据输入A口的输入缓冲器。l A口的输入缓冲器“满”信号。当其有效时,表示A口的输入缓冲器已经暂存一个有效数据。l 外设应答信号。由外设发出,低电平时有效。当其有效时,表示外设已经接收数据。l A口的输出缓冲器“满”信号。当其有效时表示A口的输出缓冲器已经暂存一个有效数据。3 DOS常用功能的介绍DOS系统启动时,DOS层功能模块从系统盘被装入内存。调用这些功能模块称为DOS功能调用。DOS功能调用可以完成文件管理、存储管理、作业

    9、管理和设备管理等。表3-1列出了一些常用的DOS功能调用。表3-1 常用DOS功能调用AH功能调用参数返回参数01键盘输入并回显AL=输入字符02显示输出DL=输出字符06直接控制台I/ODL=FF(输入)DL=字符(输出)AL=输入字符07键盘输入(无回显)AL=输入字符08键盘输入(无回显)检测Ctrl-BreakAL=输入字符09显示字符串DS:DX=串地址$结束字符串0A键盘输入到缓冲区DS:DX=缓冲区首地址(DS:DX)=缓冲区最大字符数(DS:DX+1)=实际输入的字符数0C清除输入缓冲区并请求指定的输入功能AL=输入功能号(1,6,7,8,A)4C带返回码结束AL=返回码4 系

    10、统方框图编写的程序有两种类型:甲机是先发送后接收类型,乙机是先接收后发送类型。这两种类型程序非常相似,只是在调用发送、接收子函数时,顺序有所不同。甲机程序的系统方框图如图4-1所示。图4-1 甲机程序的系统方框图5 各部分程序设计5.1 发送子程序OUT1 PROC MOV DX,303H ;对控制端口进行初始化 MOV AL,0C9H OUT DX,AL MOV AL,0FH ;将OBFA置1 OUT DX,AL MOV CX,1024 ;设置循环次数L1: MOV DX,300H ;开始传输字符 MOV AL,SI OUT DX,AL INC SIL11: MOV DX,302H IN A

    11、L,DX AND AL,80H ;测试OBFA JZ L11 ;OBFA有效,说明前一个数还未传送完,则继续等待,否则传送下一个数 LOOP L1 RETOUT1 ENDP 5.2 接收子程序IN1 PROC MOV DX,303H ;对控制端口进行初始化 MOV AL,0F9H OUT DX,AL MOV AL,0AH ;将IBFA置0 OUT DX,AL MOV CX,1024 ;设置循环次数L2: MOV DX,302H IN AL,DX AND AL,10H ;测试IBFA,看是否收到数 JZ L2 MOV DX,300H ;读一个数 IN AL,DX MOV DI,AL INC DI

    12、K2: MOV DX,302H IN AL,DX AND AL,10H ;测试IBFA,看是已存好数 JNZ K2 LOOP L2 RETIN1 ENDP6 小结与体会本次课程设计中,有一些知识是我们在课堂上所没有讲过的,因此就需要我们查阅各种资料。通过这短短两周的实践,我感觉到自己学到了很多有用的理论和实践知识。从程序的设计到调试、运行,任何一个步骤都是对自己的考验。通过本次课程设计,我熟练的掌握了8255A芯片的使用方法,了解了双机并行通讯的原理,还学会了程序编写的一般步骤以及汇编语言的使用,更重要的时,本次课设很好的锻炼了我的思维严谨性,因为任何一个错误都会导致程序运行失败。总之,通过本

    13、次课设,我感觉自己受益匪浅。参考文献1 邵玉祥. 汇编语言程序设计. 北京:科学出版社.20052 阳平. 汇编语言与微机原理. 北京:中国水利水电出版社.20063 胡蔷. 微机原理及应用. 北京:机械工业出版社.20064 钱晓捷. 新版汇编语言程序设计. 北京:电子工业出版社.20075 周佩玲. 微机原理与接口技术. 北京:电子工业出版社.2007附录1:甲机原程序代码;*; 主程序:由甲乙两台微机之间并行传送1K字节数据。甲机发送,乙机接收。 *; 甲乙双方的8255A均采用方式2工作。 *; 8255A控制口地址为303 *;*DATA SEGMENTBUF DB 100 ;表示1

    14、KB的数据缓冲区 DB ? DB 100 dup(1)BUF1 DB 1024 DUP(0) ;表示甲PC要传输的1KB数据BUF2 DB 1024 DUP(0) ;表示甲PC接收的1KB数据PUT1 DB 0ah,0dh,if you want to quit ,please press Q/q! DB 0ah,0dh,press other key to start,0ah,0dh, $PUT2 DB 0aH,0dH,input some words for transfer: DB 0ah,0dh,$DATA ENDSSTACK1 SEGMENT STACK DB 1024 DUP(?)

    15、STACK1 ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK1,CS:CODESTART: MOV AX,DATA MOV DS,AX T1: lea dx,PUT1 ;输入提示信息PUT1 mov ah,9 int 21h mov ah,08h ;从键盘输入单个字符 int 21h cmp al,Q ;输入字符与Q进行比较 JE exit cmp al,q ;输入字符与q进行比较 je exitT2: lea dx,PUT2 ;输入提示信息PUT2 mov ah,9 int 21h lea dx,BUF ;输入一串字符到缓冲区以供传输到乙pc机 mov ah

    16、,10 int 21h lea di,BUF+2 ;将缓冲区中字符串的偏移地址赋予di lea si,BUF1next1: mov dl,di ;将缓冲区的字符移到寄存器dl inc di cmp dl,0dh ;检测寄存器中的字符是否为回车 jne aa1 ;不是回车就跳转到aa2 jmp T ;是回车就跳转到Taa1: mov si,dl inc si jmp next1T: LEA SI,BUF1 ;甲机开始传输数据 CALL OUT1 LEA DI,BUF2 ;甲机开始接收数据 CALL IN1 JMP T1 exit: MOV AH,4CH ;退出程序 INT 21H OUT1 PR

    17、OC MOV DX,303H ;对控制端口进行初始化 MOV AL,0C9H OUT DX,AL MOV AL,0FH ;将OBFA置1 OUT DX,AL MOV CX,1024 ;设置循环次数L1: MOV DX,300H ;开始传输字符 MOV AL,SI OUT DX,AL INC SIL11: MOV DX,302H IN AL,DX AND AL,80H ;测试OBFA JZ L11 ;OBFA有效,说明前一个数还未传送完,则继续等待,否则传送下一个数 LOOP L1 RETOUT1 ENDP IN1 PROC MOV DX,303H ;对控制端口进行初始化 MOV AL,0F9H

    18、 OUT DX,AL MOV AL,0AH ;将IBFA置0 OUT DX,AL MOV CX,1024 ;设置循环次数L2: MOV DX,302H IN AL,DX AND AL,10H ;测试IBFA,看是否收到数 JZ L2 MOV DX,300H ;读一个数 IN AL,DX MOV DI,AL INC DIK2: MOV DX,302H IN AL,DX AND AL,10H ;测试IBFA,看是已存好数 JNZ K2 LOOP L2 RETIN1 ENDPCODE ENDSEND START附录2:乙机原程序代码;*; 主程序:由甲乙两台微机之间并行传送1K字节数据。乙机发送,甲

    19、机接收。 *; 甲乙双方的8255A均采用方式2工作。 *; 8255A控制口地址为303 * ;*DATA SEGMENTBUF DB 100 ;表示1KB的数据缓冲区 DB ? DB 100 dup(1)BUF1 DB 1024 DUP(0) ;表示乙PC要传输的1KB数据BUF2 DB 1024 DUP(0) ;表示乙PC接收的1KB数据PUT1 DB 0ah,0dh,if you want to quit ,please press Q/q! DB 0ah,0dh,press other key to start,0ah,0dh, $PUT2 DB 0aH,0dH,input some

    20、 words for transfer: DB 0ah,0dh,$DATA ENDSSTACK1 SEGMENT STACK DB 1024 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK1,CS:CODESTART: MOV AX,DATA MOV DS,AX T1: lea dx,PUT1 ;输入提示信息PUT1 mov ah,9 int 21h mov ah,08h ;从键盘输入单个字符 int 21h cmp al,Q ;输入字符与Q进行比较 JE exit cmp al,q ;输入字符与q进行比较 je exitT2: le

    21、a dx,PUT2 ;输入提示信息PUT2 mov ah,9 int 21h lea dx,BUF ;输入一串字符到缓冲区以供传输到甲pc机 mov ah,10 int 21h lea di,BUF+2 ;将缓冲区中字符串的偏移地址赋予di lea si,BUF1next1: mov dl,di ;将缓冲区的字符移到寄存器dl inc di cmp dl,0dh ;检测寄存器中的字符是否为回车 jne aa1 ;不是回车就跳转到aa2 jmp T ;是回车就跳转到Taa1: mov si,dl inc si jmp next1T: LEA DI,BUF2 ;乙机开始接收数据 CALL IN1L

    22、EA SI,BUF1 ;乙机开始传输数据 CALL OUT JMP T1 exit: MOV AH,4CH ;退出程序 INT 21H OUT1 PROC MOV DX,303H ;对控制端口进行初始化 MOV AL,0C9H OUT DX,AL MOV AL,0FH ;将OBFA置1 OUT DX,AL MOV CX,1024 ;设置循环次数L1: MOV DX,300H ;开始传输字符 MOV AL,SI OUT DX,AL INC SIL11: MOV DX,302H IN AL,DX AND AL,80H ;测试OBFA JZ L11 ;OBFA有效,说明前一个数还未传送完,则继续等待

    23、,否则传送下一个数 LOOP L1 RETOUT1 ENDP IN1 PROC MOV DX,303H ;对控制端口进行初始化 MOV AL,0F9H OUT DX,AL MOV AL,0AH ;将IBFA置0 OUT DX,AL MOV CX,1024 ;设置循环次数L2: MOV DX,302H IN AL,DX AND AL,10H ;测试IBFA,看是否收到数 JZ L2 MOV DX,300H ;读一个数 IN AL,DX MOV DI,AL INC DIK2: MOV DX,302H IN AL,DX AND AL,10H ;测试IBFA,看是已存好数 JNZ K2 LOOP L2 RETIN1 ENDPCODE ENDSEND START本文来自网络,版权归原作者所有,请下载后,尽快删除。20


    注意事项

    本文(双机并行通讯程序设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922