中易网

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; } } //应该可以了,你稍微调试一下。刚写的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息