微机原理串口通信课程设计概要.docx

上传人:b****4 文档编号:1454033 上传时间:2022-10-22 格式:DOCX 页数:13 大小:179.38KB
下载 相关 举报
微机原理串口通信课程设计概要.docx_第1页
第1页 / 共13页
微机原理串口通信课程设计概要.docx_第2页
第2页 / 共13页
微机原理串口通信课程设计概要.docx_第3页
第3页 / 共13页
微机原理串口通信课程设计概要.docx_第4页
第4页 / 共13页
微机原理串口通信课程设计概要.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机原理串口通信课程设计概要.docx

《微机原理串口通信课程设计概要.docx》由会员分享,可在线阅读,更多相关《微机原理串口通信课程设计概要.docx(13页珍藏版)》请在冰豆网上搜索。

微机原理串口通信课程设计概要.docx

微机原理串口通信课程设计概要

1基础理论知识

1.1通信的方式

通信的基本方式可以分为并行通信和串行通信两种。

串行通信时数据用一根传输线逐为顺序传送。

并行通信和串行通信是CPU与外部设备之间进行信息交换的基本方法。

采用并行通信时,构成一个字符或数据的各位同时传送,每一位都占用一条通信线,另外还需要联络以保证和外围设备协调地工作,它具有较高的传输速度。

但由于在长线上驱动和接收信号较困难,驱动和接收电路较复杂,因此并行通信的传输距离受到限制,这种通信方式多用于计算机内部,或者作为计算机与近距离外围设备传输信息用。

1.2串行通信

串行通信分为两种类型:

串行异步通信和串行同步通信。

串行异步通信是指通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。

同步通信时指在约定的数据通信数率下,发送方和接收方的时钟信号频率和相位始终保持一致,通信双方发送数据和接收数据具有完全一致的定时关系。

串行通信的数据传输方式分为单工传送,半双工传送,全双工传送。

单工传送:

单工传送时指在通信时只能由一方发送数据,另一方接收数据的通信方式。

半双工传送:

指在通信时双方都能够接收或者发送,但是不能够同时接收和发送的通信方式。

全双工传送:

通信双方之间有两条通路,发送信息和接收信息可以同时进行。

 

2串口通信芯片8250

2.18250的内部结构

INS8250是通用异步收发器UART,用作异步通信接口电路。

INS8250的引脚信号基本上可以分为两大类:

与CPU系统总线相连的信号线和与通信设备MODEM连接的信号线

 

2.28251的内部寄存器及其编程方法

在微机中用可编程芯片8250来实现串行通信。

由于8250的引脚较多,在此就不列出了,仅列出它的几个寄存器,因为在编写串行通信程序时要使用这些寄存器。

2.2.1波特率因子寄存器(DLL/DLH)

8250芯片规定当线路控制寄存器写入D7=1时,接着对口地址3F8H、3F9H可分别写入波特率因子的低字节和高字节,即写入除数寄存器(L)和除数寄存器(H)中。

而波特率为1.8432MHZ/(波特率因子╳16),波特率和除数对照表见下表:

十进制

十六进制

波特率

1047

417

110

768

300

100

384

180

300

192

C0

600

96

60

1200

48

30

2400

24

18

4800

12

C

9600

2.2.2通信线路控制寄存器(LCR)(3FBH)

该寄存器规定了异步串行通信的数据格式。

各位含义如下:

D7

D6

D5

D4

D3

D2

D1

D0

DLAB

SB

SP

EPS

PEN

STB

WLS1

WLS0

其中:

D1~D0是字长。

它们的取值和对应的字长如下表:

00

5位

01

6位

10

7位

11

8位

 

D2是停止位。

它的取值和对应的停止位如下表:

0

1位

1

15位(数据位5位)

2位(数据位6、7、8位)

D3说明是否允许奇偶校验。

如果为0无奇偶校验,如果为1允许奇偶校验。

D4说明是奇校验还是偶校验。

