Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/10/2010 #1


necesito interpretar este programa
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....

Código 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);

        } 
03/10/2010 #2
Moderador

Avatar de Chico3001

Respuesta: necesito interpretar este programa
Para entenderlo bien necesitas saber C, pero alli te va una descripcion de lo que hace cada bloque

Código 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

Código 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

Código 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

Código 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

Código 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
03/10/2010 #3


Respuesta: necesito interpretar este programa
Gracias amigo por tu respuesta dime donde puedo conseguir un manual sobre las instrucciones
03/10/2010 #4
Moderador

Avatar de Chico3001

Respuesta: necesito interpretar este programa
cualquier tutorial de C te sirve... intenta leyendo los temas marcados como "destacado" de esta seccion... alli hay muy buenos tutoriales de programacion en C para PICs

como este:

Curso de programación en C para microcontroladores PIC
03/10/2010 #5


Respuesta: necesito interpretar este programa
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
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.