串行通信8251.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档