如果为0是奇校验,如果为1是偶校验。

这一位起作用的前题是D3为1。

D5说明是否有附加奇偶校验位。

如果为0无附加奇偶校验位,如果为1有附加奇偶校验位。

D6如果为0正常,如果为1发空缺位。

D7如果为0允许访问接收、发送数据寄存器或中断允许寄存器。

如果为0允许访问波特率因子寄存器。

通信线路控制寄存器LCR主要用来指定异步通信数据格式,即字符长度、停止位位数、奇偶校验。

LCR的控制字如下

2.2.3通信线路状态寄存器(3FDH)

该寄存器向CPU提供有关数据传输的状态信息,各位含义如下:

D7

D6

D5

D4

D3

D2

D1

D0

0

TSRE

THRE

BT

FE

PE

OE

DR

D0:

DR,接收数据就绪D1:

OE,数据重叠错D2:

PE,数据奇偶错

D3:

FE,缺少正确停止位D4:

BI,接收空缺位D5:

THRE,发送保持器空

D6:

TSRE,发送移位寄存器空

读入时各数据位等于1有效,读入操作后各位均复位。

除D6位外,其它位还可被CPU写入,同样可产生中断请求。

 

2.2.4中断允许寄存器(3F9H)

该寄存器允许8250四种类型中断(相应位置1)并通过IRQ4向8088CPU发中断请求。

各位含义如下:

D7

D6

D5

D4

D3

D2

D1

D0

0

0

0

0

EMSI

ELSI

ETBEI

ERBFI

D0:

为1允许接收缓冲区满中断

D1:

为1允许发送保持器空中断

D2:

为1允许接收数据出错中断

D3:

为1允许Modem状态改变中断

2.2.5中断识别寄存器(3FAH)

为了具体识别时哪种事件引起的中断,直到该中断请求被CPU响应并服务之后,才能接收其他的中断请求。

该寄存器为只读寄存器,内容格式为

D7

D6

D5

D4

D3

D2

D1

D0

0

0

0

0

0

ID2

ID1

IP

2.2.6调制解调控制寄存器(3FCH)

MODEM控制寄存器用来设置对MODEM的联络控制信号和芯片自检,寄存器的各位定义

D7

D6

D5

D4

D3

D2

D1

D0

0

0

0

LOOP

OUT2

OUT1

RTS

DTR

D0:

DTR=1,数据终端就绪,输出端DTR为低电平

D1:

RTS=1,请求发送,输出端RTS为低电平

D2:

OUT1=1,用户指令输出,输出端OUT1为低电平

D3:

OUT2=1,输出端OUT2为低电平,允许发送IRQ4中断请求

D4:

循环(自诊断用)=1,发送数据立即被接收,可用于自检

2.2.7MODEM状态寄存器(3FEH)

Modem状态寄存器用来检测和记录来自Modem的联络信号及其状态变化。

此寄存器的各位定义为:

D7

D6

D5

D4

D3

D2

D1

D0

RLSD

RI

DSR

CTS

△RLSD

△RI

△DSR

△CTS

2.2.8发送保持寄存器和接收缓冲寄存器(3F8H)

发送时,CPU首先将待发送的字符写到8250的发送保持寄存器THR中,然后进入发送移位寄存器,在发送始终的作用下,从SOUT引脚输出。

一旦THR的内容送到发送移位寄存器TSR后,THR就变空,同时将LSR的THRE位置“1”,产生中断请求,要求CPU发送下一个字符。

CPU向THR写入下一个字符后,THRE位自动清“0”。

如此重复,直到全部数据发送完毕。

接收时,串行数据在接收时钟的作用下,从SIN引脚先输入到移位寄存器RSR,然后由RSR并行输入到接收缓冲寄存器RBR,一旦RBR变满,将LSR的DR位置“1”,产生中断请求,要求CPU读取数据字符。

CPU从RBR读取该字符后,DR位自动清“0”。

如此重复,直到所有的数据接收完毕。

