为您找到"
急!STC12C5A60AD单片机晶振及串口波特率问题
"相关结果约100,000,000个
后来,我得出了个结论,赶快换芯片!高速串口STC做的很烂,我的串口最多做到19200bps,再往上,不管是用什么12T还是1T,不管是用波特率加倍还是不加倍,速率都上不去。我用的片子是STC12L5624AD-35I-LQPF32。之后我发誓,以后只要STC不找我不逼我用它,这辈子我绝对不会去用STC,话说回来,深圳宏晶...
1,PCON = 0x80;//波特率不倍速?这一句明明是倍速的呀!2,发送函数错误 void Send_Comm(unsigned char chComDat){ SBUF = chComDat;while(!TI);//加上这一句吧,不等待数据发送完毕就清TI是错误的 TI = 0;} 3,接收函数错误,改正如下 unsigned char Rcv_Comm(){ while(!RI);//等待RI...
这款单片机,你看下应该是有个独立波特率发生器的,或者你使用定时器16位自动重装,1T 模式产生波特率,我一直都是用的12m晶振的,在Stc-isp烧写软件里面,有个波特率计算器,很方便
1或许是你定时中断服务程序的问题,中断服务程序里面占用时间过多比如接近25us,那么单片机几乎不用干别的事了,中断出来后很快就又进去了。2,40M晶振当然是不可以的,最大35M,为了稳定最好最大到30M。
STC12C5A60S2即可以使用内部IRC振荡器做时钟源,也可以使用外接晶振的振荡器做时钟源。该单片机还有一个系统时钟分频器,当外接33M晶振时,如果不分频,单片机的时钟频率就是33MHz。串口波特率是根据定时器的设置确定的。void UartInit(void)//9600bps@33.000MHz { SCON = 0x50;//8位数据,可变...
AUXR |= 0x40;//定时器1时钟为Fosc,即1T AUXR &= 0xfe;//串口1选择定时器1为波特率发生器 TMOD &= 0x0f;//清除定时器1模式位 TMOD |= 0x20;//设定定时器1为8位自动重装方式 TL1 = 0xD9;//设定定时初值 TH1 = 0xD9;//设定定时器重装值 ET1 = 0;//禁止定时器1中断 TR1 = 1...
或许是以下几种原因:1:接触不良,看看你的系统上串口与串口线是否接触不好。2:虚焊,看看MAX232是否有虚焊的可能。3:氧化,看看单片机插座触点是否因为长时间不用而氧化,造成接触不良。4:电源电压是否稳定,或许什么地方有虚接、短路等造成电流过大。
用下面这段程序试试(先检查一下晶振频率是不是11.0592MHZ)include <reg51.h> include <intrins.h> char temp;bit flag;void ser() interrupt 4 { RI=0;temp=SBUF;flag=1;} void serinit(){ TMOD=0x20;TH1=0xfd;TL1=0xfd; //设置波特率9600 SM0=0;SM1=1;REN=1;TR1=1;ES=1;EA...
初值和寄存器设置都没有问题,我的设置和你的是一样的,串口通讯成功的。波特率为9600
在你这个情况下,我可以负责的告诉你,12M的晶振波特率只能是2400,9600的情况下会有7.8%的误差,所以会产生乱码,而2400波特率的情况下误差是0.16%,这样就不会产生乱码了,TH1和TL1都设为F3,你再试试。希望能帮到你 根据你的补充,我也补充一下:我前些天也在做单片机和LCD之间的通信,我的LCD...