- 92
- 0
- 约3.06千字
- 约 3页
- 2017-06-07 发布于重庆
- 举报
C8051F020学习笔记-串口通信
F020单片机的使用过程当中,有几个重点,一个是定时器和中断,一个是AD和DA,还有一个就是串口通信了。由于当时设计的时候思想比较混乱,所以直接采用的MAX485作为通信芯片。对于其具体的实现过程还不是十分的熟悉。因此,做此专题专门针对与串口通信相关的寄存器做说明。
四,UART0
UART0 是一个具有帧错误检测和地址识别硬件的增强型串行口。UART0 可以工作在全双
工异步方式或半双工同步方式,并且支持多处理器通信。接收数据被暂存于一个保持寄存器
中,这就允许UART0 在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。一个接收覆盖位用于指示新的接收数据已被锁存到接收缓冲器而前一个接收数据尚未被读取。对UART0 的控制和访问是通过相关的特殊功能寄存器即串行控制寄存器(SCON0)和串行数据缓冲器(SBUF0)来实现的。一个SBUF0 地址可以访问发送寄存器和接收寄存器。读操作将自动访问接收寄存器,而写操作自动访问发送寄存器。UART0 可以工作在查询或中断方式。UART0 有两个中断源:一个发送中断标志TI0(SCON0.1)(数据字节发送结束时置位)和一个接收中断标志RI0(SCON0.0)(接收完一个数据字节后置位)。当CPU 转向中断服务程序时硬件不清除UART0 中断标志,中断标志必须用软件清除。这就允许软件查询UART0 中断的原因(发送完成或接收完成)。
UART0 工作方式
UART0 提供四种工作方式(一种同步方式和三种异步方式),通过设置SCON0 寄存器中
的配置位选择。这四种方式提供不同的波特率和通信协议。下面的表20.1 概述了这四种方式。
表20.1 UART0 工作方式
方式 同步性 波特率时钟 数据位 起始/停止位
0 同步 SYSCLK/12 8 无
1 异步 定时器1 或定时器2 溢出 8 一个起始位,一个停止位
2 异步 SYSCLK/32 或SYSCLK/64 9 一个起始位,一个停止位
3 异步 定时器1 或定时器2 溢出 9 一个起始位,一个停止位
方式0 的波特率是系统时钟频率/12。在方式0,RX0 被强制为漏极开路方式,通常需要
外接一个上拉电阻。
方式1:8 位UART,可变波特率
方式1 提供标准的异步、全双工通信,每个数据字节共使用10 位:一个起始位、8 个数
据位(LSB 在先)和一个停止位。数据从TX0 引脚发送,在RX0 引脚接收。在接收时,8 个
数据位存入SBUF0,停止位进入RB80(SCON0.2)。
当执行一条向SBUF0 寄存器写入一个字节的指令时开始数据发送。在发送结束时(停止
位开始)发送中断标志TI0(SCON0.1)置位。在接收允许位REN0(SCON0.4)被设置为逻
辑1 之后任何时间都可以开始数据接收。收到停止位后如果满足下述条件则数据字节将被装
入接收寄存器SBUF0:RI0 为逻辑0,并且如果SM20 为逻辑1 则停止位必须为1。
如果这些条件满足,则8 位数据被存入SBUF0,停止位被存入RB80,RI0 标志被置位。
如果这些条件不满足,则不装入SBU0F 和RB80,RI0 标志也不被置1。如果中断被允许,在
TI0 或RI0 置位时将产生一个中断。
方程1 使用定时器1 的方式1 波特率 BAUD 2^SMD0/32 * SYSCLK*12^ T1M-1 / 256-TH1
方程2 使用定时器2 的方式1 波特率 BAUD SYSCLK/ 32* 65536-[RCAP2H:RCAP2L] 关于SCON0:UART0 控制寄存器 可位寻址
SM00/FE0 SM10/RXOV0 SM20/TXCOL0 REN0 TB80 RB80 TI0 RI0 位7 位6 位5 位4 位3 位2 位1 位0 位7-6: 这些位的功能由PCON(PCON是对SMOD,空闲以及掉电方式进行控制的) 中的SSTAT0 位决定。
如果SSTAT0 为逻辑‘1’,这些位是UART0 的状态指示位。
如果SSTAT0 为逻辑‘0’,这些位选择串行口的工作方式。
SM00-SM10:串行口工作方式 。从00~11分别对应着工作方式0~3
位5: SM21:多处理器通信允许
如果SSTAT1 为逻辑‘1’,该位是UART1 的状态指示位,见21.3 节。
如果SSTAT1 为逻辑‘0’,该位的功能取决于串行口工作方式。
方式0:无作用。
方式1:检查有效停止位
0:停止位的逻辑电平被忽略。
1:只有当停止位为逻辑电平1 时RI0 激活。
方式2 和方式3:多机通信允许
0:第九位的逻辑电平被忽略。
1:只有当第九位为逻辑1 并且接收到的地址与UART
原创力文档

文档评论(0)