Toll-Free Customer Support 24/7

PWM interfacing Code

char current_duty;
char current_duty1;

void main(){

DDB0_bit = 0; // Set PORTB pin 0 as input
DDB1_bit = 0; // Set PORTB pin 1 as input

DDC0_bit = 0; // Set PORTC pin 0 as input
DDC1_bit = 0; // Set PORTC pin 1 as input

current_duty = 32; // initial value for current_duty
current_duty1 = 32; // initial value for current_duty

DDB3_bit = 1; // Set PORTB pin 3 as output pin for the PWM (according to datasheet)
DDD7_bit = 1; // Set PORTD pin 7 as output pin for the PWM (according to datasheet)

PWM1_Init(_PWM1_FAST_MODE, _PWM1_PRESCALER_8, _PWM1_NON_INVERTED, current_duty);
PWM2_Init(_PWM2_FAST_MODE, _PWM2_PRESCALER_8, _PWM2_NON_INVERTED, current_duty1);

do {
if (PINB0_bit) { // Detect if PORTB pin 0 is pressed
Delay_ms(40); // Small delay to avoid deboucing effect
current_duty++; // Increment duty ratio
PWM1_Set_Duty(current_duty); // Set incremented duty
}
else
if (PINB1_bit) { // Detect if PORTB pin 1 is pressed
Delay_ms(40); // Small delay to avoid deboucing effect
current_duty--; // Decrement duty ratio
PWM1_Set_Duty(current_duty); // Set decremented duty ratio
}
else
if (PINC0_bit) { // Detect if PORTC pin 0 is pressed
Delay_ms(40); // Small delay to avoid deboucing effect
current_duty1++; // Increment duty ratio
PWM2_Set_Duty(current_duty1); // Set incremented duty
}
else
if (PINC1_bit) { // Detect if PORTC pin 1 is pressed
Delay_ms(40); // Small delay to avoid deboucing effect
current_duty1--; // Decrement duty ratio
PWM2_Set_Duty(current_duty1); // Set decremented duty ratio
}

} while(1); // Endless loop

}

Back to top