|
我剛做調(diào)試,可以調(diào)用PCA_Init (占空比值)來設(shè)置占空比做調(diào)速, 設(shè)置6位模式是100%做63級(jí)細(xì)分,設(shè)置7位模式是100%做127級(jí)細(xì)分,設(shè)置8位模式是100%做254級(jí)細(xì)分,足夠使用了.
#include <15W204S.h>
//#include "intrins.h"
#define CCP_S0 0x10 //P_SW1.4
#define CCP_S1 0x20 //P_SW1.5
void PWM_Inte()
{
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;
// 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;
CCON = 0; //初始化PCA控制寄存器
//PCA定時(shí)器停止
//清除CF標(biāo)志
//清除模塊中斷標(biāo)志
CL = 0; //復(fù)位PCA寄存器
CH = 0;
CMOD = 0x0000; //設(shè)置PCA時(shí)鐘源
}
void PCA_Init (uint osc)
{
//禁止PCA定時(shí)器溢出中斷
//PCA_PWM0 =0x80; //PCA模塊0工作于8位PWM
//CCAP0H = CCAP0L = osc; //PWM0的占空比為87.5% ((100H-20H)/100H)
//CCAPM0 = 0x42; //PCA模塊0為8位PWM模式
PCA_PWM1 = 0x40; //PCA模塊1工作于7位PWM
CCAP1H = CCAP1L = osc; //PWM1的占空比為75% ((80H-20H)/80H)
CCAPM1 = 0x42; //PCA模塊1為7位PWM模式
PCA_PWM2 = 0x20; //PCA模塊2工作于6位PWM
CCAP2H = CCAP2L = osc; //PWM2的占空比為50% ((40H-20H)/40H)
CCAPM2 = 0x42; //PCA模塊2為6位PWM模式
CR = 1; //PCA定時(shí)器開始工作
}
void PCA_off (void)
{
//CR = 0;
CCON = 0; //初始化PCA控制寄存器
//PCA定時(shí)器停止
//清除CF標(biāo)志
//清除模塊中斷標(biāo)志
} |
評(píng)分
-
查看全部評(píng)分
|