//#include "Define.h"
#include "STC15Fxxxx.H"
//#include "PinDef.h"
//#include "Global.h"
#define CCP_S0 0x10 //P_SW1.4
#define CCP_S1 0x20 //P_SW1.5
void PwmConfig(void)
{
// ACC = P_SW1;
//ACC &= ~(CCP_S0 | CCP_S1); //CCP_S0=0 CCP_S1=0
// P_SW1 = ACC; //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)
ACC = P_SW1;
ACC &= ~(CCP_S0 | CCP_S1); //CCP_S0=1 CCP_S1=0
ACC |= CCP_S0; //(P3.4/ECI_2, P3.5/CCP0_2, P3.6/CCP1_2, P3.7/CCP2_2)
P_SW1 = ACC;
//
// ACC = P_SW1;
// ACC &= ~(CCP_S0 | CCP_S1); //CCP_S0=0 CCP_S1=1
// ACC |= CCP_S1; //(P2.4/ECI_3, P2.5/CCP0_3, P2.6/CCP1_3, P2.7/CCP2_3)
// P_SW1 = ACC;
CCON = 0; //初始化PCA控制寄存器
//PCA定時器停止
//清除CF標志
//清除模塊中斷標志
CL = 0; //復位PCA寄存器
CH = 0;
CMOD = 0x0A; //設置PCA時鐘源 系統時鐘SYSclk/4
//PWM的頻率 = PCA時鐘輸入源頻率/2^n (n=6,7,8)
//禁止PCA定時器溢出中斷
// PCA_PWM0 = 0x00; //PCA模塊0工作于8位PWM
// CCAP0H = CCAP0L = 0x20; //PWM0的占空比為87.5% ((100H-20H)/100H)
// CCAPM0 = 0x42; //PCA模塊0為8位PWM模式
PCA_PWM1 = 0x40; //PCA模塊1工作于7位PWM
// CCAP1H = CCAP1L = 0x20; //PWM1的占空比為75% ((80H-20H)/80H)
CCAPM1 = 0x42; //PCA模塊1為7位PWM模式
// PCA_PWM2 = 0x80; //PCA模塊2工作于6位PWM
// CCAP2H = CCAP2L = 0x20; //PWM2的占空比為50% ((40H-20H)/40H)
// CCAPM2 = 0x42; //PCA模塊2為6位PWM模式
CR = 1; //PCA定時器開始工作
}
這個官方手冊上示例程序。看資料吧。我用的工程應用了下。添加了部分自己的注釋。
CMOD = 0x0A; //設置PCA時鐘源 系統時鐘SYSclk/4
//PWM的頻率 = PCA時鐘輸入源頻率/2^n (n=6,7,8)
配置好后,你自己計算出想要的占空比就可以了
|