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 在先) 和一个停止位,软件向 SBU F0 寄存器写入一个字节时开始数据发送。在发送结束时中断标志 TI0 被置1 UART1(仅C8051F340/1/4/5 有) UART1 的使用与UART0 基本大致相同,但是。UART1 包含一个由 16 位定时器和可编程预分频器构成的专用波特率发生器,能产生很宽范围的波特率,有多个时钟源可用于产生标准波特率。 UART1 有六个相关的特殊功能寄存器。三个用于波特率发生器(SBCON1、SBRLH1 和SBRLL1),两个用于数据格式、控制和状态功能(SCON1 和 SMOD1),一个用于发送和接收数据(SBU F1)。 使用 UART1 时,波特率发生器必须被使能。寄存器 SBRLH1 和 SBRLL1 保持该专用定时器的 16 位重载值,对于可靠的 UART 操作,建议不要将 UART 波特率配置为大于 SYSCLK/16。 C8051F330 串口 UART0 示例程序 //使用F340,串口为P0.4(TX0),P0.5(RX0); #inclu de #inclu de #define SYSCLK 24500000 // 系统工作频率 #define BAUDRATE 9600 // 串口工作波特率 //----------------------------...