新手刚学,真的不会,指导下!
#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
不能换晶振啊,程序更改不可以么?
追答改程序不如换晶振的精度高