串行通信8251

上传人:小** 文档编号:113706313 上传时间:2022-06-26 格式:DOC 页数:8 大小:302.50KB
返回 下载 相关 举报
串行通信8251_第1页
第1页 / 共8页
串行通信8251_第2页
第2页 / 共8页
串行通信8251_第3页
第3页 / 共8页
点击查看更多>>
资源描述
北京邮电大学实验报告课程名称:微机原理与接口技术实验名称:串行通信8251一实验目的了解串行通讯的基本原理掌握串行接口芯片8251的工作原理和编程方法二实验内容1.按下图所示连接好电路,其中8254计数器用于产生8251的发送和接收时钟,XD和RXD连接在一起。0UT3c,atr仿10-11:hCLK0-rUSIRRkEs;T7Zp9C4TxDRxDTxRDYRxRt?jCTSis2.编程:从键盘输入一个字符显示,实现自发自收。3.连线:将其ASCII码的值加1后发送出去,再接收回来在屏幕上CLEO/8254GATED78254OUTO/8254CS/8254CS/8251RXD/8251接接接採按按1H时钟+-5VTX/RXCLK/8251YO/IOifi址Y7/IO地址TXD/82S1三实验思路1.芯片8251(1)重要管脚的说明Intel8251A是可编程的串行通信接口芯片,它的内部结构如下图所示:D7D0为三态双向数据线,将CS连接到实验台的I/O地址(本实验将其连接到Y7,因此数据端口地址为2B8H),则可以通过8251的数据端口实现串行通信。TxD为发送数据线,用作输出;RxD为接收数据线,用作输入。本实验将TxD和RxD连接起来,从而实现8251的自发自收。TX/RXCLK为8251的发送时钟和接收时钟,将其与8254的OUT0连接起来,则可以利用8254的计数器0的输出作为时钟信号。2)方式命令字的确定S1soEPPENLILOBlBODO谗蒔率因子O1:xlIO:X1611:兀不4Intel8251A有两种工作方式:串行同步通信和串行异步通信。本实验采用异步通信方式,其方式命令字格式如下:伴止位宇符疋應oo:祭jJhxO:无.拴马佥OO:5hitOl:1bitm:奇校验O1:疔lit10:1,5bit站:倨校验10:7ltt11:2bit11:8bitD73)工作命令字的确定Intel8251A的工作命令字的格式如下:本实验采用8位字符,波特因子为16,因此方式命令字为11001110。本实验要实现自发自收,因此发送端和接收端都要允许,从而确定的命令字为00100111。4)状态字的检查Intel8251A的状态字的格式如下:通过8251实现数据的收发时必须先确定发送器/接收器是否准备好,这可以通过读取控制端的状态字来确定:D1(RxRDY)表示接收器准备好,当RxRDY=1时,表示接收器已接收到了字符,可以让CPU将该字符读取走。D0(TxRDY)表示发送器准备好,当TxRDY=1时,表示发送缓冲器已空,可以接收CPU送来的欲发送数据。上面已提到本实验中8251的数据端口地址为2B8H,则其控制端口地址为2B9H,编程中只要将读取到的状态字与01b(或10b)相与则可知道发送器(或接收器)是否准备好,从而进行下一步数据处理。2.芯片8254Intel8254可编程计数器具有3个独立的16位计数器通道,每个计数器都可以按照二进制或BCD码计数方式进行计数,每个通道都有六种工作方式。(1)工作方式的选择本实验中8254要实现的功能是给8251提供时钟信号,因此采用方式3较恰当。方式3是对CLK信号进行分频,在写入方式3的控制字和计数初值后计数器开始计数在计数过程中OUT断的输出是一半时间为高电平,一段时间为低电平的方波。(2)计数器初值计数初值=时钟频率/(波特率*波特率因子),由于本实验中的时钟频率是接1MHz,波特率选的是1200,而波特因子为16,则得到的计数器初值为52.(3)控制字的确定Intel8254的控制字格式如下:7D40DJOLdoCO计鞋眶QOh计觀龍1L0汁畑三Ll无用口L读時计翘磔惟他_|to诵馬计魏長鬲豹LE先澳鱼计熬制辭应启屬剖本实验采用计数器0进行计数,确定的控制字为用方方方方方方方方1.JIuwIL-3IX创口a1J一:00110110。沂號君式3二ifi制I二-十涯制3.算法流程图;跆LS25L显常提片:丛呂251控制口直狀京学listif?PiRDYL屍825】故据口龙业数崙将葩扎了符临匚帕加I|从町和挖制靖读入狀态字谴过825】散抵萄:戏迖字符倚孑符韜示内川恭四源代码datasegmentport_8254equ280h;port_8251equ2b8h;ESCequ27hokdbhi,$,0dh,0ahdataendscodesegmentassumecs:code,ds:datamain:;初始化8254movdx,port_8254+3moval,00110110boutdx,almovdx,port_8254movax,52outdx,almoval,ahoutdx,al;初始化8251movdx,port_8251+1xoral,aloutdx,al;moval,40houtdx,al;nopmoval,11001110boutdx,almoval,00100111boutdx,al;打印显示信息movdx,offsetokmovax,segokmovds,axmovah,9int21h;读取8251的状态字L1:movdx,port_8251+1inal,dxandal,01b;TxDRY为1?jzL1;从键盘接收字符movah,1int21h;判断是否为ESCcmpal,ESCjzover;将ASCII码加1后通过8251端口发送字符incalmovdx,port_8251outdx,al;读取8251的状态字L2:movdx,port_8251+1inal,dxandal,10b;DxDRY为1?jzL2;从8251端口接收数据movdx,port_8251inal,dxmovdl,almovah,2int21hjmpL1over:movax,4C00Hint21hcodeendsendmain五实验心得通过这次实验,熟悉和掌握了两个芯片一一可编程计数器和可编程串行通信接口的使用。进一步理解了两个芯片的工作原理与工作方式:Intel实8现2串5行1通信,有两种工作方式:同步通信和异步通信。同步通信需要用到同步符和终止符的检测,此次实验中没有涉及;异步通信看似较简单一些,82能够自动检测和处理终止字符。这里需要注意的就是设置波特率因子,也就是接收时钟频率与波特率的倍数。在确定工作命令字的时候,起初觉得有那么多选项好复杂,在弄清楚每个管脚代表的意义之后,发现要确定的东西其实也不难,保证自发自收,同时允许接收和发送使能就好了。理解了的工作过程之后,也明白了检查状态字中的TxRDY和DxRDY位的意义。机器的工作总是要一步一步来的,必须保证每步的正确性。Intel中8有2三5个4独立的计数器,这次实验中只需要用到其中一个计数器,对于该芯片的使用的唯一难点就是确定工作方式和计数器初值。825的4工作方式有六种,每种方式都可以实现特定功能:计数结束中断、单稳触发器、频率发生器、方波发生器、软件触发选通信号和硬件触发选通信号。这次实验需要计数器来提供时钟信号,因此最适合的就是方波计数器了。至于计数器初值的选择,上面也已经解释清楚了。本次实验的另一大收获就是对于汇编语言的编程技巧的提升。在给出流程图后,本实验的编程并不算困难。再一次熟悉运用了等指令熟悉使用了(带回显的键盘输入),(在屏幕上显示字符)(在屏幕上显示以结束的字符串)等中断服务。编程方面遇到的唯一的问题就是显示字符串的时候显示了乱码,经排查发现是自己忘了将字符串的首地址放入中。汇编语言就是这样,一点点小细节就容易出错,还有好多指令的细节(比如数据的隐含地址等)需要你细心体会然后记住。总而言之,通过这次实验,对芯片和编程语言的熟悉都加深了,收获很大。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!