微机原理毕业课程设计报告双机通讯.docx
《微机原理毕业课程设计报告双机通讯.docx》由会员分享,可在线阅读,更多相关《微机原理毕业课程设计报告双机通讯.docx(17页珍藏版)》请在冰豆网上搜索。
微机原理毕业课程设计报告双机通讯
(此文档为word格式,下载后您可任意编辑修改!
)
目录
一、设计的目的和意义3
二、设计环境3
三、设计内容和要求3
四、设计的原理3
(一).8251A的基本性能3
(二).8251A的内部结构4
(三).8251A的引脚功能6
(四).8251A的编程8
五、设计方案10
六、源文件代码分析11
中断接收源程序11
PC机双机串行通信源程序15
七、调试过程18
八、运行结果18
九、心得体会19
十、参考文献20
一、设计的目的和意义
设计的目的:
(1)了解串行通信的一般原理和8251A的工作原理。
(2)掌握双机通信的原理和方法。
(3)掌握8251A异步串行时的编程应用。
(4)了解8253的初始化。
(5)巩固和加深在微机原理课程中所学的理论知识。
(6)学会查阅相关手册与资料,培养独立分析与解决问题能力。
(7)为以后的毕业搭建一个微机系统应用平台。
设计的意义:
在信息飞速发展的时代,计算机的应用越来越广泛。
而微机原理是机械工业控制设备的理论基础,学好了就能在找到一份好一点的工作。
理论课程学习是让学生学习基本理论知识,对课程内容和原理有比较深刻的理解,只要从理论上理解,不用考虑实际的可行性。
通过本次课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,不仅需要在理论上能实现而且还要考虑实际的可行性,不能纸上谈兵。
二、设计环境
PC机两台,串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片等。
三、设计内容和要求
设计的内容:
在异步方式下,通过串行接口实现两台计算计之间通信。
设计的要求:
在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。
四、设计的原理
(一).8251A的基本性能
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.提供出错检测
具有奇偶、溢出和帧错误三种校验电路。
(二).8251A的内部结构
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和调制解调器的连接。
(三).8251A的引脚功能
1、8251A和CPU之间的连接信号
8251A和CPU之间的连接信号可以分为四类:
a)片选信号
•:
片选信号,它由CPU的地址信号通过译码后得到。
b)数据信号
D0-D7:
8位,三态,双向数据线,与系统的数据总线相连。
传输CPU对8251的编程命令字和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倍。
•TXD:
发送器时钟输入,用来控制发送字符的速度。
同步方式下,TXC的频率等于字符传输的波特率,异步方式下,TXC的频率可以为字符传输波特率的1倍、16倍或者64倍。
•RXD:
接收器时钟输入,用来控制接收字符的速度,和TXC一样。
在实际使用时,RXC和TXC往往连在一起,由同一个外部时钟来提供,CLK则由另一个频率较高的外部时钟来提供。
•VCC:
电源输入
•GND:
地
(四).8251A的编程
编程的内容包括两大方面:
一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;
二是由8251A向CPU送出的状态字。
1.方式选择控制字(模式字)
方式选择控制字的格式如图所示。
2.操作命令控制字(控制字)
操作命令控制字的格式如下:
3、状态字
状态字的格式如下:
4.8251A的初始化
a)芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。
b)如果模式字中规定了8251A工作在同步模式,
c)由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。
五、设计方案
硬件原理图如图5-1所示
图5-1硬件原理图
8086最小系统原理图(附录一)
双机通信原理图(附录二)
程序流程图如图5-2所示
图5-2收到中断服务程序流程图
主程序流程图如图5-3所示
图5-3主程序流程图
六、源文件代码分析
中断接收源程序
D51EQU208H;8251A数据端口地址
C51EQU209H;8251A控制端口地址
T2EQU202H;8253定时器2端口地址
TCEQU203H;8253控制端口地址
BPSEQU1200;波特率1200
FACEQU16;波特率因子16
DATASEGMENT
MESSDB'LOADADATA',0AH,0DH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
CALLINIT53
CALLINIT51
MOVAX,DATA;显示提示信息
MOVDS,AX
LEADX,MESS
MOVAH,9
INT21H
MOVDX,SEGINTER;设置0AH类型中断向量
MOVDS,DX
MOVDX,OFFSETINTER
MOVAH,25H
MOVAL,0AH
INT21H
CLI
INAL,21H;取消IRQ2的屏蔽位
ANDAL,0FBH
OUT21H,AL
STI
WAIT1:
JMPWAIT1;等中断
INTER:
MOVDX,D51;中断处理
INAL,DX;读入接受的字符
PUSHAX
MOVDL,AL
MOVAH,2;在屏幕上显示接受的字符
INT21H
MOVAL,20H
OUT20H,AL
POPAX
CMPAL,'!
';是结束符吗
JNZNEXT;不是,转NEXT
INAL,21H;是结束符,则屏蔽IRQ2
ORAL,4
OUT21H,AL
POPAX
POPAX
POPAX
STI
MOVAX,4C00H;返回DOS
INT21H
NEXT:
IRET;中断返回
INIT51PROCNEAR;8251A初始化
MOVDX,C51
XORAX,AX
MOVCX,3
L1:
CALLCOUT
LOOPL1
MOVAL,40H
CALLCOUT
MOVAL,4EH;设置模式字,异步模式,8个数据位,一个停止位,波特率因子16
CALLCOUT
MOVAL,24H;设置控制字,启动接收器
CALLCOUT
RET
INIT51ENDP
COUTPROCNEAR
OUTDX,AL
PUSHCX
MOVCX,2
GG:
LOOPGG
POPCX
RET
COUTENDP
INTI53PROCNEAR;初始化8253
MOVDX,0
MOVAX,250
MOVBX,1000
MULBX
MOVBX,BPS
DIVBX;计算定时器2计数初值
MOVBX,FAC
DIVBX
MOVBX,AX
MOVDX,TC
MOVAL,96H;设置8253控制字,工作在方式3,二进制计数
OUTDX,AL
MOVDX,T2;写定时器2的计数初值
MOVAX,BX
OUTDX,AL
RET
INIT53ENDP
CODEENDS
ENDSTART
PC机双机串行通信源程序
D51EQU208H;8251A数据端口地址
C51EQU209H;8251A控制端口地址
T2EQU202H;8253定时器2端口地址
TCEQU203H;8253控制端口地址
BSPEQU1200;波特率1200
FACEQU16;波特率因子16
DATASEGMENT
MESSDB'SEND&LOADADATA',0AH,0DH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
CALLINIT53
CALLINIT51
MOVAX,DATA;显示提示信息
MOVDS,AX
LEADX,MESS
MOVAH,9
INT21H
M0:
MOVAH,1;接收键入字符
INT21H
MOVBL,AL
MOVDX,C51
M1:
INAL,DX;测试状态位TXRDY是否为1
TESTAL,1
JZM1;不为1,继续测试
MOVDX,D51;为1,则从8251A数据口输出数据
MOVAL,BL
OUTDX,AL
CLI
INAL,21H;取消IRQ2的屏蔽位
ANDAL,0FBH
OUT21H,AL
STI
WAI:
JMPWAI;等中断
MOVAX,SI
CMPDL,'!
';判断是否是结束符
JNZM0;不是,转M0
INAL,21H;是结束符,则屏蔽IRQ2
ORAL,4
OUT21H,AL
MOVAX,4C00H
INT21H
INIT51PROCNEAR;8251A初始化
MOVDX,C51
XORAX,AX
MOVCX,3
L1:
CALLCOUT
LOOPL1
MOVAL,40H
CALLCOUT
MOVAL,4EH;设置模式字,异步方式,8个数据位,一个停止位,波特率因子16
CALLCOUT
MOVAL,27H;设置控制字,启动发送器和接收器
CALLCOUT
RET
INIT51ENDP
COUTPROCNEAR
OUTDX,AL
PUSHCX
MOVCX,2
GG:
LOOPGG
POPCX
RET
COUTENDP
INIT53PROCNEAR;初始化8253
MOVDX,0
MOVAX,250
MOVBX,1000
MULBX
MOVBX,BPS
DIVBX;计算定时器2计数初值
MOVBX,FAC
DIVBX
MOVBX,AX
MOVDX,TC
MOVAL,0B6H;设置8253控制字,工作在方式3,二进制计数
OUTDX,AL
MOVDX,T2;写定时器2的计数初值
MOVAX,BX
OUTDX,AL
RET
INIT53ENDP
CODEENDS
ENDSTART
七、调试过程
1.对设计原理图进行电气检查。
主要针对电路连接中的电气连接进行检查,并生成对应电路的网表。
特别是对电路节点的连接检查。
2.对设计的程序进行语法检查。
检查程序中存在的语法错误。
编译连接并下载到芯片中。
3.对设计进行综合调试。
对下载到芯片中的程序进行功能检查。
直到完成设计要求的功能。
八、运行结果
双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。
九、心得体会
学生学习完理论后就要进行课程设计,因为理论课程学习是让学生学习基本理论知识,对课程内容和原理有比较深刻的理解,只要从理论上理解,不用考虑实际的可行性,而课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,不仅需要在理论上能实现而且还要考虑实际的可行性,不能纸上谈兵。
随着科学技术发展的日新日异,微型计算机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握微型计算机的开发技术是十分重要的。
尤其是在现在这个金融危机的时刻,找工作越来越难,只有加强自身的能力才能有一席立足之地。
回顾起此次微机原理课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说8251A芯片的使用,PRETOL软件的应用技巧,对汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
十、参考文献
[1]杨立.微机计算机原理与汇编语言程序设计.第1版.北京:
中国水利水电出版社,2003
[2]周明德.微型计算机系统原理与应用.第5版.清华大学出版社,2008
[3]仇玉章.32位微型计算机原理与接口技术.清华大学出版社,2003
附录一
附录二