嵌入式操作系统-设计与实现:串口交互程序及其实现.docVIP

嵌入式操作系统-设计与实现:串口交互程序及其实现.doc

  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文档。上传文档
查看更多
嵌入式操作系统-设计与实现:串口交互程序及其实现.doc

串口交互程序及其实现 串行通信接口概述 2 串行通信编程方式 5 串口初始化 5 数据发送 6 数据接收 9 串口交互程序的实现 11 串口交互程序的使用 11 轮询模式的串口交互程序实现 15 中断模式的串口交互程序实现 24 串行通信编程总结 33 轮询方式和中断方式编程的对比 33 串口交互程序的其它实现方式 34 串行通信接口概述 PC 微机的串行通信使用的异步串行通信芯片是INS 8250 或NS16450 兼容芯片,统称为UART(通用异步接收发送器)。对UART 的编程实际上是对其内部寄存器执行读写操作。因此可将UART 看作是一组寄存器集合,包含发送、接收和控制三部分。UART 内部有10 个寄存器,供CPU 通过IN/OUT 指令对其进行访问。 这些寄存器的端口和用途见下表所示。其中端口0x3f8-0x3fe 用于微机上COM1 串行口,0x2f8-0x2fe 对应COM2 端口。条件DLAB(Divisor Latch Access Bit)是除数锁存访问位,是指线路控制寄存器的位7。 下表给出了PC机上串行通信接口的访问端口地址,以及对应的寄存器bit位的含义: 访问端口(COM1/COM2) 访问方式 DLAB位状态 各寄存器bit用途 0x3F8/0x2F8 R 0 写发送保持寄存器。含有将发送的字符。 W 0 读接收缓存寄存器。含有收到的字符。 R/W 1 读/写波特率因子低字节(LSB)。 0x3F9/0x2F9 R/W 1 读/写波特率因子高字节(MSB)。 R/W 0 读/写中断允许寄存器。 位7-4 全0 保留不用; 位3=1 modem 状态中断允许; 位2=1 接收器线路状态中断允许; 位1=1 发送保持寄存器空中断允许; 位0=1 已接收到数据中断允许。 0x3FA/0x2FA R X 读中断标识寄存器。中断处理程序用以判断此次中断是4 种中的那一种。 位7-3 全0(不用); 位2-1 确定中断的优先级; = 11 接收状态有错中断,优先级最高; = 10 已接收到数据中断,优先级第2; = 01 发送保持寄存器空中断,优先级第3; = 00 modem 状态改变中断,优先级第4。 位0=0 有待处理中断;=1 无中断。 0x3FB/0x2FB W X 写线路控制寄存器。 位7=1 除数锁存访问位(DLAB)。 0 接收器,发送保持或中断允许寄存器访问; 位6=1 允许间断; 位5=1 保持奇偶位; 位4=1 偶校验;=0 奇校验; 位3=1 允许奇偶校验;=0 无奇偶校验; 位2=1 1 位停止位;=0 无停止位; 位1-0 数据位长度: = 00 5 位数据位; = 01 6 位数据位; = 10 7 位数据位; = 11 8 位数据位。 0x3FC/0x2FC W X 写modem 控制寄存器。 位7-5 全0 保留; 位4=1 芯片处于循环反馈诊断操作模式; 位3=1 辅助用户指定输出2,允许INTRPT 到系统; 位2=1 辅助用户指定输出1,PC 机未用; 位1=1 使请求发送RTS 有效; 位0=1 使数据终端就绪DTR 有效。 0x3FD/0x2FD R X 读线路状态寄存器。 位7=0 保留; 位6=1 发送移位寄存器为空; 位5=1 发送保持寄存器为空,可以取字符发送; 位4=1 接收到满足间断条件的位序列; 位3=1 帧格式错误; 位2=1 奇偶校验错误; 位1=1 超越覆盖错误; 位0=1 接收器数据准备好,系统可读取。 0x3FE/0x2FE R X 读modem 状态寄存器。δ 表示信号发生变化。 位7=1 载波检测(CD)有效; 位6=1 响铃指示(RI)有效; 位5=1 数据设备就绪(DSR)有效; 位4=1 清除发送(CTS)有效; 位3=1 检测到δ 载波; 位2=1 检测到响铃信号边沿; 位1=1 δ 数据设备就绪(DSR); 位0=1 δ 清除发送(CTS)。 现对上述表格中比较重要的几个寄存器比特进行简要介绍: DLAB:除数锁存访问位,设置为1的时候,用于设置波特率因子。设置为0的时候,用于设置或读取其它寄存器的值。也可以理解为一个标志位,用于对前两个寄存器(0x3F8/0x2F8、0x3F9/0x2F9)的用途进行区别。若为1,则这两个寄存器为波特率因子,否则这两个寄存器被用于发送/接收保持(缓存)寄存器和中断控制寄存器; 中断允许寄存器:用端口地址0x3F9/0x2F9进行访问,用于设置或读取COM端口的中断控制比特。该寄存器的0-3比特用于控制特定的中断源的状态,4-7比特保留(为0)。其中,0-3比特中,一个比特对应一个特定的中断源,若设置该比特为1,则对应的中断源会打开,这样一旦有对应的事件发生

文档评论(0)

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

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

1亿VIP精品文档

相关文档