Está en la página 1de 2

#include <16F873A.

h>

#DEVICE adc=10 //SE UTILIZAAN 10 BITS PARA LA CONVERSION AD ES DECIR DE 0 1024

#fuses HS, NOWDT, NOPROTECT, NOLVP

#Use delay(clock=20M)

#Use standard_io(B)

#define use_portB_lcd true

#include <lcd.c>

int16 valor=0;

float art;

///funcion de atencion de AD//

#int_ad

void ad_int()

valor=read_adc();

set_pwm1_duty(valor);

//programa principal//

void main()

disable_interrupts(global); por si algo

setup_adc_ports(AN0); //configura RA como analogico

setup_adc(ADC_CLOCK_INTERNAL; //Utiliza la convercion del relojninterno

setup_adc_channel(0); //lanza la conversion AD del canal 0


setup_timer_2(t2_div_by_1,224,1); PR2=224 del pwm y tiempo del pwm TPWM=225us

setup_ccp1(CCP_PWM); //Habilita ccp1 en modoPWM

setup_ccp2(CCP_COMPARE_RESET_TIMER); //CCP2 habilitado en modocompare y disparo especial

setup_tier_1(T1_div_by_internal | t1_div_by_1) //configuracion del TMR1

set_timer1(0); //puesta a cero del temporizador

ccp_2=5000; //muestreo cada 1ms a 4Mhz sera 1ms/1us=100

//pero el caso en estudio es a 20Mhz entonces 1ms/0,2us=5000

enable_interrupts(INT_AD); //habilita interrupcion por AD

lcd_inti(); //inicializa lcd

enable_interrupts(global); // arranca las interrupciones habilitadas

do{

Art=valor*5.00/1024.00; //se colocan los decimales para que el float funcione

delay_ms(20);

lcd_gotoxy(1,1); //se colca el cursor en la fila 1 columna 1

printf(lcd_putc,"POT=%1.2f V ",Art);

lcd_gotoxy(1,2);

printf(lcd_putc,"VALOR=%LU ",valor);

while (true);

También podría gustarte