串口初始化中U0DLL=Fdiv%256怎样理解(待解决)

来源:互联网 发布:excel数据验证限制 编辑:程序博客网 时间:2024/05/17 05:58

串口初始化程序如下所示:

1#define UART_BPS 115200    //串口通信波特率

2U0LCR=0x83;              //DLAB=1,允许设置波特率

3Fdiv=(Fpclk/16)/UART_BPS;   //设置波特率

4U0DLM=Fdiv/256;             //除数的高8位

5U0DLL=Fdiv%256;          //除数的低8位

6U0LCR=0x03;         //DLAB=0,禁止访问除数锁存器

波特率除数计算公式,其中,baud为所需要的波特率:

UxDLM,UxDLL=Fpclk/(16*baud)

U0DLL和U0DLM寄存器一起构成一个16位除数,U0DLL包含除数的低8位,U0DLM包含除数的高8位

第4句U0DLM=Fdiv/256可以看成Fdiv>>8位,右移8位就相当于除以256

第5句U0DLL=Fdiv%256是怎么一回事呢?等同于二进制的什么呢?