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

  • 5
  • 0
  • 约3.27万字
  • 约 35页
  • 2019-10-04 发布于江西
  • 举报

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

串口交互程序及其实现 TOC \o 1-4 \h \z \u 串行通信接口概述 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比特中,一个比特

文档评论(0)

1亿VIP精品文档

相关文档