necesito interpretar este programa

#1
hola amigos tengo un problema con un programa que esta en lenguaje C con el pic 16f877, se trata de un voltimetro digital que se visualiza en una pantalla LCD, la verdad es que no entiendo muy bien el programa asi que queria saber si alguien me puede ayudar con las instrucciones, necesito saber que hace cada una de las instrucciones. se los agradeceria mucho ah y si tambien me pudieran decir en donde puedo encontrar el funcionamiento del codificador de analogo a digital que posee este pic, ayudenme por favor nose que hacer...!!!!

aca les dejo mi programa para que me ayuden....:confused:

PHP:
		#INCLUDE	<C:\Archivos de programa\PICC\Devices\16F877A.H>
		#DEVICE		ADC=8		//SCONVERSION A 8 BITS
		#FUSES		XT,NOWDT,NOLVP,NOPROTECT
		#USE	fast_io(b)
		#use	delay(clock=4000000)
		#byte	portb=6
		#byte	portc=7
		#use standard_io(D)
		#use standard_io(B)
		#INCLUDE	<C:\Archivos de programa\PICC\Drivers\lcd.c>
		void main(void)
		{
			long x;
			long centena;
long decena;
long unidad;
int unidadout;
		int decenaout;
	int centenaout;
			set_tris_b(0);
			set_tris_c(255);
			SETUP_ADC_PORTS(AN0_AN1_AN3);
			SETUP_ADC(ADC_CLOCK_DIV_32);
			
do{

			int	x;
				
	//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX		
				SET_ADC_CHANNEL(0);
				delay_ms(500);
				x=read_adc();
				delay_ms(500);
				centena=x/100;
				decena=(x-centena*100)/10;
				unidad=(x-centena*100-decena*10);





				if (!input(PIN_C0)) // inicio del envío de un byte
				{

				lcd_init();
	lcd_putc("principal\n");
				lcd_putc(centena+48);
				lcd_putc(decena+48);
				lcd_putc(unidad+48);
lcd_putc("V");

				}
				else
				{
					lcd_init();
	lcd_putc("respaldo\n");
				lcd_putc(centena+48);
				lcd_putc(decena+48);
				lcd_putc(unidad+48);
lcd_putc("V");
				}

			}while(TRUE);

		}
 
Última edición por un moderador:
#2
Para entenderlo bien necesitas saber C, pero alli te va una descripcion de lo que hace cada bloque

PHP:
		#INCLUDE	<C:\Archivos de programa\PICC\Devices\16F877A.H>
		#DEVICE		ADC=8		//SCONVERSION A 8 BITS
		#FUSES		XT,NOWDT,NOLVP,NOPROTECT
		#USE	fast_io(b)
		#use	delay(clock=4000000)
		#byte	portb=6
		#byte	portc=7
		#use standard_io(D)
		#use standard_io(B)
		#INCLUDE	<C:\Archivos de programa\PICC\Drivers\lcd.c>
Hasta aqui son declaraciones que le indican al compilador que micro se esta usando, que librerias extras se requieren y parte de la configuracion del microcontrolador

PHP:
		void main(void)
		{
			long x;
			long centena;
            long decena;
            long unidad;
            int unidadout;
            int decenaout;
            int centenaout;
Hasta aqui comienza el programa principal y se declaran las variables que se usaran a lo largo del programa

PHP:
    			set_tris_b(0);
			set_tris_c(255);
			SETUP_ADC_PORTS(AN0_AN1_AN3);
			SETUP_ADC(ADC_CLOCK_DIV_32);
Se inicializan los puertos de comunicacion y se configura el convertidor AD

PHP:
    do{

			int	x;
				//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX		
				SET_ADC_CHANNEL(0);
				delay_ms(500);
				x=read_adc();
				delay_ms(500);
				centena=x/100;
				decena=(x-centena*100)/10;
				unidad=(x-centena*100-decena*10);
Se inicia una conversion AD cada 500mS y se parte y se guarda el resultado en las variables que se usaran despues para mostrar el dato en el display

PHP:
				if (!input(PIN_C0)) // inicio del envío de un byte
				{

				lcd_init();
	lcd_putc("principal\n");
				lcd_putc(centena+48);
				lcd_putc(decena+48);
				lcd_putc(unidad+48);
lcd_putc("V");

				}
				else
				{
					lcd_init();
	lcd_putc("respaldo\n");
				lcd_putc(centena+48);
				lcd_putc(decena+48);
				lcd_putc(unidad+48);
lcd_putc("V");
				}

			}while(TRUE);

		}
Si se detecta un nivel en el puerto C.0 se envia el resultado al display y se repite el programa desde el inicio
 
#5
HOLA AMIGO, QUISIERA SABER SI ME PUDIERAS DECIR QUE ES LO QUE HACEN CADA UNA DE ESTAS INSTRUCCIONES:
#USE fast_io(b)
#byte portb=6
#byte portc=7
#use standard_io(D)
#use standard_io(B)

GRACIAS POR TU RESPUESTA
 
Arriba