- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串行通信8251
北 京 邮 电 大 学
实 验 报 告
课程名称:微机原理与接口技术
实验名称:串行通信8251
实验目的
了解串行通讯的基本原理
掌握串行接口芯片8251的工作原理和编程方法
实验内容
按下图所示连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连接在一起。
编程:从键盘输入一个字符,将其ASCII码的值加1后发送出去,再接收回来在屏幕上显示,实现自发自收。
连线:
实验思路
芯片8251
重要管脚的说明:
Intel 8251A是可编程的串行通信接口芯片,它的内部结构如下图所示:
D7~D0为三态双向数据线,将CS连接到实验台的I/O地址(本实验将其连接到Y7,因此数据端口地址为2B8H),则可以通过8251的数据端口实现串行通信。
TxD为发送数据线,用作输出;RxD为接收数据线,用作输入。本实验将TxD和RxD连接起来,从而实现8251的自发自收。
TX/RXCLK为8251的发送时钟和接收时钟,将其与8254的OUT0连接起来,则可以利用8254的计数器0的输出作为时钟信号。
(2) 方式命令字的确定
Intel 8251A有两种工作方式:串行同步通信和串行异步通信。本实验采用异步通信方式,其方式命令字格式如下:
本实验采用8位字符,波特因子为16,因此方式命令字
(3) 工作命令字的确定
Intel 8251A的工作命令字的格式如下:
本实验要实现自发自收,因此发送端和接收端都要允许,从而确定的命令字
(4)状态字的检查
Intel 8251A的状态字的格式如下:
通过8251实现数据的收发时必须先确定发送器/接收器是否准备好,这可以通过读取控制端的状态字来确定:D1(RxRDY)表示接收器准备好,当RxRDY=1时,表示接收器已接收到了字符,可以让CPU将该字符读取走。D0(TxRDY)表示发送器准备好,当TxRDY=1时,表示发送缓冲器已空,可以接收CPU送来的欲发送数据。
上面已提到本实验中8251的数据端口地址为2B8H,则其控制端口地址为2B9H,编程中只要将读取到的状态字与01b(或10b)相与则可知道发送器(或接收器)是否准备好,从而进行下一步数据处理。
芯片8254
Intel 8254可编程计数器具有3个独立的16位计数器通道,每个计数器都可以按照二进制或BCD码计数方式进行计数,每个通道都有六种工作方式。
(1)工作方式的选择
本实验中8254要实现的功能是给8251提供时钟信号,因此采用方式3较恰当。
方式3是对CLK信号进行分频,在写入方式3的控制字和计数初值后计数器开始计数,在计数过程中OUT断的输出是一半时间为高电平,一段时间为低电平的方波。
(2)计数器初值
计数初值 = 时钟频率 / (波特率 * 波特率因子), 由于本实验中的时钟频率是接1MHz,波特率选的是1200,而波特因子为16,则得到的计数器初值为52.
(3)控制字的确定
Intel 8254的控制字格式如下:
本实验采用计数器0进行计数,确定的控制字为
算法流程图
源代码
data segment
port_8254 equ 280h;
port_8251 equ 2b8h;
ESC equ 27h
ok db hi~,$,0dh,0ah
data ends
code segment
assume cs:code, ds:data
main:;初始化8254
mov dx, port_8254+3
mov al,
out dx, al
mov dx, port_8254
mov ax, 52
out dx, al
mov al, ah
out dx, al
;初始化8251
mov dx, port_8251+1
xor al, al
out dx, al ;
mov al, 40h
out dx, al ;
nop
mov al,
out dx, al
mov al,
out dx, al
;打印显示信息
mov dx, offset ok
mov ax, seg ok
mov ds, ax
mov ah, 9
int 21h
;读取8251的状态字
L1: mov dx, port_8251+1
in al, dx
and al, 01b ;
原创力文档


文档评论(0)