计算机系统的通信实验.docx

上传人:b****8 文档编号:10298696 上传时间:2023-02-09 格式:DOCX 页数:18 大小:78.53KB
下载 相关 举报
计算机系统的通信实验.docx_第1页
第1页 / 共18页
计算机系统的通信实验.docx_第2页
第2页 / 共18页
计算机系统的通信实验.docx_第3页
第3页 / 共18页
计算机系统的通信实验.docx_第4页
第4页 / 共18页
计算机系统的通信实验.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

计算机系统的通信实验.docx

《计算机系统的通信实验.docx》由会员分享,可在线阅读,更多相关《计算机系统的通信实验.docx(18页珍藏版)》请在冰豆网上搜索。

计算机系统的通信实验.docx

计算机系统的通信实验

计算机系统的通信实验

一.目的:

了解计算机间的数据通信的基本技术;

了解RS─232C的结构及使用方法。

RS----232C9芯连接器插针定义如下:

1保护地1

2发送数据TXD2

3接收数据RXD3

4请求发送RTS4

5准允发送CTS5

6数据装置准备好DSR6

20数据终端准备好DTR20

8载波检测CD8

7信号地7

 

二.使用设备:

带有RS─232C通信接口的微型计算器及一根多芯电缆。

三.8250异步串行接口:

8250的逻辑框图如下:

内部总线路SIN

接收数据寄存器移位寄存器

数据总线

线控制寄存器接收定时CLK

和控制

分频寄存器(L)波特率

地址分频寄存器(H)产生器

总线

址发送定时

选线状态寄存器和控制

择SOUT

控制线等发送保持寄存器移位寄存器

制Moden控制寄存器ModenRTSCTS

逻控制DTRDSR

辑逻辑RIOUT1

Moden状态寄存器OUT2RLSD

中断允许寄存器中断控INTRPT

制逻辑

中断标识寄存器

四8250应用程序举例

(一).查询方式

1.要求:

任何从键盘上输入的信息,一方面显示在CRT上,另一方面从串行接口输出;任何从串行接口输入的信息都将在CRT上显示出来;在键盘上输入“Esc”键时,则退出程序运行。

(1)收发处理程序

测线路状态寄存器(3FDH)的值以判通信接口处于发送或接收就绪状态。

举例如下:

REPEAT:

MOVDX,3FDH

INAL,DX

TESTAL,01H

JNZRECEIV

TESTAL,20H

JZREPEAT

.

.

.

MOVDX,3F8H;发送字符

OUTDX,AL

JMPREPEAT

RECEIV:

MOVDX,3F8H;接收字符

INAL,DX

.

.

.

JMPREPEAT

(2)键盘输入程序举例

MOVAH,01H

INT16H

JZREPEAT

MOVAH,00H

INT16H

CMPAL,27

JZRE

.

.

.

JMPREPEAT

RE:

RET

(3)显示通信字符举例

PUSHAX

PUSHBX

MOVBL,00H

MOVAH,0EH

INT10H

POPBX

POPAX

2.程序的流程图如下:

波特率、数据位数、校

验位、停止位的初始化

Modem控制寄存器初始化,

使DTR、RTS有效,输出

反馈输入

 

线状态寄存器→AL

Y

显示“?

”接收有错?

NY

接收数据准备好?

NN

发送保持寄存器空?

输入字符代码入AL

YY

键盘缓冲区空?

调BIOS子程序显示

NN

从键盘缓冲区取出字符输出是回车字符?

Y

显示换行

 

3.程序清单:

ATASEGMENT

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVDX,3FBH

MOVAL,80H

OUTDX,AL;线控制寄存器设置波特率

MOVDX,3F8H

MOVAL,0C0H

OUTDX,AL;600波特率的分频器L

MOVDX,3F9H

MOVAL,00H

OUTDX,AL;600波特率的分频器H

MOVDX,3FBH

MOVAL,1BH

OUTDX,AL;8位偶校验

MOVDX,3FCH

MOVAL,03H

