双机串行通信的设计与实现.docx

上传人:scccc 文档编号:13346651 上传时间:2021-12-22 格式:DOCX 页数:23 大小:748.11KB
返回 下载 相关 举报
双机串行通信的设计与实现.docx_第1页
第1页 / 共23页
双机串行通信的设计与实现.docx_第2页
第2页 / 共23页
双机串行通信的设计与实现.docx_第3页
第3页 / 共23页
双机串行通信的设计与实现.docx_第4页
第4页 / 共23页
双机串行通信的设计与实现.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《双机串行通信的设计与实现.docx》由会员分享,可在线阅读,更多相关《双机串行通信的设计与实现.docx(23页珍藏版)》请在三一文库上搜索。

1、山东科技大学信息学院微机原理课程设计双机串行通信的设计与实现一、设计要求1 .单机自发自收串行通信。接收键入字符,从 8251A的发送端发送,与同 一个8251A的接收端接收,然后在屏幕上显示出来。2 .双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台 PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。二、所用设备IBM-PC机两台(串行通信接口 8251A两片,串行发送器 MC1488和串行 接收器MC1489各两片,定时器/计数器8253,终端控制器8259等),串口 线一根 串行直连电缆用于两台台电脑通过用行口直接相连,电缆两 -端的插头都是9针的母

2、插头:年黄客9 E三、硬件方案1.设计思想计算机传输数据有并行和串行两种模式。在并行数据传输方式中,使用 8 条或更多的导线来传送数据,虽然并行传送方式的速度很快,但由于信号 的衰减或失真等原因,并行传输的距离不能太长,在串行通信方式中,通 信接口每次由CPU得到8位的数据,然后串行的通过一条线路,每次发送 一位将该数据放送出去。串行通信采用两种方式:同步方式和异步方式。同步传输数据时,一次传 送一个字节,而异步传输数据是一次传送一个数据块。串口是计算机上一种非常通用设备串行通信的协议。大多数计算机包含两个基于RS232的串口。串口按位(bit)发送和接收字节。尽管比按字节(byte) 第1页

3、山东科技大学信息学院微机原理课程设计的并行通信慢,但是用口可以在使用一根线发送数据的同时用另一根线接 收数据。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1) 地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线 上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须 的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于 两个进行通行的端口,这些参数必须匹配:RS-232 (ANSI/EIA-232标准)是旧M-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者 Modem,同时也可以接工业 仪器仪表。用于驱动和连线

4、的改进, RS-232只限于PC串口和设备问点对 点的通信。IBM PC及其兼容机提供了一种有较强的硬件依赖性,但却比较灵活的串行口 I/O的方法,即通过INT 14调用ROM BIOS串行通信口的例行程序。该 例行程序。该例行程序包括将用行口初始化为指定的字节结构和传输速率, 检查控制器的状态,读写字符等功能。14号中断的功能总结如下:用行口服务(Serial Port ServiceINT 14H)00H 初始化通信口03H 一读取通信口状态01H 一向通信口输出字符04H 一扩充初始化通信口02H 从通信口读入字符(1)、功能00H:初始化通信口入口参数:AH=00HDX=M始化通信口号

5、(0=COM1, 1 = COM2,)AL =初始化参数,参数的说明如下:波特率奇偶位停止位字的位数76543210000 = 110X0 = NoneO = 1 bit10 = 7 bits001 = 15001 = Oddi = 2 bitsll = 8 bits010 =30011 = Even011 =600100 = 1200101 =2400110 =4800111 =9600(2)、功能01H :向通信口输出字符入口参数:AH=01HAL =字符DX=M始化通信口号(0=COM1, 1 = COM2,)出口参数:AL的值不变AH的位7 = 0操作成功,通信口状态,AH的位60是其

6、状态位(3)、功能02H :从通信口读入字符入口参数:AH=02HDX=M始化通信口号(0=COM1, 1 = COM2,)出口参数:AL=接受的字符AH的位7 = 0操作成功,通信口状态,AH的位60是其状态位(4)、功能 03H功能描述:读取通信口状态入口参数:AH=03HDX=M始化通信口号(0=COM1, 1 = COM2,)出口参数:AH=通信口状态,AL=Modem状态,参见功能号00H中的说 明(5)、功能 04H功能描述:扩充初始化通信口,仅在 PS/2中有效本设计正是利用14号配置串口,实现双机的双工通信及单机的自发自收通信。并画出了比较完整的原理图与写出了比较详细的程序2原

