//--------------------------------------------------------------------------------------------------------- // Autor: Marcelo Gonçalves Damasceno // Data: março/2008 // Compilador: CCS-C (PCW) ver. 3.150 /*=========================================================================================================*/ // *** Definições do Microcontrolador *** #include<16F819.h> #device adc=10 #use delay(clock=4000000) #fuses XT,NOMCLR,NOWDT,PUT,NOPROTECT,BROWNOUT,NOLVP,WRT,INTRC_IO //---------------------------------------------------------------------------------------------------------- // *** Definições de Hardware *** //---------------------------------------------------------------------------------------------------------- // *** Variaveis globais *** int saida; long valor; //---------------------------------------------------------------------------------------------------------- // *** Sub-Funções *** void init_pic (void){ OSCCON = 0x60; } void converte (void){ if (valor<400) saida = 0x01; if (valor>399 && valor<800) saida = 0x02; if (valor>799 &&valor<1024) saida = 0x04; } /*=========================================================================================================*/ // *** Tratamento da interrupção do timer 0 *** #int_timer0 // tratamento da interrupção do timer 0 void trata_t0(){ static int counter; set_timer0(252); counter ++; if (counter>10){ valor = read_adc(); set_timer0(252); counter=0; } } #int_timer1 // tratamento da interrupção do timer 1 void trata_t1(){ static boolean led; static int counter1; set_timer1(3036); counter1 ++; if (counter1>1){ led=!led; output_bit(pin_a1,led); counter1=0; } } /*=========================================================================================================*/ // *** Programa principal *** void main (void){ output_b(0); init_pic(); setup_ADC_ports(RA0_analog); setup_adc(ADC_CLOCK_INTERNAL); set_adc_channel(0); setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); set_timer0(252); setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); set_timer1(3036); enable_interrupts(global); enable_interrupts(int_timer0); enable_interrupts(int_timer1); for(;;){ converte(); output_b(saida); } } /*=========================================================================================================*/ // Fim do Código /*=========================================================================================================*/