stc12c5a60s2的pwm问题,求指点
时间:10-02
整理:3721RD
点击:
#include<STC12C5A.h>
void PWM_init(void)
{
CMOD=0x02;//pca模式设置,设置pwm频率
CL=0x00;
CH=0x00;
CCAPM0=0x42;//设置pca工作方式位pwm模式(0100 0010)
CCAP0L=0x00;//pwm0初始值为0
CCAP0H=0x00;
CR=1;//启动定时器
//也可以增加设置pwm1,pwm2...
}
/*******************************pwm占空比设置*************************************************/
void PWM_set(unsigned char a)//参数0x00~0xff,也可以用0~256
{
CCAP0L=a;//设置值写入CCAP0L
CCAP0H=a;//设置值写入CCAP0H
}
void main()
{
PWM_init();
PWM_set(0xff);
}
我程序这样写,理论上p1.3电压应该为0,可是为什么我测量电压为4.76V,而且我发现,当我CCAP0L为e3时,输出的电压为最小,1.03V,之前0x00为5.12V,随着CCAP0L增大电压减小,之后随着CCAP0L增大,电压又反而上升了,这是怎么回事?
void PWM_init(void)
{
CMOD=0x02;//pca模式设置,设置pwm频率
CL=0x00;
CH=0x00;
CCAPM0=0x42;//设置pca工作方式位pwm模式(0100 0010)
CCAP0L=0x00;//pwm0初始值为0
CCAP0H=0x00;
CR=1;//启动定时器
//也可以增加设置pwm1,pwm2...
}
/*******************************pwm占空比设置*************************************************/
void PWM_set(unsigned char a)//参数0x00~0xff,也可以用0~256
{
CCAP0L=a;//设置值写入CCAP0L
CCAP0H=a;//设置值写入CCAP0H
}
void main()
{
PWM_init();
PWM_set(0xff);
}
我程序这样写,理论上p1.3电压应该为0,可是为什么我测量电压为4.76V,而且我发现,当我CCAP0L为e3时,输出的电压为最小,1.03V,之前0x00为5.12V,随着CCAP0L增大电压减小,之后随着CCAP0L增大,电压又反而上升了,这是怎么回事?
要测也是测输出的PWM波型吧,直接测电压肯定不准啊,因为他有一定的频率,直流测不出来的。