You are on page 1of 5

#include <16f877a.

h>

// ACTIVA PIC 16f877a.h

#device adc=8 //activa el convertidor analogo digital #fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT,NODEBUG,NOPROTECT // incluye l os fusibles del programa #USE DELAY(CLOCK=20000000) // relog 4MHZ #use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,bits=8,parity=N) //avisa el envio p or el puerto serial poir el pin c6 y c7 #use standard_io(a) #use standard_io(c) #include <lcd.c> // incluye la lcd int valo; ///asigna las variable utilizadas int valo1; ///asigna las variable utilizadas int valo2; #int_rda // introduce la variable para el envio serial void serial_isr(){ valo=getchar(); ///asigna las variable utilizadas valo1=getchar(); valo2=getchar(); } float a1; /////////////////// float a2; /// float a3; ///cariables para la conversion ADC int o; /// int h; /// int g; ////////////////// INT N=0; //variable entera para los segundos(n) int JAA=0; //variable entera para los minutos(b) int c=0; //variable entera para los horas(C) int cas=0; //variable entera para la secuencia de los led (Cas) int bandera=0; //variable entera para separador del am y pm(bamdera) Void main(){ //inicia la funcion principal enable_interrupts(global); //abilita la interrupcion global enable_interrupts(int_rda); //abilita la interrupcion por rda setup_adc(ADC_CLOCK_INTERNAL); //deja el reloj activado setup_adc_ports(AN0_AN1_AN3); //adiere el puerto analogo digital lcd_init(); // inicia o resetea el LCD while (true){ a1=5.0*valo/255.0; // se hace la conversion a2=5.0*valo1/255.0; // se hace la conversion a3=5.0*valo2/255.0; if(input(PIN_A4)==0 & input(PIN_A5)==0){ lcd_gotoxy(1,1); //va a la posicion 1,1 del lcd printf(lcd_putc,"Vo1=%2.2f ",a1); // imprime voltaje) a a1 switch(cas){ //es el inicio de los casos case 0: output_b(0b00110000); ///

delay_Ms(258); ///caso 0 primera parte de la secuencia de leds cas=cas+1; /// break; ///// case 1: output_b(0b00011001); delay_Ms(258); ////caso 1 segunda parte de la secuencia de leds cas=cas+1; break; case 2: output_b(0b10101010); delay_Ms(258); ////caso 2 tercera parte de la secuencia de leds cas=cas+1; break; case 3: output_b(0b01010101); delay_Ms(258); ////caso 3 cuarta parte de la secuencia de leds cas=0; break;} //proceso3 output_high(PIN_c0); // el pulso pwm estara en 20% delay_Ms(16); output_low(PIN_c0); // el pulso pwm estara apagado en 80% delay_Ms(64); } if(input(PIN_A4)==0 & input(PIN_A5)==1){ lcd_gotoxy(1,1); //va a la posicion 1,1 del lcd printf(lcd_putc,"Vo2=%2.2f ",a2);// imprime voltaje es = a2 switch(cas){ //es el inicio de los casos case 0: output_b(0b00001111); delay_Ms(258); ////caso 0 primera parte de la secuencia de leds cas=cas+1; break; case 1: output_b(0b01011001); delay_Ms(258); ////caso 1 segunda parte de la secuencia de leds cas=cas+1; break; case 2: output_b(0b10101010); delay_Ms(258); ////caso 2 tercera parte de la secuencia de leds cas=cas+1; break; case 3: output_b(0b01000100); delay_Ms(258);

////caso 3 cuarta parte de la secuencia de leds cas=0; break;} //proceso3 output_high(PIN_c0); // el pulso pwm estara en 50% delay_Ms(40); output_low(PIN_c0); // el pulso pwm estara apagado en 50% delay_Ms(40); } if(input(PIN_A4)==1 & input(PIN_A5)==0){ lcd_gotoxy(1,1); //va a la posicion 1,1 del lcd printf(lcd_putc,"Vo3=%2.2f ",a3); switch(cas){ //es el inicio de los casos case 0: output_b(0b00011111); delay_Ms(258); ////caso 0 primera parte de la secuencia de leds cas=cas+1; break; case 1: output_b(0b11011001); delay_Ms(258); ////caso 1 segunda parte de la secuencia de leds cas=cas+1; break; case 2: output_b(0b10100010); delay_Ms(258); ////caso 2 tercera parte de la secuencia de leds cas=cas+1; break; case 3: output_b(0b01000100); delay_Ms(258); ////caso 3 cuarta parte de la secuencia de leds cas=0; break;} //proceso3 output_high(PIN_c0); // el pulso pwm estara en 80% delay_Ms(64); output_low(PIN_c0); // el pulso pwm estara apagado en 20% delay_Ms(16); } if(input(PIN_A4)==1 & input(PIN_A5)==1){ lcd_gotoxy(1,1); //va a la posicion 1,1 del lcd printf(lcd_putc,"Vo4=------ "); output_b(0b00000000); //// la secuencia de leds delay_Ms(258); //retraso de 1s para la secuencia //proceso3 output_high(PIN_c0);// osciloscopio en 100% }

LCD_GOTOXY(5,2); //la ubicacion en la lcd(5,2) PRINTF(LCD_PUTC,"%2u:%2u:%2u",c,JAA,N); //imprime en la lcd las variables de tipo entero sin signo (00:00:00) IF(N<60){ //si n<60 se cumple la condicion realice lo siguiente({}) N=N+1; //n se incrementara en + uno cada (segundo) DELAY_us(10);} //tiempo de retraso de un segundo else if((n==60)&(JAA<59)){ //para continuar el if con la condicion (seg =60 y los min<60) JAA=JAA+1; //b se incrementara en + uno cada (60s) n=0;} //se reinician los segundos para seguir el ciclo else if((JAA==59)&(c<12)){ //para continuar el if con la condicion (min =60 y los h<24) c=c+1; //n se incrementara en + uno cada (segundo) JAA=0;} //se reinician los minutos para seguir el ciclo else if((c==12)&(bandera==0)){ //para continuar el if con otra condicion la condicion (h =24) LCD_GOTOXY(14,2); //la ubicacion en la lcd(5,2) PRINTF(LCD_PUTC,"p.m"); // imprima PM c=0; //se reinician las horas para seguir el ciclo bandera=bandera+1;} //separador de am y pm else if((c==12)&(bandera==1)){ //para continuar el if con otra condicion la condicion (h =24) LCD_GOTOXY(14,2); //la ubicacion en la lcd(5,2) PRINTF(LCD_PUTC,"a.m"); // imprima AM c=0; //se reinician las horas para seguir el ciclo bandera=0;} //separador de am y pm if((c==0)&(bandera==0)){ //para continuar el if con otra condicion la condicion (h =24) LCD_GOTOXY(14,2); //la ubicacion en la lcd(5,2) PRINTF(LCD_PUTC,"a.m"); //se imprime am bandera=0; //separador de am y pm } set_adc_channel(0); //elije el puerto an0 o=read_adc(); //asigna el valor adc a O putc(o); // envia el valor adc set_adc_channel(1); //elije el puerto an1 h=read_adc(); //asigna el valor adc a H putc(h); //envia el valor adc set_adc_channel(3); //elije el puerto an1 g=read_adc(); //asigna el valor adc a G

putc(g); }}

//envia el valor adc

You might also like