基于8251双机通信设计Word格式文档下载.docx

上传人:b****6 文档编号:17052213 上传时间:2022-11-28 格式:DOCX 页数:25 大小:258.78KB
下载 相关 举报
基于8251双机通信设计Word格式文档下载.docx_第1页
第1页 / 共25页
基于8251双机通信设计Word格式文档下载.docx_第2页
第2页 / 共25页
基于8251双机通信设计Word格式文档下载.docx_第3页
第3页 / 共25页
基于8251双机通信设计Word格式文档下载.docx_第4页
第4页 / 共25页
基于8251双机通信设计Word格式文档下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于8251双机通信设计Word格式文档下载.docx

《基于8251双机通信设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于8251双机通信设计Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。

基于8251双机通信设计Word格式文档下载.docx

参考文献

《微型计算机原理及接口技术》中国科技大学出版社吴秀清周荷琴编著

《16-32位微型计算机技术及应用》清华大学出版社戴梅萼史嘉权编著

<

汇编语言程序设计》南京大学出版社姚君遗编著

《汇编语言程序设计教程》清华大学出版社杨记文编著

《微型计算机原理及接口技术》实验指导书

摘要

本题是基于8251的双机通信的设计,8251芯片是我们上课所学的芯片之一,试验中我们也学习了该芯片的相关应用,如实现8251的串口自发自收。

我们组选择该题的目的通过该题的设计进一步学习8251的工作原理和控制方式以及串口的传送原理。

设计的硬件基础是星研集成开发环境,是以8086微处理器核心控制8251A芯片实现双机的串行通信;

软件设计是在汇编语言基础上,要求设计者熟练8086指令集及汇编语言的编程特点。

设计的主要内容实现双机间的通信,设计中使用两个相同模块一端为发射机另一端为接收机;

模块以8086最小系统为核心,设计通过各自的RS-232C接口用RS-232C通讯电缆将两台机器相连,设计采用半双工查询方式,异步传送,一方定义为发送器,另一方为接收器。

当发送端CPU查询到TxRDY有效时,向825lA并行输出一字节数据;

接收端CPU每查询到RxRDY有效,则从8251A并行输入一个字节数据,一直进行到全部数据传送完为止,由8253可编程计数/定时器提供8251A可编程串口通信器接受和发送时钟频率;

设计的最终目的是将Ⅱ号机中3000-3009H十个单元中的代码传送到Ⅰ号机的3000-3009H单元中。

关键字:

微处理器串行通信汇编双机通信

目录

1课题简介4

1.1课题内容4

1.2课题意义4

2方案论证4

2.18251A的基本性能5

2.28251A的内部结构5

2.38251A的引脚功能7

2.48251A的编程9

3设计方案10

3.1方案分析10

3.2硬件设计11

3.3软件设计11

4总结12

参考文献13

附录一14

附录二15

附录三16

1课题简介

1.1课题内容

本题目的目的是将Ⅱ号机中3000-3009H十个单元中的代码传送到Ⅰ号机的3000-3009H单元中。

1.2课题意义

串口通信是微机原理和接口技术课程的重点,与并口通信它有着众多的优点是各种数据传输的主流的方式,学好串行是很有必要的这也是我们选择该课题的原因之一。

这次的课程设计的主要目的如下:

1、学习串口通信的工作原理,利用8086、8251实现双机的串行通信。

2、通过本次课程的设计我们要进一步了解8086、8251。

加强理论与实际的联系,提高我们的设计与运用所学知识的能力。

3、通过设计了解并掌握汇编语言的设计方法和设计流程。

2方案论证

本次设计中主要使用了可编程串行接口芯片8251A,下面就8251A对设计方案进行论证。

2.18251A的基本性能

8251A是可编程的串行通信接口芯片,基本性能:

1.两种工作方式:

同步方式,异步方式。

同步方式下,波特率为064K,异步方式下,波特率为0~19.2K。

2.同步方式下的格式

每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。

除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。

3.异步方式下的格式

每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。

1个启动位。

并能根据编程为每个数据增加1个、1.5个或2个停止位。

可以检查假启动位,自动检测和处理终止字符。

