如何利用STC内部的RC振荡器频率做串口通讯

2019-03-24 19:36发布

//--获取内部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 ) ?请大虾们指教 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
jishuaihu
1楼-- · 2019-03-25 02:34
十进制还是十六进制只不过是跟人看的,对于单片机内部数都是一样的。
波特率计算的不清楚了,STC的技术手册上应该有吧!
chunyang
2楼-- · 2019-03-25 04:41
 精彩回答 2  元偷偷看……
ddllxxrr
3楼-- · 2019-03-25 05:57
Li_Lei
4楼-- · 2019-03-25 10:59
//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 为整数即可
Li_Lei
5楼-- · 2019-03-25 14:34
//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';
}
f117c
6楼-- · 2019-03-25 17:44
我下载STC时读过内部频率,用的是STC11L02,内部频率大概在4.7M左右,因为不同的STC内部频率会有所差别,所以想用TH1=TL1=256 - ( CON_OSC / 1 / 32/ 4800) ,做到自适应,波特率为4800,固定,频率不同没关系,指示系统运行速度问题?不知道有没有好方法

一周热门 更多>