7、理框图CPU针串口3.工作原理IBM PC及其兼容机间经过RS- 232 C 口串行通信是在实际系统中用的最 广泛的。上述框图只是串口通信的的一个内部的原理图,由于,本次设计是直接配 置的PC机中的RS232适配卡,上述过程并不能看到,不过在,原理图的 分析中会做详尽的解释本次实验的外部来看实际的电路图15PC机上的串行口是9针公插座,引脚定义为:Pin -me .DescriPt-1CD<Carrier Detect2RXD-Receive Data3TXDTransmit Data4DTRData Terminal Ready5GNDSystem Ground6DSRData Set

8、 Ready7RTSRequest to Send8CTS.Clear to Send9RI4-Ring Indicator所以本设计所采用的串口为双端母插头。串口为交叉线,2, 3号针脚交叉相连,5号针接公共地EIA RS-232-C接口( 9针)插头连线方法:发送RXD2一T3TXD接收接收TXD3一T2RXD发送信号地GND5一T5GND信号地4.电路原理图第7页4.1顶层的模块图,top.pri'IfiZLK | . 出匚i« rid muiccF h nd jraaicb ;二 h二j RflSEEL细,H <3二,M睡W.n C.MRT)CPUCPU 3RE

9、SET 筋EL10 HDAP 3 C:此原理图的主要参考资料是 protel 99 se中Z80 Microprocessor的例子。整个 串行通信系统包括六大部分:CPU部分、复位和时钟电路部分、电源部分、 存储器部分、串口通信接口部分和外设部分。下就各部分座简要介绍。4.2 CPU 部分。CPU.sch1 .H U-.» Cxi1I白 uiAMARAEjfai&d IM MM4I«n .&g .J M iUIU.-;口 .rmJl AMia. -£ 口 3-J-"J WHCJQC-T3-占u- tt* “a a rar KL4Da -

10、w-k nterfrrLLEMfe 电知CLKITWF| kG%3F-CPU部分本来是用8086来做的,但考虑到,8086的寻址比较复杂,数据山东科技大学信息学院微机原理课程设计线分高八位和低八位,所以就改成了8088。IO/M,RD,WR几个控制引脚的译码通过简单的组合逻辑电路来实现。对RAM存储器、ROM存储器、各IO芯片的寻址译码,是通过一片 3-8译码器74LS138来实现的。地址线的 低13位代码,在芯片选择的时候,不起作用,只有 A13A15三位地址线 负责译码。为了便于记忆,可把芯片选择时的低13位地址线设为零,来代表它的片选地址。如本设计中,RAM 地址位0x00000来表示,

11、而 ROM的地址为0x20000,相应地,55, 53, 51的地址分别为:0x30000, 0x40000,0x50000。低13位地址线只在选择存储器中的某一存储单元时使用。4.3复位和时钟电路。CPU_Clock.sch微机电路在工作中受到干扰后,容易出现CPU程序 跑飞”而盲目运行甚至出 现死机现象。此时复位信号有效,使微机系统重新恢复正常运行。本设计采 用的是比较简单的一种手动的复位电路。它是通用的吧,是直接从protel的一个例子中拷过来的。关于处理器的时钟电路确实有研究头8284除了提供频率恒定的时钟信号外,还对准备好(ready)信号,和复位 (reset)信号进行同步。外界的

12、准备好信号输入到8284的RDY ,同步的准 第7页山东科技大学信息学院微机原理课程设计备好信号READY从8284输出。同样,外界的复位信号输入到8284的RES, 同步的复位信号RESET从8284输出。这样,从外部来说,可以在任何时 候发出这两个信号,但是,8284的内部逻辑电路设计成在时钟下降沿处使 READY 和 RESET 有效。根据不同的振荡器,8284和振荡器之间,用两种不同的连接方式。通过F八C来实现:FrequBncy/Ciysifiii detect. When F/C is strapped HIGH. CLK is aneraLed from the EH inpuL

13、 When strapped LOW, ihfl F/百 aNowa the processor clock la ba 卵rwrated by the此电路图是按同步通信的方式画的,READY信号在以后的设计中,也没有 用到,便把它的连接去掉了4.5 存储器部分。serial_memory.schinn馈 E 大片胃MS25M跣望5ud43!JuL73 0aoLLlwS3SS2764只可读,6264可读可写,由于处理器用的是 8088,便无需考虑A0的 问题了,这种便利也体现在,后面的设计中,IO芯片的端口地址的设置上。4.6串口通信接口部分。serial51.schCMJTU mnzu4川