4.全双工的工作方式

其内部提供具有双缓冲器的发送器和接收器。

5.提供出错检测

具有奇偶、溢出和帧错误三种校验电路。

2.28251A的内部结构

1、发送器

发送器由发送缓冲器和发送控制电路两部分组成。

采用异步方式,则由发送控制电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出。

8251A内部结构图

采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据。

如果CPU与8251A之间采用中断方式交换信息,那么TXRDY可作为向CPU发出的中断请求信号。

当发送器中的8位数据串行发送完毕时,由发送控制电路向CPU发出TXE有效信号,表示发送器中移位寄存器已空。

2.接收器

接收器由接收缓冲器和接收控制电路两部分组成。

接收移位寄存器从RXD引腿上接收串行数据转换成并行数据后存入接收缓冲器。

异步方式:

在RXD线上检测低电平,将检测到的低电平作为起始位,8251A开始进行采样,完成字符装配,并进行奇偶校验和去掉停止位,变成了并行数据后,送到数据输入寄存器,同时发出RXRDY信号送CPU,表示已经收到一个可用的数据。

同步方式:

首先搜索同步字符。

8251A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器的内容进行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。

当两个寄存器的内容比较相等时,8251A的SYNDET升为高电平,表示同步字符已经找到,同步已经实现。

采用双同步方式,就要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同。

如果相同,则认为同步已经实现。

在外同步情况下,同步输入端SYNDET加一个高电位来实现同步的。

实现同步之后,接收器和发送器间就开始进行数据的同步传输。

这时,接收器利用时钟信号对RXD线进行采样,并把收到的数据位送到移位寄存器中。

在RXRDY引脚上发出一个信号,表示收到了一个字符。

3.数据总线缓冲器

数据总线缓冲器是CPU与8251A之间的数据接口。

包含3个8位的缓冲寄存器:

两个寄存器分别用来存放CPU向8251A读取的数据或状态信息。

一个寄存器用来存放CPU向8251A写入的数据或控制。

4.读/写控制电路

读/写控制电路用来配合数据总线缓冲器的工作。

功能如下:

(1)接收写信号

,并将来自数据总线的数据和控制字写入8251A;

(2)接收读信号

,并将数据或状态字从8251A送往数据总线;

(3)接收控制/数据信号C/

,高电平时为控制字或状态字;

低电平时为数据。

(4)接收时钟信号CLK完成8251A的内部定时;

(5)接收复位信号RESET,使8251A处于空闲状态。

5.调制解调控制电路

调制解调控制电路用来简化8251A和调制解调器的连接。

2.38251A的引脚功能

1、8251A和CPU之间的连接信号

8251A和CPU之间的连接信号可以分为四类:

a)片选信号

片选信号,它由CPU的地址信号通过译码后得到。

b)数据信号

D0-D7:

8位,三态,双向数据线,与系统的数据总线相连。

传输CPU对8251A的编程命令字和8251A送往CPU的状态信息及数据。

c)读/写控制信号

读信号,低电平时,CPU当前正在从8251A读取数据或者状态信息。

写信号,低电乎时,CPU当前正在往8251A写入数据或者控制信息。

•C/

控制/数据信号,用来区分当前读/写的是数据还是控制信息或状态信息。

该信号也可看作是8251A数据口/控制口的选择信号。

由此可知,

、C/

这3个信号的组合,决定了8251A的具体操作,它们的关系如表7-3所示:

注:

数据输入端口和数据输出端口合用同一个偶地址,而状态端口和控制端口合用同一个奇地址。

c)收发联络信号

•TXRDY:

发送器准备好信号,用来通知CPU,8251A已准备好发送一个字符。

•TXE:

发送器空信号,TXE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,说明一个发送动作已完成。

•RXRDY:

接收器准备好信号,用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,等待CPU来取走。

因此,在中断方式时,RXRDY可用来作为中断请求信号;

在查询方式时,RXRDY可用来作为查询信号。

•SYNDET:

同步检测信号,只用于同步方式。

2.8251A与外部设备之间的连接信号

8251A与外部设备之间的连接信号分为两类:

a)收发联络信号

