51单片机波特率如何设置啊

问题描述:51单片机波特率如何设置啊

串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。 方式0的波特率 = fosc/12 方式2的波特率 =((2^SMOD)/64)• fosc 方式1的波特率 =((2^SMOD)/32)•ï¼ˆT1溢出率) 方式3的波特率 =((2^SMOD)/32)•ï¼ˆT1溢出率) 注意:SMOD为PCON寄存器的最高位(即PCOM<7>)。 T1 溢出率 = fosc /{12×[256 -(TH1)]} --将该公式代人方式1或3 最后推出公式:TH1=256-(fosc*2^SMOD)/(baudrate*12*32); 呵呵 如果你用方式2(波特率 =((2^SMOD)/64)• fosc )的话 12M的晶振就不能得到9600波特率了(除非你改变你的晶振,但是那样的晶振好像没有卖) 所以你只能选择方式1或3 而且12M的晶振在串口传输时会有误差,就如你上面算的那样结果会有小数点 TH1又只能是整数的 所以传输时会有误差. 参考: #include #define baudrate 9600UL #define fosc 11059200UL//其中,UL是不能省略的,代表长整型。 unsigned char a,flag; void serial_init(void) { unsigned char S_MOD=1; TMOD=0x20;//T1工作在方式2 SCON=0x50;//SM0=0 SM1=1->串口通信在模式1, //SM2=0->多级通信中使用的位,REN=1; PCON=0; if((PCON&0x80)==0x80) S_MOD=2; TH1=256-(fosc*S_MOD)/(baudrate*12*32);//其中SMOD=0, TL1=256-(fosc*S_MOD)/(baudrate*12*32); TR1=1;ES=1;EA=1; }
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-06
烧录软件里面的波特率是下载的速度 如果单片机通讯的话 在写程序时就写进去了!当然是要计算的!

51单片机波特率如何设置啊
方式2的波特率 =((2^SMOD)\/64)• fosc 方式1的波特率 =((2^SMOD)\/32)•(T1溢出率)方式3的波特率 =((2^SMOD)\/32)•(T1溢出率)注意:SMOD为PCON寄存器的最高位(即PCOM<7>)。T1 溢出率 = fosc \/{12×[256 -(TH1)]} --将该公式代人方式1或...

51单片机波特率如何设置?
51单片机波特率设置主要有以下两种方式:1) 工作方式0 ,2)工作方式1 。1) 工作方式0 SM0=0且SM1=0时,串口选择工作方式0,实质这是一种同步移位寄存器模式。 其数据传输的波特率固定为Fosc\/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。2)工作方式1 当SM0=0且SM1=1时,串...

如何设置波特率
51单片机波特率设置主要有以下两种方式:1) 工作方式0 ,2)工作方式1 。1) 工作方式0 SM0=0且SM1=0时,串口选择工作方式0,实质这是一种同步移位寄存器模式。 其数据传输的波特率固定为Fosc\/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。2)工作方式1 当SM0=0且SM1=1时,串...

MCS-51单片机串口四种工作方式的波特率如何确定
1、串口屏和软件成功联机之后,左上角会显示当前波特率。2、打开指令助手,点击“设备配置”,此时进入设备配置界面,如图所示。3、修改之前需解除默认配置,点击“解除系统配置”,指令助手会发送对应指令。NANO型串口屏出厂波特率为115200,其它型号串口屏出厂波特率为19200。4、修改波特率,波特率可修改范围为...

51单片机波特率怎么成57600
按如下方法设置,波特率是57600 void UartInit(void) \/\/57600bps@11.0592MHz { PCON |= 0x80; \/\/使能波特率倍速位SMOD SCON = 0x50; \/\/8位数据,可变波特率 TMOD &= 0x0f; \/\/清除定时器1模式位 TMOD |= 0x20; \/\/设定定时器1为8位自动重装方式 TL1 = 0xFF; \/\/设定定时...

如何设置80C51的波特率
51单片机的串行口有四种工作方式,由串行口控制寄存器中的SM0、SM1控制。80C51单片机的串行通信有8位、10位、11位三种帧格式。波特率设置:4种工作方式波特率的计算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,均由定时器T1的溢出率控制。具体计算如下:方式0:波特率固定为...

51单片机,T1用作串行口波特率发生器时,设置为工作方式1时,应该给TH1...
51MCU-方式1:10位通用异步通信 一帧信息为10位:1位为起始位(0),8位数据位,1位停止位(1)采用定时器T1(1个16位计数器)作为串行口接收和发送的波特率发生器,数据传输波特率可调,由T1的溢出决定,可用程序设定。波特率设定:波特率=(2^smod)*(定时器T1溢出率)\/32 溢出率=溢出周期的倒数 ...

51单片机如何修改波特率9600改成2400
设2400波特率时定时器重载值是Y;当定时器重载值是8bit时(传统的51单片机型号,如AT89C51的T1):Y=256-((256-X)*4)当定时器重载值是16bit时(较新的51单片机型号,如C8051F系列的Timer3):Y=65536-((65536-X)*4)\/\/--- 粗略看了一下你的程序,你可以调整一下MAX_DELAY这个参数。我没具...

51单片机11.0592的晶振设置19200的波特率 怎么设置,给出初始化程序_百...
下面方法可以,也可以使用PCON=0x00,但要修改下TH1和TH0 void UART_init(){ TH1=0xfd; \/\/调初值 、9600 TL1=0xfd;PCON=0x80;\/\/波特率加倍9600 SCON=0x50; \/\/允许接收 TR1=1; \/\/start Timer1 }

...传输一个十六位数据,定时器和波特率怎么设置啊?
晶振11.0592,波特率9600情况下,可用下面的函数进行初始化。void UART_init(){ TH1 = 0xFD;TL1 = 0xFD;TMOD = 0x21; \/\/设置定时器1为模式2;定时器0为模式1 TH0 =(65536-2500)\/256; \/\/约2.50MS定时器初值 TL0 =(65536-2500)%256; \/\/约2.50MS定时器初值 ET0 = 1;TR0 = 1;...

相似回答