P16F84A contador pic c compiler

#1
Saludos gente

este programa realiza la cuenta en un display de 7seg de 0 a 9 constantemente, aclaro que no me da errores ni en el codigo ni en la simulacion, al ejecutar el codigo antes de que ejecute las lineas del bucle FOR, se mostrara 0 en el 7 seg y ya dentro del bucle FOR "contador" tendria valor 0 y se usa esta variable para accesar al contenido de la variable DIGITO, esta variable tiene 10 elementos y al ejecutar PORTB=DIGITO[0];(¿que sucede?)no se supone que para indexar a algun elemento el indice tiene que valer entre 1-10?

HTML:
#INCLUDE    <16f84a.h>
#FUSES      XT,NOWDT
#USE        DELAY (clock=4000000)
#BYTE       PORTB=0x06
#BYTE       TRISB=0x86
byte        DIGITO[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};

void main(void){
   TRISB=0x00;
   PORTB=0x3F;
   delay_ms(1000);
   while(TRUE){
      int8 contador=0;
      for(contador=0;contador<10;contador++){
         PORTB=DIGITO[contador]; //que es lo que sucede PORTB=DIGITO[0];   ?
         delay_ms(1000);
      }         
   }
}
Bueno espero me puedan aclarar eso.
Gracias
 
Última edición:
#2
No, en C, un vector de X elementos se indexa entre el elemento primero que es el 0, y el ultimo, que es el X-1. Por eso en el bucle for se empieza con inicializar a 0 el contador para el primer elemento y se ejecuta el bucle interno mientras el contador sea < 10, porque cuando sea 10, ya no va a cumplir la condición y saltará fuera del bucle.
 
#4
En C el índice comienza en 0 y termina en n-1, solo cuando declaras la matriz es que pones el número de elementos n, pero al acceder la base es 0.
 
Arriba