导读:C8051F 波特率如何计算SFRPAGE = TIMER01_PAGE; TMOD &= ~0xF0; //按位与 给 C8051F 波特率如何计算SFRPAGE = TIMER01_PAGE; TMOD &= ~0xF0; //按位与 给0改变 0000 1111 定时器0(低四位) 定时器1(高四位) 方式寄存器 TMOD |= 0x20...
C8051F 波特率如何计算SFRPAGE = TIMER01_PAGE; TMOD &= ~0xF0; //按位与 给
C8051F 波特率如何计算
SFRPAGE = TIMER01_PAGE;
TMOD &= ~0xF0; //按位与 给0改变 0000 1111 定时器0(低四位) 定时器1(高四位) 方式寄存器
TMOD |= 0x20; //按位或 给1改变 TMOD: timer 1, mode 2, 8-bit auto reload 自动重装载8位
SSTA0 = 0x00;/////////////////////定时器1溢出产生波特率 使用二分频功能
if (SYSCLK/BAUDRATE/2/256 < 1) //当四个条件都满足时只执行第一个语句
{
TH1 = -(SYSCLK/BAUDRATE/2);//负号其实是补码 反码加1
CKCON |= 0x10; //时钟控制寄存器 T1M = 1; 定时器1时钟选择使用系统时钟 SCA1:0 = xx
}
else if (SYSCLK/BAUDRATE/2/256 < 4)
{
TH1 = -(SYSCLK/BAUDRATE/2/4);
CKCON &= ~0x13; // Clear all T1 related bits 清除所有与T1有关的选项
CKCON |= 0x01; //定时器1使用预分频定义的时钟 除4 等效于 SYSCLK/BAUDRATE/2/4/4 T1M = 0; SCA1:0 = 01
}
else if (SYSCLK/BAUDRATE/2/256 < 12)
{
TH1 = -(SYSCLK/BAUDRATE/2/12);
CKCON &= ~0x13; // T1M = 0; SCA1:0 = 00 定时器1预分频1/12
}
else
{
TH1 = -(SYSCLK/BAUDRATE/2/48);
CKCON &= ~0x13; // Clear all T1 related bits
CKCON |= 0x02; // T1M = 0; SCA1:0 = 10
}
TL1 = TH1; // Initialize Timer1
TR1 = 1; // Start Timer1
SFRPAGE = UART1_PAGE;
TI1 = 1; // Indicate TX1 ready
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
波特率计算公式不是2^SMOD *(T1溢出率)---方式1
if (SYSCLK/BAUDRATE/2/256 < 4)
TH1 = -(SYSCLK/BAUDRATE/2/4);
类似这样的句子是怎么来的啊 求解释啊 没有分了以后给补上
妖艷惑眾
1年前他留下的回答
已收到1个回答
路中的ww人
网友
该名网友总共回答了14个问题,此问答他的回答如下:采纳率:85.7%
有的C8051F系列波特率计算公式是1/(2^SMOD) *(T1溢出率),有些还要除去16
T1溢出率=SYSCLK/(256-TH1)/(分频系数)
if (SYSCLK/BAUDRATE/2/256 < 4) 这是求T1使用系统时钟的分频系数
TH1 = -(SYSCLK/BAUDRATE/2/4);这个式子可以根据上面两个式子求得,2是波特率2分频,4是系统时钟...
1年前他留下的回答
0
以上就是小编为大家介绍的C8051F 波特率如何计算SFRPAGE = TIMER01_PAGE; TMOD &= ~0xF0; //按位与 给 的全部内容,如果大家还对相关的内容感兴趣,请持续关注上海建站网!
标签:
内容声明:网站所展示的内容均由第三方用户投稿提供,内容的真实性、准确性和合法性均由发布用户负责。上海建站网对此不承担任何相关连带责任。上海建站网遵循相关法律法规严格审核相关关内容,如您发现页面有任何违法或侵权信息,欢迎向网站举报并提供有效线索,我们将认真核查、及时处理。感谢您的参与和支持!