51串口通讯中,波特率9600,我晶振是12M的,这样行吗,计算不是整数
答案:2 悬赏:20
解决时间 2021-04-27 16:43
- 提问者网友:我稀罕你
- 2021-04-27 10:09
51串口通讯中,波特率9600,我晶振是12M的,这样行吗,计算不是整数
最佳答案
- 二级知识专家网友:ー何必说爱
- 2021-04-27 10:51
通信会有误差,建议你选择11.0592或22.1184的,要不通信不了
全部回答
- 1楼网友:不服输的倔强
- 2021-04-27 11:49
12m晶振不能输出9600的波特率;
12m晶振只能输出1200的波特率,有少量误差,不过不影响使用。
#include
#include
void uart0_transmit(unsigned char i) //向串口发送一个字节
{
es=0;
ti=0;
sbuf=i; // 发送数据到uart0
while (!ti); / 等待发送1个字节数据完成
ti=0 ; // 清除中断标志
es=1;
}
void delay_ms()
{
int i,j;
for(i=1000;i>0;i--) {
for(j=25;j>0;j--) {;}
}
}
void sysinit(void)
{
pcon |=0x80;
scon=0x50;
tmod=0x21;
th1=204;
tl1=204;
tr1=1;
es=0;
th0=0xb8;
tl0=0x00;
tr0=1;
et0=1;
}
void main (void)
{
sysinit();
while (1)
}
uart0_transmit(0x55);
delay_ms;
}
}
//应该可以了,你稍微调试一下。刚写的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