宏晶STC89C52产生波特率115200,需要C语言的,晶振11.0592MHz

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-27
宏晶STC89C52产生波特率115200,需要C语言的,晶振11.0592MHz

void UartInit(void)//115200bps@11.0592MHz
{
SCON = 0x50;//8位数据,可变波特率
AUXR |= 0x40;//定时器1时钟为Fosc,即1T
AUXR &= 0xFE;//串口1选择定时器1为波特率发生器
TMOD &= 0x0F;//设定定时器1为16位自动重装方式
TL1 = 0xE8;//设定定时初值
TH1 = 0xFF;//设定定时初值
ET1 = 0;//禁止定时器1中断
TR1 = 1;//启动定时器1
}

如果STC单片机处于6T模式,RCAP2H=0xFF,RCAP2L=0xD0。如果为12T方式RCAP2H=0xFF,RCAP2L=0xE8。然后设置T2CON=0x34即完成对串口的初始化,其余的操作就和普通串口一样了。

串口通讯一般采用 工作模式1——10位异步收发(1起始+8数据+1停止),由定时器1 提供 波特率,而此模式的 波特率 计算公式:Baud=2^(SMOD)/32 ×T1溢出率;
注:T1溢出率=1/T1中断时间; SMOD 为 倍频系数(0 跟 1);

当 T1 溢出率最大时(即中断时间最短),波特率最大,中断最短也只能 =1个机械周期,晶振Fosc=11.0592MHz, 机械周期 t=12/Fosc,溢出率就= Fosc/12,代入上面公式,
Baud=(2^1)÷32×11059200/12= 57600 bps,支持不了LZ 要的 115200 的波特率,不过 好在,STC89C52单片机,是支持 机械周期 倍频的(在烧录时选择“双倍频”),它可以把 12T 模式 倍频为 6T模式,也就是 把上面 的12 替代为 6,计算结果 = 115200,刚好等于 LZ 要的。

void
UartInit(void)
//115200bps@11.0592MHz
{
SCON
=
0x50;
//8位数据,可变波特率
AUXR
|=
0x40;
//定时器1时钟为Fosc,即1T
AUXR
&=
0xFE;
//串口1选择定时器1为波特率发生器
TMOD
&=
0x0F;
//设定定时器1为16位自动重装方式
TL1
=
0xE8;
//设定定时初值
TH1
=
0xFF;
//设定定时初值
ET1
=
0;
//禁止定时器1中断
TR1
=
1;
//启动定时器1
}

宏晶的stc下载软件里有计算的方法,可以直接计算。

楼主采纳的答案,是没有错的。

但是,才用“双倍频”,之后,整个单片机的时间,

包括定时、软件延时,都会受到了影响。

如果用 T2 控制波特率,也可以满足题目要求,
而且不需要改动整个系统的时间。

  • stc89c52与stc89c52se有什么区别?
    答:STC89C52RC是宏晶公司的增强型MCS-51单片机,与Atmel公司的AT89C52相比,有以下优点:支持STC的2线制下载方式,下载程序更方便 支持6T模式(在6T模式下,6个时钟周期就是一个机器周期)片内集成了4kB容量的E²PROM 带有P4口,具有更多的I/O 程序存储器拥有更多的擦写寿命(STC标称可以擦写10万次...
  • 8051单片机的程序,为什么答案是这个,分析过程?
    答:正常的过程调用后会返回到下一个指令地址,即 0108h,但是因为这个过程修改了返回地址;0503h,0504h 句将 010ah 压入了堆栈,成为新的返回地址;SP(42h):0108h ;SP(44h):010ah ;如此过程返回地址为 010ah,那么 ADD A,#10H 就没有执行;...
  • AT89C52和STC89C52的区别在哪里呢?
    答:一、生产的公司不同 1、AT89C52是Atmel公司生产;2、STC89C52是宏晶公司生产。二、RAM和ROM不同 1、AT89C52是128byte RAM,4K ROM;2、STC89C52是256Byte,8K ROM。三、定时器数量不同 1、AT89C52有T0、T1两个16位定时器;2、STC89C52有T0、T1、T2三个16位定时器。AT89C52的程序加密 AT89C52有3个...
  • 目前我手里有三个单片机芯片,上面有些文字,不知道什么含义,请大神帮 ...
    答:第一行是单片机品牌与型号,STC89C52,宏晶(国产)的89C52单片机。第二行是单片机封装,PDIP40,双列直插40针封装。第三行应该是厂家出厂批次号,具体内容得看手册对该段印字的描述。如果3个单片机,第一行是 一致的,那么他们就是 同一款单片机。第三行不一致,只是说明,他们是不同时间生产出来的。
  • STC89S52单片机与STC89C52单片机是一样的吗
    答:STC单片机用串口编程的。只有STC89C52 有AT89S52,和STC差不多。不过是通过ISP端口编程的。主要是编程的方法不同。
  • at89s52与STC89C52有什么区别
    答:at89s52与STC89C52区别为:生产公司不同、存储器不同、定时器不同。一、生产公司不同 1、at89s52:at89s52是ATMEL公司生产的一个低电压,高性能CMOS8位单片机。2、STC89C52:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器。二、存储器不同 1、at89s52:at89s52含8k bytes的可反复擦写的Flash...
  • STC89C52的单片机应该配个什么的编程器,因为我的串口转USB下载实在是不...
    答:其它的编程器一来价格贵,二来不如串口下载方便,还是建议你先别买。首先可以考虑降低波特率,比如2400、1200,这样成功率好像可以提高些;其次可以直接通过宏晶科技购买USB转串口线,他们针对这个问题提供了合适的转换线。
  • 51单片机存储空间释放
    答:你说的我感觉应该是想把程序里数据给去掉,那应该是不可能的吧,首先程序你是放在rom中,不能自己进行擦出,你可以用cd卡来存储歌词,和MP3,单片机存储容量太小,不可能把MP3和歌词全部存储,想象我们的mp3,不知道你拆过没有,MP3除了主控制芯片还有外扩的存储芯片,就是这样,mp3自带的存储器也只...
  • 51单片机自制的烧写器,为什么总是烧写不了程序到单片机里
    答:至于USB转串口,一般情况电脑不报错就没问题了。既然你用的是STC的,下载的时候要注意:首先要搞清楚串口号是不是你在用的串口。下载的时候要先给单片机断电,然后点下载程序,再给单片机上电。光复位是不行的,一定要保证单片机两端没电压才算断电,并且前后顺序一定不能倒。另外,晶振不能不接,波特...
  • stc单片机能反复烧写吗
    答:不是所有单片机都能重复烧写,要看存储介质是不是FLASH 的,如果是就是能反复烧写程序。一般现在我们用的芯片都是FLASH的,那些只能烧写一次的一般用于做产品。