数据终端准备好信号,通知外部设备,CPU当前已经准备就绪。

数据设备准备好信号,表示当前外设已经准备好。

请求发送信号,表示CPU已经准备好发送。

允许发送信号,是对

的响应,由外设送往8251A。

实际使用时,这4个信号中通常只有

必须为低电平,其它3个信号可以悬空。

b)数据信号

•TXD:

发送器数据输出信号。

当CPU送往8251A的并行数据被转变为串行数据后,通过TXD送往外设。

•RXD:

接收器数据输入信号。

用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。

3.时钟、电源和地

8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端。

•CLK:

时钟输入,用来产生8251A器件的内部时序。

同步方式下,大于接收数据或发送数据的波特率的30倍,

异步方式下,则要大于数据波特率的4.5倍。

发送器时钟输入,用来控制发送字符的速度。

同步方式下,TXC的频率等于字符传输的波特率,

异步方式下,TXC的频率可以为字符传输波特率的1倍、16倍或者64倍。

•RXD:

接收器时钟输入,用来控制接收字符的速度,和TXC一样。

在实际使用时,RXC和TXC往往连在一起,由同一个外部时钟来提供,CLK则由另一个频率较高的外部时钟来提供。

•VCC:

电源输入

•GND:

2.48251A的编程

编程的内容包括两大方面:

一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;

二是由8251A向CPU送出的状态字。

1.方式选择控制字(模式字)

方式选择控制字的格式如图所示。

2.操作命令控制字(控制字)

操作命令控制字的格式如下:

3、状态字

状态字的格式如下:

4.8251A的初始化

a)芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。

b)如果模式字中规定了8251A工作在同步模式,

c)由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。

3设计方案

3.1方案分析

1、接受发送时钟频率选择

方案一:

采用外部时钟发生器,要额外添加时钟发生器,无法直接改变时钟频率,不方便使用。

方案二:

采用集成环境自带的计数器8253工作在方式三输出一个时钟频率,可以通过程序控制产生的频率大小,方便快捷。

2、同步、异步选择

如果选择同步要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同,这样选择太过繁琐难度较大不易课程设计只好放弃同步采用异步的工作方式。

3、数据传送接受方式

采用中断方式,需要使用8259中断控制器,不利于程序的编写。

才用查询方法,发射机不停的查询TxRDY的状态,接收机不停的查询RxRDY的状态,这样来判断是否传送或接受完毕。

4、总体方案

采用两个8086最小系统为控制核心,以可编程串行控制器8251A为数据传输和接受芯片,8251A采用查询方法、异步传送、半双工通信。

8253提供接受和传送的时钟频率。

3.2硬件设计

1、硬件原理框图

2、硬件原理图

见附录一

3.3软件设计

1、软件流程图

见附录二

2、程序清单

见附录三

4总结

课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题,是锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

回顾起此次微机原理课程设计,的确如此,从选题到定稿,从理论到实践,在整整两个星期的日子里,我们学到很多很多的的东西,同时巩固了以前所学过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的。

在设计的过程中遇到问题是无法避免但克服困难的过程就是学习的过程,说到困难我想这次的课题设计的难点在于8251A芯片的使用,以及相关软件的使用如:

PRETOL,就本质还是对汇编语言掌握得不好……通过这次课程设计之后,我们每个人都有很大的进步。

致谢:

在这课程设计结束之际,我要感谢王敬生、刘伟和林泽坤三位老师,感谢王老师在上课时的认真仔细的讲解和在课程设计时的精心点拔,感谢两位课程设计指导老师他们的耐心指导和不厌辛苦的和我们奋斗到课程设计的结束,还要感谢学校给我们的这次机会。

《汇编语言程序设计》南京大学出版社姚君遗编著

《微型计算机原理及接口技术》实验指导书

附录一

8086最小系统图:

系统原理图:

附录二

程序流程图:

附录三

1、双机串行通信发送机源程序

.MODELTINY

;

使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps

PCIBAR3EQU1CH;

8位I/O空间基地址(它就是实验仪的基地址,也为DMA&

32BITRAM板卡上的8237提供基地址)

Vendor_IDEQU10EBH;

