实验一基本串口通信程序设计.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  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文档。上传文档
查看更多
实验一基本串口通信程序设计.doc

实验一 基本串口通信程序设计 实验要求: 用TC对计算机的串口进行编程,并作一个简单的串口查询通讯程序。 实验方案:   用RS-232串口通讯线将两台计算机A、B的串口相连。 实验步骤: 1、 首先对计算机串口通讯控制芯片8250的控制寄存器进行初始化和设置; 2、 对计算机B的串口发送一个数据前,查询计算机A的串口的发送移位寄存器是否为空,如果是则发送数据,如果为否则继续查询,直到条件成立;执行完发送指令后,再次查询计算机A的口的发送移位寄存器是否为空,如果是则结束发送;如果为否,则继续查询,直到条件成立。 3、 从计算机A的串口接受刚才从计算机B的串口发送的数据前,先查询计算机A的口的接收数据标志位是否为1,如果是则表示计算机A的口接收数据准备就绪,执行接收指令,即从计算机A的口读入数据,若否则表示没有准备好接收,继续查询计算机A的口的接收数据标志位,直到为1;接收完数据后,再次查询计算机A的串口的接受寄存器是否为空的标志位的状态,如果为1则程序转入计算机B的串口的数据发送程序;如果否,则继续查询等待,直到接收。 实验内容: 在COMDEBUG中针对串口通信各寄存器进行设置,掌握各寄存器在串口通信中的作用及各参数的含义。 Com1口中的10各可编程寄存器 地址 寄存器名称 备注 3F8H 发送保持寄存器(THR) DLAB=0 3F8H 接收缓冲寄存器(RBR) DLAB=0 3F8H 波特率因子寄存器[低](DLL) DLAB=1 3F9H 波特率因子寄存器[高](DLM) DLAB=1 3F9H 中断允许寄存器(IER) DLAB=0 3FAH 中断识别寄存器(IIR) 3FBH 线路控制寄存器(LCR) 3FCH Modem控制寄存器(MCR) 3FDH 线路状态寄存器(LSR) 3FEH Modem状态寄存器(MSR) 注:com1口的基地址为:3F8; com2口的基地址为:2F8。 在上表中, 10个可编程寄存器,使用了7个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分,在DLAB=1,用于设定通讯所需的波特率; 8250的控制寄存器控制/状态字: 接收缓冲寄存器(RBR)和发送保持寄存器(THR) RBR暂存从线路上接收到的有效字符,等待本地读取。THR暂存等待发向线路的数据。它们共用同意I/O地址,在半双工工作环境下,互不干扰。 中断识别寄存器(IIR)和中断允许寄存器(IER) IIR状态 中断类型 中断原因 复位动作 IER状态 b1 b2 b3 中断允许 中断静止 X X 1 无 1 1 0 线路状态中断 线路状态变化 读LSR b2=1 b2=0 1 0 0 接收中断 RBR输入有效 读RBR b0=1 b0=0 0 1 0 发送中断 THR空闲,可发送下一字符 读IIR或写THR b1=1 b1=0 0 0 0 Modem状态中断 Modem状态变化 读MSR b3=1 b3=0 线路状态寄存器(LSR) b7 b6 b5 b4 b3 b2 b1 b0 0不用 发送移位寄存器(TSRE)空,可发送 发送保持寄存器(THRE)空,可接收数据 断点中断(BI),收到停顿信号 帧格式错(FE),即没有收到正确的停止位 奇校验错(PE) 超载错(OE),即数据缓冲出错 数据准备就绪,即数据缓冲区中尚有数据未取走 线路控制寄存器(LCR) b7 b6 b5 b4 b3 b2 b1b0 访问分频器开关(DLAB位) 中断控制位 奇偶校验 停止位宽 字符位数 0:常态 1:访问DLL,DLM 0:禁止 1:允许 xx0:不校验 001:奇校验 011:偶校验 0xx:1位停止位 100:5位字符,1.5位停止位 101:6位字符,2位停止位 110:7位字符,2位停止位 111:8位字符,2位停止位 波特率因子寄存器(DLL,DLM) DLL与DLM组成一个16位寄存器,存放一个波特率因子(分频值),对振荡时钟进行分频,以得到用户需要的波特率。计算方法: 波特率因子 = 振荡时钟 / (波特率*16) 一些标准波特率对应的波特率因子寄存器的设置 波特率(b/s) DLM设置 DLL设置 9600 00H 0CH 19200 00H 06H 38400 00H 03H 115200 00H 01H modem控制寄存器(MCR) MCR的b7~b5位恒为0,b4~b0中的各位产生对modem的控制信号。 b4=1 设置loopback模式-内部输入输出短接,构成反馈测试模式。 b3=1 辅助输出2 b2=1 辅助输出1 b1

文档评论(0)

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

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档