C8051F340串口学
UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方
式 1 和方式 3。 UART0具有增强的波特率发生器电路,有多个时钟
源可用于产生标准波特率。接收数据缓冲机制允许 UART0 在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。
UART0 有两个相关的特殊功能寄存器: 串行控制寄存器 (SCON0)
和串行数据缓冲器( SBUF0)。写 SBUF0时自动访问发送寄存器;读
SBUF0时自动访问接收寄存器,不可能从发送数据寄存器中读数据。
如果 UART0 中断被允许,则每次发送完成 TI0 位被置‘ 1’或接收到数据字节 RI0 位被置‘1’时将产生中断。 当 CPU转向中断服务程序时硬件不清除 UART0 中断标志。中断标志必须用软件清除。
UART0 波特率由定时器 1 工作在 8 位自动重装载方式产生,定
时器 1 应被配置为方式 2,即 8 位自动重装载方式,定时器 1 的时钟可以在 6 个时钟源中选择: SYSCLK、SYSCLK/4、SYSCLK/12、SYSCLK/48、外部振荡器时钟 /8 和外部输入 T1。
其中 T1CLK是定时器 1 的时钟频率, T1H 是定时器 1 的高字节(重载值)UART0 提供标准的异步、 全双工通信, 其工作方式(8 位或 9 位)通过 S0MODE来选择
8 位 UART
每个数据字节共使用 10 位:一个起始位、 8 个数据位( LSB 在先)
和一个停止位,软件向 SBUF0 寄存器写入一个字节时开始数据发送。
在发送结束时中断标志 TI0 被置
1
UART1(仅 C8051F340/14/5 有)
UART1的使用与 UART0基本大致相同, 但是。UART1 包含一个由 16
位定时器和可编程预分频器构成的专用波特率发生器, 能产生很宽范
围的波特率,有多个时钟源可用于产生标准波特率。
UART1 有六个相关的特殊功能寄存器。三个用于波特率发生器
SBCON1、SBRLH1 和 SBRLL1),两个用于数据格式、控制和状态功能( SCON1 和 SMOD1),一个用于发送和接收数据( SBUF1)。
使用 UART1 时,波特率发生器必须被使能。寄存器 SBRLH1和
SBRLL1保持该专用定时器的 16 位重载值, 对于可靠的 UART 操作,建议不要将 UART 波特率配置为大于 SYSCLK/16。
C8051F330 串口 UART0 示例程序
使用 F340,串口为 (TX0),(RX0); #include<>
#include<>
#define SYSCLK // 系统工作频率
#define BAUDRATE 9600 // 串口工作波特率
//-----------------------------------------------------------------------------
// 功能函数
//-----------------------------------------------------------------------------
void SYSCLK_Init(void);
void PORT_Init(void);
void UART0_Init(void);
void Uart0_Transmit(unsigned char tmp);
void sendstr(unsigned char*tmp);
unsigned char temp ;
void delay_1ms()
{
un
C8051F340学习笔记—UART 来自淘豆网m.daumloan.com转载请标明出处.