2.38250的各寄存器的地址

寄存器

COM1端口下的地址

COM2端口下的地址

发送保持寄存器(THR)

3F8H

2F8H

接收数据寄存器(RBR)

3F8H

2F8H

低字节波特率因子(设置工作方式控制字D7=1)(LSB)

3F8H

2F8H

高字节波特率因子(设置工作方式控制字D7=1)(MSB)

3F9H1

2F9H1

中断允许寄存器(IER)

3F9H

2F9H

中断识别寄存器(IIR)

3FAH

2FAH

线路控制寄存器(LCR)

3FBH

2FBH

MODEM控制寄存器(MCR)

3FCH

2FCH

线路状态寄存器(LSR)

3FDH

2FDH

MODEM状态寄存器(MSR)

3FEH

2FEH

3程序设计

3.1程序设计思路

根据设计要求,要实现通过串口进行通信,就必须有一个发送端和一个接收端,因此要编写两个程序,在发送端编写发送程序,在接受端编写接收程序。

发送PC机和接收PC机通过RS-232C的3根信号线(TXD、RXD、GND)进行相连。

我决定采用查询方式编写发送程序和接收程序。

编写发送程序的时候,首先要初始化段寄存器,设置发送缓冲区指针。

然后初始化8250,通过初始化8250来设置串口的参数。

再根据线路状态寄存器的内容,测试发送保持寄存器是否为空,如果不为空,继续读线状态寄存器的内容,判断发送保持寄存器是否为空,如果为空的话,读取按键字符并显示和发送它。

我事先规定当输入某一个字符的时候发送结束,这时候我就要判断按键是否为该字符,是该字符的时候结束程序。

编写接收程序的时候首先要设置接收缓冲区,设置接收错信息,初始段寄存器,设置接收缓冲寄存器地址指针然后初始化8250,初始设置和接收端的保持一置。

以上完成后开始接收,在屏幕上显示接收开始。

然后读线状态寄存器,判断是否接收错,在屏幕上显示接收错误,继续读线状态寄存器,如果接收无误,则测试接收数据是否准备好了,为准备好则循环测试,准备好了则接收字符。

判断接收的字符是否为规定的结束字符,如果是结束程序,如果不是显示字符。

两台机器的连接图如下。

3.2程序流程图

3.2.1发送端程序流程图

3.2.2接收端的程序流程图

3.3具体的程序

3.3.1发送端的程序代码

STACKSEGMENTPARASTACK'STACK'

DB200DUP(0)

STACKENDS

DATASEGMENT

DISPDB'TRANSMISSIONSTART:

',0AH,0DH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVDX,3FBH;置DLAB=1

MOVAL,80H

OUTDX,AL

MOVDX,3F8H;置波特率因子寄存器

MOVAL,0CH;波特率因子低字节

OUTDX,AL

MOVDX,3F9H

MOVAL,0;波特率因子高字节

OUTDX,AL

MOVDX,3FBH;置线路控制寄存器

MOVAL,03H;数据位8位,停止位1位、无校验

OUTDX,AL

MOVDX,3FCH;置MODEM控制寄存器

MOVAL,02H;禁止中断

OUTDX,AL

MOVDX,3F9H;置中断允许寄存器

MOVAL,0;屏蔽所有中断

OUTDX,AL

MOVDX,OFFSETDISP;显示发送提示信息

MOVAH,9

INT21H

LO0P:

MOVDX,3FDH;读线路状态寄存器

INAL,DX

TESTAL,20H;测试发送保持寄存器

JZL0OP;不空,则循环测试

MOVAH,1;读取按键字符并显示

INT21H

MOVDX,3F8H;发送该字符

OUTDX,AL

CMPAL,’P’;判断按下的字符是否为P

JZOVER;是,则结束

JMPLOP;不是继续循环

OVER:

MOVAH,4CH;返回DOS

INT21H

CODEENDS

END

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

当前位置:首页 > 高中教育 > 语文

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

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