Código CCS
#include <main.h>
void main()
{
int16 ciclodetrabajo = 510;
setup_adc_ports(sAN0);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_2(T2_DIV_BY_16,255,1); //4.0 ms overflow, 4.0 ms interrupt
setup_ccp1(CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);
set_pwm1_duty(ciclodetrabajo);
int16 valordigital = 0;
float valoranalogico = 0;
set_adc_channel(0);
while(TRUE)
{
valordigital=read_adc();
valoranalogico=(5.00*valordigital)/65536.0;
ciclodetrabajo = (valoranalogico * 1020) / 5;
set_pwm1_duty(ciclodetrabajo);
}
}
Diagrama proteus 8
#include <main.h>
void main()
{
int16 ciclodetrabajo = 510;
setup_adc_ports(sAN0);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_2(T2_DIV_BY_16,255,1); //4.0 ms overflow, 4.0 ms interrupt
setup_ccp1(CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);
set_pwm1_duty(ciclodetrabajo);
int16 valordigital = 0;
float valoranalogico = 0;
set_adc_channel(0);
while(TRUE)
{
valordigital=read_adc();
valoranalogico=(5.00*valordigital)/65536.0;
ciclodetrabajo = (valoranalogico * 1020) / 5;
set_pwm1_duty(ciclodetrabajo);
}
}
Diagrama proteus 8