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