STC12C5A60S2单片机频率是怎么计算出来的,或者怎么改!!

新手刚学,真的不会,指导下!
#include<reg51.h>
#include<intrins.h>
#define FOSC 11000000L
sfr CCON=0XD8;
sbit CCF0=CCON^0;
sbit CCF1=CCON^1;
sbit CR=CCON^6;
sbit CF=CCON^7;
sfr CMOD=0XD9;
sfr CL=0XE9;
sfr CH=0XF9;
sfr CCAPM0=0XDA;
sfr CCAP0L=0XEA;
sfr CCAP0H=0XFA;
sfr CCAPM1=0XDB;
sfr CCAP1L=0XEB;
sfr CCAP1H=0XFB;
sfr PCAPWM0=0XF2;
sfr PCAPWM1=0XF3;
void main()
{
CCON=0;
CL=0;
CH=0;
CMOD=0X02;这里是频率21.6KHZ要是要12.3KHZ呢,怎么弄?

CCAP0H=CCAP0L=0X80;
CCAPM0=0X42;
CCAP1H=CCAP1L=0X80;
CCAPM1=0X42;
CR=1;
while(1);
}

频率计算 系统时钟/分频系数/256

系统时钟不一定等于晶振频率

但对于STC12C5A60S2不专门设置的话 系统时钟是等于晶振频率

CMOD=0X02 分频系数是2

PWM频率=11000000/2/256=21.48 khz

如果想要PWM频率是12.3KHZ

分频系数=11000000/256/12300=3.49,介于3和4之间,确实不太好办

可选 CMOD=0X0A 分频系数是4

也可选为3,这时可设CMOD=0X04 即定时器0的溢出脉冲为计数器输入 

可将定时器0设为自动重装模式 初值为256-3=253

若需要更精确的频率,只有更换晶振,或采用软件PWM模式

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-25
用8位自动重装中断溢出做时钟源或者利用外部时钟源
第2个回答  2015-01-26
换晶振...追问

不能换晶振啊,程序更改不可以么?

追答

改程序不如换晶振的精度高

第3个回答  2015-01-26
关注这个问题
相似回答