这个程序是根据手册上的例程来写的,但是仿真的时候发现CL数据完全没有变化,也没有任何的输出这个是什么问题?正在学习中。
#include "STC15Fxxxx.H"
#include "config.h"
/****************************************************/
/*函数名:PWM初始化函数
/*调 用:PWM_init();
/*参 数:无
/*返回值:无
/*结 果:将PCA初始化为PWM模式,初始占空比为0
/*备 注: 需要更多路PWM输出直接插入CCAPnH和CCAPnL即可
/****************************************************/
void PWM_init()
{
CCON=0;
CMOD=0x02; //设置PCA定时器
CL=0x00;
CH=0x00;
PCA_PWM0=0x00;
CCAPM0=0x42; //PWM0设置PCA工作方式为PWM,(0100 0010)
CCAP0L=0x20; //设置PWM0初始值与CCAP0H相同
CCAP0H=0x20; //PWM0初始值(100-20)/100
AUXR1 &= ~0x30;
/*
CCAPM1=0x42; //PWM1设置PCA工作方式为PWM,(0100 0010)
CCAP1L=0x00; //设置PWM1初始值与CCAP1H相同
CCAP1H=0x00; //PWM1初始值为0
CCAPM2=0x42; //PWM0设置PCA工作方式为PWM,(0100 0010)
CCAP2L=0x00; //设置PWM2初始值与CCAP0H相同
CCAP2H=0x00; //PWM2初始值为0
CCAPM3=0x42; //PWM3设置PCA工作方式为PWM,(0100 0010)
CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同
CCAP3H=0x00; //PWM3初始值为0
*/
CR=1;
}
/************************************************************************/
/*函数名:PWM0占空比设置函数
/*调 用:PWM0_set();
/*参数:0x00--0xff(0-255)
/*返回值:无
/*结果:设置PWM模式占空比,为0时全部高电平,为1时为全部低电平
/*备注:如果要PWM1的设置函数,只需把CCAP0L和CCAP0H中的0改为1即可
/************************************************************************/
void PWM_set(unsigned char Duty_cycle)
{
CCAP0L=Duty_cycle; //设置值直接写入CCAP0L
CCAP0H=Duty_cycle; //设置值直接写入CCAP0H
}
void main()
{
P1M1 =0x00; // 0b00000000; //P1.0\P11设置为输出
P1M0 =0x03; // 0b00000011; //
PWM_init();
// PWM_set(0x10);
while(1);
} |