Autor Tema: Ayuda, nuevo en C  (Leído 2205 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado diegostreetbob

  • PIC12
  • **
  • Mensajes: 51
Ayuda, nuevo en C
« en: 27 de Junio de 2009, 12:09:46 »
Hola compañeros, acabo de iniciarme con la programación en C, aunque anteriormente he trabajado con picbasic y me gustaria que alguien me explicara en este las lineas que no entiendo, es un contador de 0 a 99 con 2 displays 7seg de cátodo común,
No entiendo las lineas marcadas con asteriscos**********
#include <16F876.h>
#USE DELAY( CLOCK=4000000)
#FUSES XT,NOWDT,NOPROTECT,NOPUT
#USE fast_IO (B)
#USE fast_IO (A)
byte CONST DISPLAY[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//00111111,00000110,etc,,,etc,,,*********************
byte ud=0,dec=0;********************************ud y dec no estan definidas perviamente con ningu tipo de variable, no entiendo de donde salen
SET_TRIS_B(0x00);
SET_TRIS_A(0x00);
OUTPUT_B(0);
 for( ;; ){
   for (dec=0;dec<10;dec++){       //Cuenta digito decenas
      for (ud=0;ud<10;ud++){
         OUTPUT_A(0x02);           //cat_D=apagado,cat_U=encendido
         OUTPUT_B(DISPLAY[ud]);   //Digito unidades
         delay_ms(50);            //Para evitar parpadeos
         
         if (dec==0) output_a(0x03);     //Si decenas=0, cat_D=apagado
         else output_a(0x01);           //Si decenas>0, cat_D=encendido
                 
         OUTPUT_B(DISPLAY[dec]);      //Digito decenas
         delay_ms(50);               //Para evitar parpadeos
     }
   }
 }
}

Gracias a todos por vuestra ayuda

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda, nuevo en C
« Respuesta #1 en: 27 de Junio de 2009, 13:52:20 »
byte = int = 8 bits.
CONST DISPLAY[10], es un arreglo de 10 elementos.
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; es la definiciones de elementos.

Y bueno la siguiente, entendiendo byte ya esta...
« Última modificación: 27 de Junio de 2009, 15:32:35 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado setshomaru

  • PIC12
  • **
  • Mensajes: 66
Re: Ayuda, nuevo en C
« Respuesta #2 en: 27 de Junio de 2009, 15:28:47 »
byte ud=0,dec=0;********************************ud y dec no estan definidas perviamente con ningu tipo de variable, no entiendo de donde salen

esa es la definicion, se definen las variables ud y dec como byte (de 0 a 255) y se inicializan en cero ud=0 y dec=0 de lo contrario toman valores aleatorios
entre mas se, me doy cuenta que no se nada

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: Ayuda, nuevo en C
« Respuesta #3 en: 28 de Junio de 2009, 03:29:15 »
hola bueno lo que hace essas lineas es: son numeros hexadesimales de el cual esta asociado a una matris byte CONST DISPLAY[10], mas abajo las define como salida, osea por ejemplo el primer dijito 0x3F equivale a 00111111 en binario y eso equivale a las salidas en alto o bajo del pic que en este caso la asigna al puerto B de este mismo, para poder asi visualizar un digito en el display, donde los 0 equivale a las salidas en alto del pic y los 1 equivalen a entradas. por lo tanto B6 y B7 esta configurado como salida y B0 a B5 como entradas, entonces por cada digito que quiera ver saca un valor de la matriz y lo mete al puerto B y se ve reflejado en el display.

a y  up + dec son dos variables que solo pueden tomar un valor o es = 0 ó 1 y nada mas por eso se define byte.

espero aver sido claro saludos

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: Ayuda, nuevo en C
« Respuesta #4 en: 28 de Junio de 2009, 03:37:52 »
hola de nuevo ley mal sorry:  byte ud=0,dec=0; Carga 8 bits en el segmento del área de datos del puerto B, con cada dirección del bit especificado


 

anything