微机原理与接口技术 单机串口通讯课程设计.docx
- 文档编号:9037201
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:19
- 大小:152.26KB
微机原理与接口技术 单机串口通讯课程设计.docx
《微机原理与接口技术 单机串口通讯课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术 单机串口通讯课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术单机串口通讯课程设计
课程设计任务书
学生姓名:
方洪专业班级:
自动化0906班
指导教师:
徐腊梅工作单位:
自动化学院
题目:
单机串口通讯
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
单台主机实现串口通讯,自发自收。
要求实时显示传送或者接受的数据。
采用异步方式,CPU和8251之间采用查询方式交换数据。
端口地址是:
命令、状态口3F9,数据口3F8。
时间安排:
1月4日-----1月5日查阅资料及方案设计
1月5日-----1月7日编程
1月7日-----1月8日调试程序
1月8日-----1月9日撰写课程设计报告
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
21世纪是一个信息化步伐日益加快的时代,计算机已经成为生活中不可或缺的一种工具,所以人与计算机之间的互动成为一项新的课题,与此同时,各种计算机程序设计语言像雨后春笋般迅速成长,有的在信息化发展过程被淘汰,有的则成为经典的工具,而汇编程序设计语言就是在信息化大潮中生存下来的一门程序设计语言,可见汇编语言的历史地位,虽然汇编语言相对于C程序设计语言来说指令复杂、不易阅读,但是也具有代码简洁的有点,于C语言相比各自适用的领域不同,有点也不尽相同。
本次课程设计需要利用汇编语言编程实现单机串口通信,采用异步方式传输,实时显示传送或者接受的数据,实现自发自收的功能。
因为程序涉及到我们并不十分熟悉的汇编语言,所以我们要查阅资料,而且必须绘制8251A硬件的连接图从而才能实现本次设计。
关键词:
汇编语言、C语言、8251A串行接口芯片
单机串口通讯
1题目及其要求
单台主机实现串口通讯,自发自收。
要求实时显示传送或者接受的数据。
采用异步方式,CPU和8251之间采用查询方式交换数据。
端口地址是:
命令、状态口3F9,数据口3F8。
2串口通信原理
串行通信——指只需一条数据线便可进行数据传送,数据的各位是按规定
顺序一位一位传送的通信方式。
其特点传输线简单,可利用多种介质,适用于远距离通信,成本较低;但速度较慢。
串行通信又分为两种方式,同步串行通信方式和异步串行通信方式。
计算机
计算机或外设
图1通信方式
2.1异步串行方式
所谓异步串行通信是指发送和接收两地不用同一时钟同步的数据传输方式。
一般以若干位表示一个字符,收发以字符为独立的通信单位,每个字符出现的时间是任意的。
为了保证异步通信的正确,必须在收发双方通信前约定字符格式、传送速率、时钟和校验方式等。
异步通信中,发送端和接收端各用一个时钟来确定发送和接收的速率,分别称为发送时钟和接收时钟。
发送时在传送的字符后自动在奇偶校验位置上添加1或0,使得字符1的个数(包括校验位)为偶数(偶校验)或奇数(奇校验);而接收时,要检查所接收的字符及其校验位是否符合规定,若不符合规定就置出错标志,供CPU查询处理。
一般情况,在异步通信中使用偶校验,而在同步通信中使用奇校验。
2.2同步串行方式
所谓同步串行方式是指,以一组字符组成一个数据块(或称信息帧),在每一个数据块前附加一个或两个同步字符或标识符,在传送过程中发送端和接收端使用同一时钟信号进行控制使每一位数据均保持位同步的一种传输方式。
同步传送速度高于异步传送,传送效率高;但同步传送要求发送端和接收端使用同一时钟,故硬件电路比较复杂。
2.2.1字符格式——字符的编码形式及规定
每个串行字符由以下4部分组成:
起始位(1位,低电平);
数据位(5~8位);
奇偶校验位(1位);
停止位(1、1.5或2位,高电平)
2.3串行接口芯片8251A
2.3.18251A的基本性能
①通过编程,8251A可以工作在同步方式,波特率0~64K,也可以工作在异步方式,波特率0~19.2K。
②同步方式下可以用5~8位来表示字符,允许增加1位奇偶校验位,能自动检测同步字符,实现收发同步。
③异步方式下用5~8位来表示字符,1位可选的奇偶校验位,1位启动位,根据需要可设置1、1.5或2位停止位。
④全双工、双缓冲的发送器和接收器。
⑤具有奇偶、溢出和帧错误检测功能。
⑥与Intel8080、8085、8086、8088CPU兼容。
2.3.28251A的内部结构
①I/O缓冲器:
将8251A与系统数据总线相连,包含3个8位缓冲寄存器:
②发送数据/命令缓冲器:
接受CPU输出的数据或命令;
③接收数据缓冲器:
暂存接收器送来的数据;
④状态缓冲器:
寄存8251A的各种状态信息。
⑤读/写控制电路:
接收来自CPU的控制信号和控制字,译码后向8251A各功能部件发出有关的控制信号,因此它实际上是8251A的内部控制器。
⑥Modem控制电路:
用以控制825lA与调制解调器之间的信息传送。
图28251A内部结构图
2.3.38251A的引脚功能
①数据线D7~D0——双向、三态,用于与CPU传送数据、命令、状态等信息。
②片选CS——用于芯片寻址。
③读写控制RD,WR。
④控制/数据选择信号(输入)。
⑤C/D(A0)RDWR功能
001CPU从8251A输入数据
010CPU向8251A输出数据
101CPU读8251A的状态
110CPU向8251A写控制命令
注意:
8251A使用前必须进行初始化,以确定工作方式、传送速率、字符格式以及停止位长度等;改变8251A的工作方式时必须再次进行初始化编程。
2.3.48251A工作方式控制字说明
字符长度
00:
5位
01:
6位
10:
7位
11:
8位
波特率系数
00:
同步方式
01:
异步X1
10:
异步X16
11:
异步X64
奇偶校验
X0:
无校验
01:
奇校验
11:
偶校验
SYN?
同步控制
X0:
内同步
X1:
外同步
0X:
两同步字符
1X:
单同步字符
Y
帧控制
00:
不确定
01:
1停止位
10:
1.5停止位
11:
2停止位
N
图3方式控制字格式
2.3.58251A操作命令控制字格式说明
发送允许
0:
屏蔽
1:
允许
接收允许
0:
屏蔽
1:
允许
数据终端准备好
1:
迫使DTR输出低
送中止字符
1:
迫使TXD输出低
0:
正常工作
错误标志复位
1:
全部错误标志复位
请求发送
1:
迫使RTS输出低
内部复位
1:
返回方式指令格式
外部搜索方式
1:
启动搜索同步字符
图4操作命令控制字格式
2.3.68251A状态字格式说明
与引脚
TXRDY
有差别
奇偶错误
溢出错误
帧错误(仅异步)
与8251的同名引脚同定义
图5状态字格式
3算法分析
3.1原理分析
①应该注意题目要求8251A的控制口地址为3F9H,数据口地址为3F8H。
另外,使8253的CS#接I/O地址3F0H—3F6H,本题使用通道2,则通道2的地址为3F4H,控制口为3F6H。
②分析8253通道2的工作方式。
由于通道2的输出是时钟信号,要产生输出方波OUT2用作8251A的收/发时钟RXC/TXC,因此通道0应工作在方式3下,其功能就是对8253的输入时钟频率1MHz的信号进行分频。
本题选择波特率为1200,波特率因子选择16,因此,OUT0输出的方波信号频率为
f=1200×16=19.2(kHz)
所以计数常数为N=1000/19.2=52
③在8251A硬件连接中应注意RXD和TXD应连在一起使8251A工作于自发自收方式。
另外,CTS#必须接低电平,以保证8251A准许向外发送信号。
题目要求主机发送和接收数据均采用查询方式,利用查询方式进行串口通讯的基本思路是:
CPU循环从8253A的控制口读取状态字,根据状态字的相关位的值来判定是否接收或发送。
4为了使信息被可靠的写入8251A的控制端口或数据端口,在使用OUT指
令向8251A写入信息时,要有一定的时间延迟。
在对8251A初始化编程以前,首先应使8251A复位。
5在此讨论一下8251A的初始化操作。
对8251A进行初始化编程,必
须在系统复位之后(因为,RESET会使收发管脚处于空闲状态,各寄存器均处于复位状态)。
编程过程如下:
先使用方式选择控制字,如果定义8251A工作在异步方式下,那么必须紧跟操作命令字进行定义,然后才可以开始传输数据。
在数据传输过程中,可以使用操作命令字重新定义,或使用状态控制字读入8251A的状态。
如果要设定新的工作方式,必须用操作命令控制字将IR位置1,使其返回到方式选择控制字,接收新的方式选择命令,从而改变工作方式。
根据本题的要求,8251A的方式选择控制字为01001110B(4EH),表示异步方式,波特率因子为16,字符长度为8位,不带奇偶校验,1位停止位。
操作命令控制字用了两个,一是8251A复位,即控制字为0001000B(40H),使全部错误标志复位;二是启动8251A接收和发送,其控制字为00010101B(45H)。
⑥虽然在8251A上电时,RESET信号可以使8251A进入复位状态,但在实际使用时,为了使8251A可靠复位,我们常在初始化程序前用软件再次让8251A进行复位操作。
具体实现过程是先向8251A的控制口连续写入3个0,然后再写入复位控制字40H。
由于8251A内部操作需要一定的时间,所以写入操作后还要有一定的延迟。
78253的控制字选择为10110110B,即是说,8253选择通道2,读写方式为读写16位,选择工作方式3,二进制技术制。
另外,还需给8253赋计数初值为52。
⑧了解DOS功能调用。
DOS功能调用号送到AH寄存器;如果需要,按要求给定输入参数;写入中断指令“INT21H”。
8251A的3个控制字,即方式选择控制字,操作命令控制字,状态控制字的格式分别如图1,图2,图3。
初始化的编程流程图见图4所示。
3.2程序分析
3.2.18251A初始化流程图
因为8251A使用前必须进行初始化,以确定工作方式、传送速率、字符格式以及停止位长度等;改变8251A的工作方式时必须再次进行初始化编程。
图68251A初始化编程及数据传送流程图
3.2.2程序设计流程图
依照题目要求,可以设计如下的流程图图7。
开始
8253初始化
8251A复位
8251A初始化
8251A控制口读状态字
从键盘接收一个字符
通过8251A数据口发送字符
从8251A控制口读状态字
TXRDY为1吗
是ESC键吗?
RXRDY为1吗
将接收到字符显示在屏幕上
从8251A数据口接收数据
结束
N
Y
N
Y
Y
N
图7程序设计流程图
4硬件接线图
4.1一般的8086CPU与8251A的硬件接线图
与CPU相连的信号有片选信号CS#,数据信号D0—D7,读写控制信号RD#和WR#以及收发联络信号。
与外设相连的信号包括收发联络信号和数据信号。
其他的还包括有时钟信号,电源和地。
画出8086和8251A连接的一般接线图如图6所示。
图78086CPU与8251的连接
4.2单机串口通讯硬件接线图
根据题目要求,产生的8251A数据口地址为3F8H,控制口地址为3F9H。
使用74LS138得到此地址。
另外,使用74LS138产生8253的端口地址为3F0H—3F6H。
其具体的接线图见图7所示。
图7双机硬件接线图
5软件设计
程序设计如下:
DATA51EQU3F8H;8251A数据口
CTR151EQU3F9H;8251A命令/状态口
TIMER2EQU3F4H;8253的2号计数器端口
TIMCTLEQU3F6H;8253命令口
DATASEGMENT
MES1DB'YOUCANPLAYAKEYONTHEKEYBORD',0DH,0AH,24H;提示信息
MES2DDMES1
DATAENDS
CODESEGMENT
ASSUMECS:
CODE;DS:
DATA
CHAROUTPROCNEAR;送数子程序
OUTDX,AL
PUSHCX
MOVCX,40H
GG:
LOOPGG;延时
POPCX
RET;返回
CHAROUTENDP
START:
MOVAX,DATA
MOVDS,AX
MOVDX,TIMCTL;8253初始化
MOVAL,10110110B;写入8253控制字
OUTDX,AL
MOVDX,TIMER2;写入计数常数
MOVAL,0
OUTDX,AL
MOVAL,52;给8253计数器送初值
OUTDX,AL
MOVDX,CTR151;8251A控制口
XORAX,AX;空操作
MOVCX,03;向8251A控制端口送3个0
CALLCHAROUT;送数子程
LL:
LOOPLL
MOVAL,40H;送8251A复位控制字
CALLCHAROUT
MOVAL,4EH;送8251A方式控制字
CALLCHAROUT
MOVAL,45H;8251A工作命令,允许发送与接收
CALLCHAROUT
LDSDX,MES2;屏幕显示字符串
MOVAH,09
INT21H
CHECKKEY:
MOVDX,CTR151;按键发送
INAL,DX
TESTAL,01;检测发送是否准备好
JZCHECKKEY;未好,继续检测
MOVAH,01;准备好,从键盘读一字符
INT21H
CMPAL,27;若为ESC,则结束
JZEXIT
MOVDX,DATA51
OUTDX,AL;发送
MOVCX,40H
S51:
LOOPS51;延时
NEXT:
MOVDX,CTR151;接收
INAL,DX
TESTAL,2;检测接收是否准备好
JZNEXT;未好,继续检测
MOVDX,DATA51
INAL,DX;准备好,接收
MOVDL,AL
MOVAH,02;将接收到得字符显示在屏幕上
INT21H
JMPCHECKKEY
EXIT:
MOVAH,4CH;退出
INT21H
CODEENDS
ENDSTART
在以上程序中使用的DOS功能调用说明如下所示:
1.键盘输入并显示(1号功能调用)
格式:
MOVAH,01H
INT21H
功能:
按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。
2.屏幕显示一个字符(2号功能调用)
格式:
MOVDL,'字符'
MOVAH,02H
INT21H
功能:
将置入DL寄存器中的字符在屏幕上显示输出。
3.屏幕显示字符串(9号功能调用)
格式:
MOVDX,字符串的偏移地址
MOVAH,09H
NT21H
功能:
在屏幕上显示字符串。
6调试中遇到的问题
在第一次调试的时候遇到了以下问题。
经检查是TIMER用错了,在数据段中定义的是TIMER2,而不是TIMER。
经改正后再次运行,又发现下个问题:
发现是TEXT写错了,应是TEST。
改正后在运行没有错误,弹出如下DOS界面:
因为涉及到硬件,因此无法再次往下调试。
7.小结与体会
虽然此次课程设计的时间减少了,而且其中穿插着考试,使得此次课程的难度进一步增加,但是尽管如此,通过本次课程设计,我对于微机原理与接口技术这门课程的了解依然更加深入了,对于初学汇编语言的我们来说,想要实现题目所要求的功能依然是一件十分困难的事情,所以我们不断的翻阅资料以及借鉴往届同学的程序使自己可以顺利的完成这份报告,在设计过程中,对于原理的分析是本次设计的重点,通过查阅资料了解串行接口芯片8251A的结构和功能,从而可以顺利完成后面的设计,在程序设计中发现汇编语言相对于我们熟悉的C语言程序设计语言来说是一种指令较为繁杂、不易阅读但是任然是一种强大的语言,熟悉汇编之后我们会渐渐发现,相比C语言而言,运用汇编程序设计语言的代码明显缩短,使得程序更加精简。
通过本次课程设计我们也知道了微机原理接口计数脱离课本的实际作用,通过现实的仿真我们知道了汇编语言在机器语言中无可替代的作用,使得我们更加重视这种程序设计语言,这也为以后的学习和工作打下基础。
课程设计的体会实在一言难尽,但是无可置疑的是我们在课程设计中学会思考、分析、创新,收获丰富。
参考文献
[1]杨斌.微机系统及其接口设计原理.成都:
西南交通大学出版社.2006年2月.
[2]王钰.微型计算机原理学习与实验指导.西安:
西安电子科技大学出版社.2004年4月.
[3]温阳东.微机原理与接口实用教程.北京:
清华大学出版社.2008年5月.
[4]黄海萍.汇编语言与微机接口技术实验教程.北京:
国防工业出版社.2007年1月.
[5]周佩玲.微机原理与接口技术(基于16位机).北京:
电子工业出版社2007年6月.
本科生课程设计成绩评定表
姓名
性别
专业、班级
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
评定项目
评分成绩
1.选题合理、目的明确(10分)
2.设计方案正确、具有可行性、创新性(20分)
3.设计结果(20分)
4.态度认真、学习刻苦、遵守纪律(15分)
5.设计报告的规范化、参考文献充分(不少于5篇)(10分)
6.答辩(25分)
总分
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 单机串口通讯课程设计 微机 原理 接口 技术 单机 串口 通讯 课程设计