Contador 0-9 display 7 segmentos

Hola amigos, soy nuevo en esto y quiero aprender. Un amigo que es programador me ayudó con un programa para el arduino que cuente del 0 al 9 en un display de 7 segmentos. Al momento de cargarlo realiza la cuenta de manera correcta, pero después algunos números ya no se ven bien y después de un rato más se vuelve loco y muestra datos muy rápido en el display que no se alcanzan a distinguir. Este es el código:

char numero[10][8]={"1000000","1111001","0100100","0110000","0011001","0010010","0000010","1111000","0000000","0010000"};
int puerto[7]={2,3,4,5,6,7,8};

void setup() {
int i;
for (i=2; i<=8; i++)
pinMode(i, OUTPUT);
}

void loop() {
int i=0, p=0;
for(p=0;p<10;p++)
{
for(i=0;i<8;i++){
if(numero[p]=='1') digitalWrite(puerto*, HIGH);*
_ else digitalWrite(puerto*, LOW);
}
delay(1000);
}
}*
¿Qué es lo que está mal en el programa, por qué hace eso?
Yo hice otro programa sacando los datos necesarios para que encienda cada segmento y si me funcionó sin problema, pero es mucho más largooo.
De antemano gracias por su ayuda!_

¿Nos puedes decir porque no te funciona? A mi me parece que solo se te pone en estado HIGH cuando p es igual a 1. Además puerto es una tabla de los 7 elementos del display, por lo tanto tendrás que poner puerto[1] por ejemplo.

se le puede pasar un array de int a digitalwrite ??

en los FOR anidados haces el recorrido por la matriz pero no haces el recorrido por el pin que debes activar o no,

aprovecha la variable i en cada momento.

if(numero[p]=='1') digitalWrite(puerto{i], HIGH);
else digitalWrite(puerto*, LOW);*
Un cordial saludo

Prueba este codigo funciona de maravilla,

un saludo.

Gracias por su ayuda, ya quedó solucionado el problema. Se cambió el tipo de variable y listo! Les pongo el programa.

char numero[10][8]={"1000000","1111001","0100100","0110000","0011001","0010010","0000010","1111000","0000000","0010000"};
byte puerto[7]={2,3,4,5,6,7,8};

void setup() {
byte i;
for (i=2; i<=8; i++)
pinMode(i, OUTPUT);
}

void loop() {
byte i, p;
for(p=0;p<10;p++)
{
for(i=0;i<8;i++){
if(numero[p]{i]=='1') digitalWrite(puerto{i], HIGH);
else digitalWrite(puerto{i], LOW);
}
delay(50);
}
}

NOTA: Al publicar en el foro no aparece la i entre corchetes, por tal motivo le puse {i].

Me legro, cuando publiques en el foro un codigo hay un boton de almoadilla encima que q es para escribir codigo y que no haya problemas.
un saludo

Muchas gracias por el TIP, saludos!