14、应xrri OMTEI CLICDCTTJ亡UC 之fxEMp-r0R口RsftCrYRxCLH «OSYMDET血EIHkCLR空墨黑器J J J 3 产觊更 吃 UL 二- 二 -8253为8251提供波特率,8253只用它的第0个计数器,工作在方式3。下 面是一段基于本设计的连接图的通过 8251实现自发自收串行通信的程序, 内包含了 8253, 8251的初始化。STACK SEGMENT PARA STACK 'STACK'DB 128 DUPSTACK ENDSCODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS

15、:CODE,SS:STACK,DS:CODESTART: JMP MAINSBUF DB 1,2,3,4,5,6,7,8,9,10 ;定义保存“发送信息”RBUF DB 10 DUP;和“接收信息”的存储器区域OCOMM PROC ;将61)写入8251的命令口PUSH CX ;保存所用寄存器PUSH DXMOV DX,209H;执行端口写入操作OUT DX,ALMOV CX,400H诞时LOOP $POP DX ;恢复所用寄存器POP CXRET;返回主调程序OCOMM ENDPINIT PROC ;初始化子程序MOVDX,0x40003H ;设置8253的1#通道为方式3、只读写低8位数据

16、和2进制计数方式第11页山东科技大学信息学院微机原理课程设计MOV AL,56HOUT DX,ALMOV DX, 0x40001H ;设置计数值,此时的通讯速率为 1M + 52+16 = 1200 bpsMOV AL,52OUT DX,ALMOV AX,300H;向8251的命令端口写入 3个0II1: CALL OCOMMDEC AHJNZ II1MOV AL,40H ;复位 8251CALL OCOMMMOV AL,4EH ;设置1个停止位、8个数据位和16的波特率因子CALL OCOMMMOV AL,37H ;允许8251发送和接收CALL OCOMMRET;返回主调程序INIT EN

17、DPMAIN:MOV AX,CS ;初始化数据段寄存器MOV DS,AXLEASI,SBUF;和发送LEADI,RBUF;与接收指针call initMOV DX,0x50002H ;等待8251处于允许发送状态M02:IN AL,DXTEST AL,1JZ M02MOV AL,SI;发送1个数据INC SIMOV DX,0x50001HOUT DX,ALMOV CX,40H ;延时LOOP $MOV DX,0x50002H ;等待8251处于允许接收状态M03:IN AL,DXTEST AL,2JZ M03MOV DX,0x50001H;接收IN AL,DXMOV DI,AL ;并保存一个数

18、据INC DICMP SI,OFFSET SBUF+10 ;判断是否处理完了全部数据?JB M01;未完,再处理下一个HLT ;完了,执行停机动作CODE ENDSEND START下面是一段基于本设计的连接图的通过8251实现串行通信的程序stack segment stackstack endsdata segmentdata endscode segmentassume cs:code,ds:data,ss:stackstart:push cspop dsmov dx,0x0003hmov al,56hout dx,almov al,52mov dx,0x0001hout dx,almo

19、v dx,0x50001hxor al,almov cx,03delay:;设置8253计数1工作方式3给8253计数器1送初值;初始化8251;向8251控制端口送3个0call out1 loop delaymov al,40h;向8251控制端口送40H,使其复位mov al,4eh;设置为1个停止位,8个数据位,波特率因子为16call outlmov al,27h;向8251送控制字允许其发送和接收call outlnext: mov dx,0x50001hin al,dxtest al,02;检查接收是否准备好jz next;没有,等待mov dx,0x50000hin al,dx

20、;准备好,接收push axmov cx,40hs51:loop s51;延时waiti:mov dx,0x50001hin al,dxtest al,01;发送是否准备好jz waitimov dx,0x50000hpop axout dx,aljmp nextout1 proc near;向外发送一字节的子程序call out1第15页山东科技大学信息学院微机原理课程设计out dx,alpush cxmov cx,400hgg:loop gg;延时pop cxretoutl endpcode endsend start4.7 外设部分。key_led.sch第19页其实在PC机中应该是用