厂商ID号

Device_IDEQU8376;

设备ID号

.STACK100

.DATA

CTL_ADDRDW00F1H;

控制字或状态字

DATA_ADDRDW00F0H;

读写数据

W_8253_T0DW00B0H;

计数器0地址

W_8253_CDW00B3H;

控制字

MESSDB'

SEND&

LOADADATA'

0AH,0DH,'

$'

ORG3000H

A1DB01H,02H,03H,04H,05H,06H,07H,08H,09H,00H

IO_Bit8_BaseAddressDW?

msg0DB'

BIOS不支持访问PCI$'

msg1DB'

找不到StarPCI9052板卡$'

msg2DB'

读8位I/O空间基地址时出错$'

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

NOP

;

LEADX,MESS

MOVAH,9

INT21H

CALLInitPCI

CALLModifyAddress;

根据PCI提供的基地址,将偏移地址转化为实地址

CALLINIT_8253

CALLINIT_8251

START1:

MOVCX,10

CALLSend_Group

CALLIfExit;

OUT1输出频率为1S的方波

JZSTART1

JMPExit

INIT_8253PROCNEAR

MOVDX,W_8253_C

MOVAL,37H;

定时器0,方式3

OUTDX,AL

MOVDX,W_8253_T0

MOVAL,26H;

BCD码26(2000000/26)=16*4800

MOVAL,0

RET

INIT_8253ENDP

INIT_8251PROCNEAR

CALLRESET_8251

MOVDX,CTL_ADDR

MOVAL,7EH;

波特率系数为16,8个数据位

OUTDX,AL;

一个停止位,偶校验

CALLDLTIME;

延时

MOVAL,11H;

只允许发送发送数据,清错误标志

CALLDLTIME

INIT_8251ENDP

8251的复位

Reset_8251PROCNEAR

MOVDX,CTL_ADDR

向控制口写入"

0"

延时,等待写操作完成

MOVAL,40H;

向控制口写入复位字40H

Reset_8251ENDP

发送一组数据,CX--发送数目

Send_GroupPROCNEAR

LEASI,A1

Send_Group1:

LODSB

CALLSendbyte

LOOPSend_Group1

Send_GroupENDP

发送一个字节

SendbytePROCNEAR

PUSHAX

MOVDX,CTL_ADDR;

读入状态

Sendbyte1:

INAL,DX

TESTAL,01H

JZSendbyte1;

允许数据发送吗?

MOVDX,DATA_ADDR

POPAX;

发送

OUTDX,AL

SendbyteENDP

DLTIMEPROCNEAR

PUSHDX

MOVDX,1;

延时1ms

MOVAH,0FFH;

星研公司提供的软中断

INT21H

POPDX

POPAX

DLTIMEENDP

IfExitPROCNEAR

MOVAH,06H

MOVDL,0FFH

IfExitENDP

InitPCIPROCNEAR

MOVAH,00H

MOVAL,03H

INT10H;

清屏

MOVAH,0B1H

MOVAL,01H

INT1AH

CMPAH,0

JZInitPCI2

LEADX,msg0

InitPCI1:

MOVAH,09H

JMPExit

InitPCI2:

MOVAH,0B1H

MOVAL,02H

MOVCX,Device_ID

MOVDX,Vendor_ID

MOVSI,0

JNCInitPCI3;

是否存在StarPCI9052板卡

LEADX,msg1

JMPInitPCI1

InitPCI3:

MOVDI,PCIBAR3

MOVAL,09H

INT1AH;

读取该卡PCI9052基地址

JNCInitPCI4

LEADX,msg2

InitPCI4:

ANDCX,0FFFCH

MOVIO_Bit8_BaseAddress,CX

InitPCIENDP

ModifyAddressPROCNEAR

ADDCTL_ADDR,CX

ADDDATA_ADDR,CX

ADDW_8253_T0,CX

ADDW_8253_C,CX

ModifyAddressENDP

Exit:

MOVAH,4CH

ENDSTART

2、双机通信接收机源程序

Receive_BufferEQU3000H

//Receive_BufferDB10DUP(0);

接受缓冲器

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

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1