网站大量收购独家精品文档,联系QQ:2885784924

(串行通信8251.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、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)相与则可知道发送器(或接收器)是否准备好,从而进行下一步数据处理。芯片8254Intel 8254可编程计数器具有3个独立的16位计数器通道,每个计数器都可以按照二进制或BCD码计数方式进行计数,每个通道都有六种工作方式。(1)工作方式的选择本实验中8254要实现的功能是给8251提供时钟信号,因此采用方式3较恰当。方式3是对CLK信号进行分频,在写入方式3的控制字和计数初值后计数器开始计数,在计数过程中OUT断的输出是一半时间为高电平,一段时间为低电平的方波。(2)计数器初值计数初值 = 时钟频率 / (波特率 * 波特率因子),由于本实验中的时钟频率是接1MHz,波特率选的是1200,而波特因子为16,则得到的计数器初值为52.(3)控制字的确定Intel 8254的控制字格式如下:本实验采用计数器0进行计数,确定的控制字为算法流程图源代码data segmentport_8254equ 280h;port_8251equ 2b8h; ESC equ 27hokdb hi~,$,0dh,0ah data endscode segmentassumecs:code, ds:datamain:;初始化8254mov dx, port_8254+3mov al,out dx, al mov dx, port_8254mov ax, 52out dx, almov al, ahout dx, al ;初始化8251mov dx, port_8251+1xor al, alout dx, al ;mov al, 40hout dx, al ;nopmov al,out dx, almov al,out dx, al ;打印显示信息mov dx, offset okmov ax, seg okmov ds, axmov ah, 9int 21h ;读取8251的状态字 L1: mov dx, port_8251+1inal, dx and al, 01b ;TxDRY为1?jz L1 ;从键盘接收字符mov ah, 1int 21h ;判断是否为ESCcmp al, ESCjz over ;将ASCII码加1后通过8251端口发送字符inc almov dx, port_8251out dx, al ;读取8251的状态字 L2: mov dx, port_8251+1inal, dx and al, 10b ;DxDRY为1?jz L2

文档评论(0)

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

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

1亿VIP精品文档

相关文档