counter 0-99 problem with the first 0 ten

when you do

char numero[10][7]={"1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1110011"};

the "1111110" (and others) are not stored on 7 bytes. this is a cString so there is a trailing '\0' that you don't see added by the compiler

If I were you I would check those indexes...

for(i=[color=red]7;i<14[/color];i++){
     if(numero[p][color=red][ i][/color]=='1') digitalWrite(puerto[ i], HIGH);
     else digitalWrite(puerto[ i], LOW);
   }

you could just use const char * numero[] = {"1111110","0110000","1101101","1111001","0110011","1011011","1011111","1110000","1111111","1110011"};