21、8279来实现的四、软件方案1.程序流程图程序流程图山东科技大学信息学院微机原理课程设计2.程序清单name serialcommunicationdatasegmentmessagedb 'Serial Communication',0ah,0dh,db 'Any key press is sent to other PC',0ah,0dhdb 'press any key to exit','$'dataendscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,

22、axmovah,09;显示字符串mov dx,offset messageint 21h;初始化串口mov ah,0movdx,0;初始化COM0moval,0c3h;11000011, 4800, n, 1, 8int14h;调用BIOS 14号中断again:movah,01;获取键盘状态int16h;检查键盘是否按下jznext;如果没有则转入到接收模式movah,0;如过有按键按下,读取出来int 16h;调用16号BIOS中断cmpal,1bh;比较一下是否是ESC'键je exit;如果是,直接退出通信mov ah,1;如果不是,把按下的字符发送到 COMmov dx,0;

23、选择 COM0int 14h;调用BIOS中断;以下这部分代码,检查 COM0端口,看看是否有字符接收,如果有,接 收,并且把它在终端上显示出来next:mov ah,3;把COM 口的状态读到AHmov dx,0;选择 COM0int 14h;解释同上and ah,1;屏蔽除D0位的其它位cmpah,1;检查D0看是否有一个字符等待接收jne again;没有,则转入到监视键盘模块movah,2;有的话,从 COM0读出movdx,0;int 14hmovdl,al;dl中存放要显示的字符movah,2;21号中断2号调用,显示字符int 21h;调用DOS 21号中断jmp again;跳

24、回到监视键盘模块exit:mov ah,4ch :退出 DOS code endsend start以上是全双工双机通信的程序代码,自发自收也可以用同样的代码,只需 改变连线,把9针插座的2, 3引脚用导线交叉互联即可。五、方案论证按设计题目实现双机通信可有三种方法:第一种方法:通过配置 PC机中固有的RS232适配卡,通过调用BIOS 的14号中断,及DOS中断的16号、21号中断里的功能,实现双机的通信。第二种方案:在微机中通过配置可编程芯片 8250来实现串行通信。第三种方案:由芯片级做起,查资料,画原理图,版图,制版,调试, 实现串口通信。总地来说,第三种方案不符合现实情况,在时间上,

25、资源上不允许,但 毋庸置疑的是,它确实是最吸引我们的一种方案。第二种方案是最合情合理的,既不像第三种方案那样遥远,也不像第一 种方案那样简单。但在实际做的工程中,发现按实验资料所设计的程序并 没有实现,可能有一些未知的原因。最后选择了第三种方案,可惜的是, 这种程序更加偏向于软件。为弥补这种不足,只能把实验原理图画得详细 一点了。六、调试过程1 .首先把软件调试通过,本设计采用的是tasm, tlink , td这一套精巧的汇编 开工具发。2 .在PC双机上通信必需得把PC双机的串口连起来,但 PC机上的插槽都 是公的,若要连接,必需是双端都是母插头的串口线,但实验室的串口线 都是一公一母的,

26、不能用,后来,无意中发现一位同学买的单片机开发板 上的串口线是双母插头的,解决了这个问题。第21页山东科技大学信息学院微机原理课程设计3 .第二种方案没有成功,可能是对 8250 了解的比较少,再一方面,8250里 有比较多的寄存器,在通信的过程中,有一些未认识到的错误在里面,就继续选择用第一种方案来做。4 .在网上下载了一个串口测试的程序,对调试过程,产生了很大的帮助。七、运行结果1 .在发送端的程序显示结果Serial CommunicatIonAny key press is s?nt to other PC press ESC to exit输入的字符没有显示,因为程序没有回显功能2

27、.在接收端的程序显示结果QE:ta»mSCCMlXESerial ComnunicatinnBmy Ik起卬 pi*esfi Is SBnt to Dhe-r PC press ESC to exit rreehl.注:其实“接收端”与“发送端”描述,只是在一次的通信中相对而言的, 并没有绝对的接收端与发送端,因为此程序是双工的。八、收获体会1 .对微机原理有了更深一步的认识, 当时学习时,很多迷惑不解的部分都迎 刃而解了,比如说,8259的中断机制,8086的编址方法等。2 .巩固了对PROTEL工具使用,虽然还不如当时熟练,但也去掉了不少生 疏。3 .这次课程设计使我产生了一种很强烈的愿望,就是想把以往只在书纸上大 动干戈操作的一些东西,实实在在的做出来,实现掉,因为只有这样它才有意义。第23页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1