P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
CCON = 0x00;
CMOD = 0x08; //PCA clock is the system clock
CL = 0x00;
CH = 0x00;
//
――
6 bit PWM
――
CCAPM0 = 0x42; //PCA 0 is in PWM mode
PCA_PWM0 = 0x80; //PCA 0 outputs 6-bit PWM
CCAP0L = 0x20; //PWM duty cycle is 50%[(40H-20H)/40H]
CCAP0H = 0x20;
//
――
7 bit PWM
――
CCAPM1 = 0x42; //PCA 1 is in PWM mode
PCA_PWM1 = 0x40; //PCA 1 outputs 7-bit PWM
CCAP1L = 0x20; //PWM duty cycle is 75%[(80H-20H)/80H]
CCAP1H = 0x20;
//
――
8 bit PWM
――
// CCAPM2 = 0x42; //PCA 2 is in PWM mode
// PCA_PWM2 = 0x00; //PCA 2 outputs 8-bit PWM
// CCAP2L = 0x20; //PWM duty cycle is 87.5%[(100H-20H)/100H]
// CCAP2H = 0x20;
//
――
10 bit PWM
――
CCAPM2 = 0x42; //PCA 2 is in PWM mode
PCA_PWM2 = 0x00; //PCA 2 outputs 10-bit PWM
CCAP2L = 0x20; // PWM duty cycle is 96.875%[(400H-20H)/400H]
CCAP2H = 0x20;
CR = 1; //Start PCA timer
while (1);
}
Assembly code
;Operating frequency for test is 11.0592MHz
CCON DATA 0D8H
CF BIT CCON.7
CR BIT CCON.6
CCF2 BIT CCON.2
CCF1 BIT CCON.1
CCF0 BIT CCON.0
CMOD DATA 0D9H
CL DATA 0E9H
CH DATA 0F9H
CCAPM0 DATA 0DAH
CCAP0L DATA 0EAH
CCAP0H DATA 0FAH
PCA_PWM0 DATA 0F2H
CCAPM1 DATA 0DBH
CCAP1L DATA 0EBH
CCAP1H DATA 0FBH
PCA_PWM1 DATA 0F3H
CCAPM2 DATA 0DCH
CCAP2L DATA 0ECH
CCAP2H DATA 0FCH