8435|8

273

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

如何利用STC内部的RC振荡器频率做串口通讯 [复制链接]

//--获取内部RC,但是需要转化成10进制
void Get_Rc(char rc)
{
  uchar idata *idata_point;
  uchar i=0;
uchar j=0;
  idata_point=0xF8;
for(j=0;j<=3;j++)
{
i=*idata_point;
//--send_UART(i);
idata_point++;
}

}
以上是我读内部RC频率的程序,不知道如何将其转化成10进制的频率,并进行串行通讯,波特率用这个公式:TH1=TL1=256 - ( CON_OSC / 1 / 32/ 11520 ) ?请大虾们指教
此帖出自51单片机论坛

最新回复

~(u8)(CON_OSC/(4800*12*32));//12t ~(u8)(CON_OSC/(4800*32));//1t指针取出的8位数据什么含义得看看手册了 [ 本帖最后由 huo_hu 于 2011-11-16 14:45 编辑 ]  详情 回复 发表于 2011-11-16 14:40
点赞 关注
 

回复
举报

3404

帖子

6

TA的资源

裸片初长成(初级)

沙发
 
十进制还是十六进制只不过是跟人看的,对于单片机内部数都是一样的。
波特率计算的不清楚了,STC的技术手册上应该有吧!
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

139

TA的资源

版主

板凳
 
基于RC时钟,如果想波特率准确需要有个外部基准,STC的MCU在出厂时都设置成默认内部RC振荡器的(如果该型号有的话),编程时编程器或上位PC会给出一个定频信号,MCU据此来判断本身的时钟频率并生成波特率发生器的定时器常数。
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

16

TA的资源

版主

4
 

内部RC不会太准地,用外接晶振把。都是这么用的

此帖出自51单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

4008

帖子

0

TA的资源

版主

5
 
//2400*32*12=921600                2400*32=76800        14400*32=460800
//#define SYSOSCCLOCK                 31795200        31334400//晶振频率,HZ单位,取值倍数接近
#define SYSOSCCLOCK                         31795200
#define COM_BAUD_RATE                        14400
#define COM_SMOD_DOUBLE_SPEED                        //倍频设置时波特率的实际值=波特率设定*2 ,注释掉不设置倍频

/*********************************以下不必修改****************************************/
#if (SYSOSCCLOCK/32/COM_BAUD_RATE > 256)

#else
        #define COM_TIMER_1T_ENABLE                // 1T使能,与BRT使用无关
#endif

#ifdef COM_TIMER_1T_ENABLE
        #define COM_TIMER_SETUP        0xff-(uint8)(SYSOSCCLOCK/32/COM_BAUD_RATE)+1
#else
        #define COM_TIMER_SETUP        0xff-(uint8)(SYSOSCCLOCK/12/32/COM_BAUD_RATE)+1
#endif

确定 COM_TIMER_SETUP 为整数即可
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

6
 
//stc特殊寄存器
sfr AUXR           = 0x8E;
sfr BRT         = 0x9C; //S2 Baud-Rate Timer   stc12c5A

void Com_Init(void)
{
//BRT设置
#ifdef COM_TIMER_1T_ENABLE
                AUXR|=0x4;
#endif
                  BRT= COM_TIMER_SETUP;
                AUXR|=0x11;                        //使能BRT
/**///串口设置
#ifdef COM_SMOD_DOUBLE_SPEED       
//        PCON |= 0x80;                //=0默认32分频        =1 16
#endif
        SCON = 0x50;                //0101,0000 8位可变波特率,无奇偶校验
        RI=0;
        TI=0;
        ES=1;                                //串口中断响应
        SBUF='O';
        while (!TI) TI=0;
        SBUF='K';
}
此帖出自51单片机论坛
 
 
 

回复

273

帖子

0

TA的资源

纯净的硅(中级)

7
 
我下载STC时读过内部频率,用的是STC11L02,内部频率大概在4.7M左右,因为不同的STC内部频率会有所差别,所以想用TH1=TL1=256 - ( CON_OSC / 1 / 32/ 4800) ,做到自适应,波特率为4800,固定,频率不同没关系,指示系统运行速度问题?不知道有没有好方法
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

8
 

~(u8)(CON_OSC/(4800*12*32));//12t ~(u8)(CON_OSC/(4800*32));//1t

指针取出的8位数据什么含义得看看手册了

[ 本帖最后由 huo_hu 于 2011-11-16 14:45 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

273

帖子

0

TA的资源

纯净的硅(中级)

9
 
谢谢huo_hu,我公式没用对
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表