基于8251双机通信设计.docx
《基于8251双机通信设计.docx》由会员分享,可在线阅读,更多相关《基于8251双机通信设计.docx(24页珍藏版)》请在冰豆网上搜索。
基于8251双机通信设计
微机原理课程设计报告
课落款称:
基于8251双机通信设计
姓名:
专业:
07自动化
(2)班
指导教师:
基于8251双机通信的设计任务书
论文
题目
基于8251双机通信的设计
设计类型
导师姓名
主要内容及目标
1、掌握8251在半双工方式下双机串行通讯的软件编制及硬件连接技术
2、微机两台(一台为发送机,一台为接收机)
本题目需用两台8086教学机,并通过各自的RS-232C接口用RS-232C通讯电缆将两台机器相连,如图所示。
其中Ⅰ号机用作接收机,利用8253的1#通道产生接收时钟;Ⅱ号机用作发送机,利用8253的1#通道产生发送时钟。
本题目的是将Ⅱ号机中3000-3009H十个单元中的代码传送到Ⅰ号机的3000-3009H单元中。
具有的设计条件
1.PC机一台,EL教学实验箱一台及汇编程序;
计划设计进程
(按课程设计周计算)
第一周设计任务:
(1):
明确课题对程序功能,运算精度等方面的要求及硬件条件
(2):
把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。
(3):
存储器资源分配
第二周设计任务:
(4):
编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序
(5):
对程序进行汇编,调试和修改,直到程序运行结果正确为止。
参考文献
《微型计算机原理及接口技术》中国科技大学出版社吴秀清周荷琴编著
《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课题简介
1.1课题内容
1、把握8251在半双工方式下双机串行通信的软件编制及硬件连接技术
2、微机两台(一台为发送机,一台为接收机)
此题目需用两台8086教学机,并通过各自的RS-232C接口用RS-232C通信电缆将两台机械相连,如下图。
其中Ⅰ号机用作接收机,利用8253的1#通道产生接收时钟;Ⅱ号机用作发送机,利用8253的1#通道产生发送时钟。
此题目的目的是将Ⅱ号机中3000-3009H十个单元中的代码传送到Ⅰ号机的3000-3009H单元中。
1.2课题意义
串口通信是微机原理和接口技术课程的重点,与并口通信它有着众多的优势是各类数据传输的主流的方式,学好串行是很有必要的这也是咱们选择该课题的缘故之一。
这次的课程设计的要紧目的如下:
1、学习串口通信的工作原理,利用8086、8251实现双机的串行通信。
2、通过本次课程的设计咱们要进一步了解8086、8251。
增强理论与实际的联系,提高咱们的设计与运用所学知识的能力。
3、通过设计了解并把握汇编语言的设计方式和设计流程。
2方案论证
本次设计中要紧利用了可编程串行接口芯片8251A,下面就8251A对设计方案进行论证。
2.18251A的大体性能
8251A是可编程的串行通信接口芯片,大体性能:
1.两种工作方式:
同步方式,异步方式。
同步方式下,波特率为064K,异步方式下,波特率为0~。
2.同步方式下的格式
每一个字符能够用五、六、7或8位来表示,而且内部能自动检测同步字符,从而实现同步。
除此之外,8251A也许诺同步方式下增加奇/偶校验位进行校验。
3.异步方式下的格式
每一个字符也能够用五、六、7或8位来表示,时钟频率为传输波特率的一、16或64倍,用1位作为奇/偶校验。
1个启动位。
并能依照编程为每一个数据增加1个、1.5个或2个停止位。
能够检查假启动位,自动检测和处置终止字符。
4.全双工的工作方式
其内部提供具有双缓冲器的发送器和接收器。
5.提供犯错检测
具有奇偶、溢出和帧错误三种校验电路。
2.28251A的内部结构
一、发送器
发送器由发送缓冲器和发送操纵电路两部份组成。
采纳异步方式,那么由发送操纵电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄放器从数据输出线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的引脚功能
一、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倍,
异步方式下,那么要大于数据波特率的倍。
•TXD:
发送器时钟输入,用来操纵发送字符的速度。
同步方式下,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方案分析
一、同意发送时钟频率选择
方案一:
采纳外部时钟发生器,要额外添加时钟发生器,无法直接改变时钟频率,不方便利用。
方案二:
采纳集成环境自带的计数器8253工作在方式三输出一个时钟频率,能够通进程序操纵产生的频率大小,方便快捷。
二、同步、异步选择
若是选择同步要在测得输入移位寄放器的内容与第一个同步字符寄放器的内容相同后,再继续检测尔后输入移位寄放器的内容是不是与第二个同步字符寄放器的内容相同,如此选择太过繁琐难度较大不易课程设计只好舍弃同步采纳异步的工作方式。
3、数据传送同意方式
方案一:
采纳中断方式,需要利用8259中断操纵器,无益于程序的编写。
方案二:
才用查询方式,发射机不断的查询TxRDY的状态,接收机不断的查询RxRDY的状态,如此来判定是不是传送或同意完毕。
4、整体方案
采纳两个8086最小系统为操纵核心,以可编程串行操纵器8251A为数据传输和同意芯片,8251A采纳查询方式、异步传送、半双工通信。
8253提供同意和传送的时钟频率。
3.2硬件设计
一、硬件原理框图
2、硬件原理图
见附录一
3.3软件设计
1、软件流程图
见附录二
2、程序清单
见附录三
4总结
课程设计是培育学生综合运用所学知识发觉、提出、分析和解决实际问题,是锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察进程。
回忆起这次微机原理课程设计,的确如此,从选题到定稿,从理论到实践,在整整两个礼拜的日子里,咱们学到很多很多的的东西,同时巩固了以前所学过的知识。
通过这次课程设计使我知道了理论与实际相结合是很重要的。
在设计的进程中碰到问题是无法幸免但克服困难的进程确实是学习的进程,说到困难我想这次的课题设计的难点在于8251A芯片的利用,和相关软件的利用如:
PRETOL,就本质仍是对汇编语言把握得不行……通过这次课程设计以后,咱们每一个人都有专门大的进步。
致谢:
在这课程设计终止之际,我要感激王敬生、刘伟和林泽坤三位教师,感激王教师在上课时的认真认真的讲解和在课程设计时的精心点拔,感激两位课程设计指导教师他们的耐心指导和不厌辛苦的和咱们奋斗到课程设计的终止,还要感激学校给咱们的这次机遇。
参考文献
《微型运算机原理及接口技术》中国科技大学出版社吴秀清周荷琴编著
《16-32位微型运算机技术及应用》清华大学出版社戴梅萼史嘉权编著
《汇编语言程序设计》南京大学出版社姚君遗编著
《汇编语言程序设计教程》清华大学出版社杨记文编著
《微型运算机原理及接口技术》实验指导书
附录一
8086最小系统图:
系统原理图:
附录二
程序流程图:
附录三
一、双机串行通信发送机源程序
.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
OUTDX,AL
MOVAL,0
OUTDX,AL
RET
INIT_8253ENDP
INIT_8251PROCNEAR
CALLRESET_8251
MOVDX,CTL_ADDR
MOVAL,7EH;波特率系数为16,8个数据位
OUTDX,AL;一个停止位,偶校验
CALLDLTIME;延时
MOVAL,11H;只允许发送发送数据,清错误标志
OUTDX,AL
CALLDLTIME
RET
INIT_8251ENDP
;8251的复位
Reset_8251PROCNEAR
MOVDX,CTL_ADDR
MOVAL,0
OUTDX,AL;向控制口写入"0"
CALLDLTIME;延时,等待写操作完成
OUTDX,AL;向控制口写入"0"
CALLDLTIME;延时
OUTDX,AL;向控制口写入"0"
CALLDLTIME;延时
MOVAL,40H;向控制口写入复位字40H
OUTDX,AL
CALLDLTIME
RET
Reset_8251ENDP
;发送一组数据,CX--发送数量
Send_GroupPROCNEAR
LEASI,A1
Send_Group1:
LODSB
CALLSendbyte
LOOPSend_Group1
RET
Send_GroupENDP
;发送一个字节
SendbytePROCNEAR
PUSHAX
MOVDX,CTL_ADDR;读入状态
Sendbyte1:
INAL,DX
TESTAL,01H
JZSendbyte1;允许数据发送吗?
MOVDX,DATA_ADDR
POPAX;发送
OUTDX,AL
RET
SendbyteENDP
;延时
DLTIMEPROCNEAR
PUSHAX
PUSHDX
MOVDX,1;延时1ms
MOVAH,0FFH;星研公司提供的软中断
INT21H
POPDX
POPAX
RET
DLTIMEENDP
IfExitPROCNEAR
PUSHAX
PUSHDX
MOVAH,06H
MOVDL,0FFH
INT21H
POPDX
POPAX
RET
IfExitENDP
InitPCIPROCNEAR
MOVAH,00H
MOVAL,03H
INT10H;清屏
MOVAH,0B1H
MOVAL,01H
INT1AH
CMPAH,0
JZInitPCI2
LEADX,msg0
InitPCI1:
MOVAH,09H
INT21H
JMPExit
InitPCI2:
MOVAH,0B1H
MOVAL,02H
MOVCX,Device_ID
MOVDX,Vendor_ID
MOVSI,0
INT1AH
JNCInitPCI3;是否存在StarPCI9052板卡
LEADX,msg1
JMPInitPCI1
InitPCI3:
MOVDI,PCIBAR3
MOVAH,0B1H
MOVAL,09H
INT1AH;读取该卡PCI9052基地址
JNCInitPCI4
LEADX,msg2
JMPInitPCI1
InitPCI4:
ANDCX,0FFFCH
MOVIO_Bit8_BaseAddress,CX
RET
InitPCIENDP
ModifyAddressPROCNEAR
ADDCTL_ADDR,CX
ADDDATA_ADDR,CX
ADDW_8253_T0,CX
ADDW_8253_C,CX
RET
ModifyAddressENDP
Exit:
MOVAH,4CH
INT21H
ENDSTART
二、双机通信接收机源程序
.MODELTINY
;利用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps
PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32BITRAM板卡上的8237提供基地址)
Vendor_IDEQU10EBH;厂商ID号
Device_IDEQU8376;设备ID号
Receive_BufferEQU3000H
.STACK100
.DATA
CTL_ADDRDW00F1H;控制字或状态字
DATA_ADDRDW00F0H;读写数据
W_8253_T0DW00B0H;计数器0地址
W_8253_CDW00B3H;控制字
IO_Bit8_BaseAddressDW?
msg0DB'BIOS不支持访问PCI$'
msg1DB'找不到StarPCI9052板卡$'
msg2DB'读8位I/O空间基地址时出错$'
ODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP
CALLInitPCI
CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址
CALLINIT_8253
CALLINIT_8251
START1:
MOVCX,10
CALLReceive_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
OUTDX,AL
MOVAL,0
OUTDX,AL
RET
INIT_8253ENDP
INIT_8251PROCNEAR
CALLRESET_8251
MOVDX,CTL_ADDR
MOVAL,7E