OUTDX,AL;MODEM控制器初始化

MOVDX,3F9H

MOVAL,00H

OUTDX,AL;中断允许寄存器初始化

REPEAT:

MOVDX,3FDH

INAL,DX

TESTAL,01H;检测是否可以接收数据

JNZRECEIVE

TESTAL,20H;检测是否可以发送数据

JZREPEAT;如果不可以接收和发送数据,则重新执行REPEAT

MOVAH,01H;键盘是否有按键

INT16H

JZREPEAT

MOVAH,00H

INT16H

CMPAL,27

JZRE

MOVDX,3F8H

OUTDX,AL;发送数据

PUSHAX

PUSHBX

MOVBL,00H

MOVAH,0EH

INT10H;显示一个通信字符

POPBX

POPAX

JMPREPEAT

RECEIVE:

MOVDX,3F8H

INAL,DX;接收数据

PUSHAX

PUSHBX

MOVBL,00H

MOVAH,0EH

INT10H;显示一个通信字符

POPBX

POPAX

JMPREPEAT

RE:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

JMPREPEAT

(二).中断方式

1.要求:

使用IBMPC串口1,编制一个简易的仿终端程序,其功能如下:

当按键时,将该键的ASCII码送串口输出,并将从串口1收到的字符送显示器显示,假设接收用中断方式,发送用程序查询方式。

并设串口参数为:

8位数据位,无效验,2位停止位,波特率为9600BIT/S。

2.8259A中断控制器

在IBMPC微机系统中,8088管理三类中断:

(1)内部中断,即软中断,包括由PSW的状态标志所产生的溢出中断,陷阱中断。

(2)非屏蔽中断NMI,外部中断产生。

(3)可屏蔽中断INTR,由8级外部中断产生。

8259A是一种可编程的中断控制器芯片,每片8259A可以管理8级优先级中断。

8259A的中断管理功能如下:

●记录各级中断源的中断请求;

●判优,确定是否应该响应和响应哪一级中断请求;

●响应中断时,向CPU传送中断类型号。

8259A所管理的8个中断源的类型号为8----0FH

 

中断优先级中断源中断类型码

IRQ0电子钟时间基准08H

IRQ1键盘09H

IRQ2为用户保留的中断0AH

IRQ3异步通信(COM2)0BH

IRQ4异步通信(COM1)0CH

IRQ5硬盘0DH

IRQ6软磁盘0EH

IRQ7并行打印机0FH

IBMPC系统板上的8259A占有两个端口地址:

20H,21H。

2.可屏蔽中断传送数据的全过程:

(1)主程序为中断传送作准备

A.系统初始化中布置8259A以及其他接口

将IBMPC系统板上的8259A布置为单级,缓冲,普通非指定EOI方式。

IBMPC系统板上的8259A的初始化程序段在ROMBIOS中。

B.应用程序进行的初始化

包括将中断服务程序首址的偏移和段值填入中断向量表相应类型号位置。

开放8259A对应中断(IRQ4),有关编程接口的布置,等等。

应强调,初始化布置必须在关中断条件下进行。

例:

开放IRQ4:

INAL,21H

ANDAL,0EFH

OUT21H,AL

设置中断向量:

CLI;关中断

MOVAX,00

MOVES,AX

MOVDI,4*12

MOVAX,OFFSETRINT

CLD;在串操作时,使地址增量

STOSW;将AX的内容传送到由DI作为指针的目的串中

MOVAX,CS

STOSW

串操作指令:

SI寻址源操作数,现行段在DS中

DI寻址目的操作数,现行段在ES中

或:

用DOS系统功能调用(INT21H)

DS:

DX=中断向量

AL=中断类型号

AH=25H

MOVDX,OFFSETRINT

MOVAX,SEGRINT

MOVDS,AX

MOVAL,0CH;COM1的中断类型码

MOVAH,25H

INT21H

(2)中断申请

当外设准备好数据,则向8259A提出中断申请。

