#include <16f877.h>
#device adc=8 //Voy a utilizar el Converson Análogo Digital.
//fuses XT,NOWDT,NOLVP,NOBROWNOUT
#USE delay (clock=4000000)
#include <lcd.c>
const float escala=255; //float quiere decir que tiene decimales.
const float d_max=2000; //Podría utiizar cualquier número +#>
void calcula_duty(int val, float&duty) //Tarea exclusiva. ***Lea abajo***
{
duty=(val*d_max)/escala; //"val" cualquier valor en voltios -debido al RESvar-. La escala es 255.
//***Se usa cuando uno necesite calcular un valor ¿cuanta luz, voltaje, humedad, etc?***
}
void main (void)
{
int valor;
float duty;
lcd_init();
lcd_gotoxy(1,1);
lcd_putc("F=500Hz=>2ms");
lcd_gotoxy(1,2);
lcd_putc("duty=ms");
setup_ccp1(ccp_pwm); //eN EL PUErTO CCP1
setup_timer_2(T2_DIV_BY_16,124,1);//<<---------------el 16,124 y 1--------------------------------------------------Aquí!!!!!!
setup_Adc (Adc_clock_div_32); //Lea el puerto A y me de una división de 32.
setup_adc_ports (AN0); //Y que lo lea el el A0.
set_adc_channel(0); //Y me asigne un canal para que lo lea.
while (TRUE)
{valor=read_adc(); //Lea el valor de adc...
set_pwm1_duty(valor); //Y escríbalo -en "(valor)"
calcula_duty(valor,duty); //Ese valor es el que va a calcuar con el duty
lcd_gotoxy(8,2); //Escríbalo sobre la casilla 8 de la segunda línea.
printf(lcd_putc,"%3.2f",duty); //Escríba en la LCD un número entero de 3 cifras -150- con 2 decimales...
//Y que sea correspondiente al duty.
}}
Podrían ayudarme, qué puede ser?
Los valores están señalados arriba por una gran flecha en la linea "setup_timer_2(T2_DIV_BY_16,124,1);" son el 16, el 124 y el 1.
Muchas gracias.