串口接收一个位的时间怎么算?

来源:百度知道 编辑:UC知道 时间:2024/05/17 11:03:15
#define FULL_SPEEDL SYSCLK/2/BAUDRATE1%0x100 //接收的一个位的时间常数的低8位
#define FULL_SPEEDH SYSCLK/2/BAUDRATE1/0x100 //接收的一个位的时间常数的高8位
#define SYSCLK 11059200 //晶振频率
#define BAUDRATE1 9600 //定义PCA_UART1的波特率
上面的算法怎么算的!!!
还有更好的解释没?这个还不是很正确,我觉得!!

SYSCLK/2:分频算出内部时钟频率,即每秒时钟振动多少次(和CPU,UART结构有关);
BAUDRATE1:每秒传输多少个比特;

所以传输一个比特位,时钟要振动M次, M=(SYSCLK/2)/BAUDRATE1

M是个整数
M%0x100 对0x100取余数,得到低8位;
M/0x100 除以0x100,得到高8位;