8259A将新申请的中断和正在服务的中断进行比较判优。

假设新的中断请求最优,则8259A就通过INTR引脚向CPU申请中断。

(3)响应中断

8088在执行当前指令的最后一时钟周期,检测INTR,如果为“1”,在标志寄存器中断使能位IF为1并且在没有NMI请求的条件下,下一个时钟周期进入INTR中断响应周期。

第一个中断响应周期,主8259A向从8259A送选择码。

IBMPC为单级,无此操作。

第二个中断响应周期,8088CPU接收8259A送来的向量号N,此外还做一系列内部操作:

1.标志寄存器压栈保存。

2.将断点的段值和偏移值压栈保存。

3.将标志寄存器的中断允许位IF和单步标志位TF复位。

4.将存储器4N字单元内容送IP,4N+2字单元内容送CS。

然后转到CS:

IP去执行,即转到中断服务程序首址去执行。

应该强调的是上述中断响应的操作是直接由CPU硬件逻辑完成的,而不是由程序完成的。

3.程序框图如下:

 

主程序中断程序

初始化开中断,保护现场

否是否是

按键否?

线路状态错否?

否是

发送寄存器空?

接收字符放缓冲区

否是

键码送串口输出缓冲区满否?

否是

ELFLAG=“1”?

置BFFLAG

 

显示线路错置ELFLAG

否是

BFFLAG=“1”?

发EOI

 

显示缓冲区满恢复现场

否是

缓冲区有字符吗?

返回

 

取字符显示

4中断程序清单:

DATASEGMENT

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVDX,3FBH

MOVAL,80H

OUTDX,AL;线控制寄存器设置波特率

MOVDX,3F8H

MOVAL,0CH

OUTDX,AL;9600波特率的分频器L

MOVDX,3F9H

MOVAL,00H

OUTDX,AL;9600波特率的分频器H

MOVAL,07H

OUTDX,AL;8位无校验,2位停止

MOVDX,3FCH

MOVAL,0BH

OUTDX,AL;MODEM控制器初始化

MOVDX,3F9H

MOVAL,01H

OUTDX,AL;中断允许寄存器初始化

MOVDX,3FAH

MOVAL,04H

OUTDX,AL;中断标识寄存器初始化

REPEAT:

MOVDX,3FDH

INAL,DX

TESTAL,01H;检测是否可以接收数据

JNERECEIVE

TESTAL,20H;检测是否可以发送数据

JZREPEAT;如果不可以接收和发送数据,则重新执行REPEATMOVAH,01H;键盘是否有按键

INT16H

JZREPEAT

MOVAH,00H

INT16H

CMPAL,27

JZRE

;将键入的字符转换为ASCII码

MOVDX,3F8H

OUTDX,AL;发送数据

PUSHAX

PUSHBX

MOVBL,00H

MOVAH,0EH

INT10H;显示一个通信字符

POPBX

POPAX

JMPREPEAT

RECEIVE:

INAL,21H

ANDAL,0EFH

OUT21H,AL

CLI;关中断

MOVAX,00

MOVES,AX

MOVDI,4*12

MOVAX,OFFSETRINT

CLD;在串操作时,使地址增量

STOSW;将AX的内容传送到由DI作为指针的目的串中

MOVAX,CS

STOSW

MOVDX,OFFSETRINT

MOVAX,SEGRINT

MOVDS,AX

MOVAL,0CH;COM1的中断类型码

MOVAH,25H

INT21H

RE:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

JMPREPEAT

心得与体会:

我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?

让我们简单的总结如下:

查询方式:

发送数据——先发后查;

接收数据——先查后收。

中断方式:

发送数据——发送、等待中断、中断中发送;

接收数据——等待中断、在中断中接收。

所以我们在不同方式下对发送数据和接收数据的处理是不同的,我们应注意对其的处理,在其中也应注意各个程序的正确性。

通过本次实验也学会了串口通讯的两种方式,收获颇丰!

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

当前位置:首页 > 求职职场 > 简历

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

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