#include <avr/io.h> //llamada a las librerías de entrada y salida
#include <util/delay.h> // llamada a las librerías de retardos
int contador=0; //declaración de la variable entera contador
int i,j; //declaración de las variables enteras i, j
int numero[10][5]={ {0x41,0x3E,0x3E,0x00,0x41}, //Se declara la matriz de los números
{0x7E, 0x5E, 0x00, 0x00, 0x7E}, //coordenadas para el numero 1
{0x4E, 0x3C, 0x38, 0x02, 0x46}, // coordenadas para el numero 2
{0x5D, 0x3E, 0x36, 0x00, 0x49}, // coordenadas para el numero 3
{0x07, 0x77, 0x77, 0x00, 0x00}, // coordenadas para el numero 4
{0x8C, 0x36, 0x36, 0x30, 0x39}, // coordenadas para el numero 5
{0x41, 0x36, 0x36, 0x30, 0x39}, // coordenadas para el numero 6
{0x3F, 0x37, 0x37, 0x00, 0x0F}, // coordenadas para el numero 7
{0x49, 0x36, 0x36, 0x00, 0x49}, // coordenadas para el numero 8
{0x4D, 0x36, 0x36, 0x00, 0x41}}; // coordenadas para el numero 9
int main (void){ //inicia el programa principal
DDRD=0xFF; //todo el puerto D como salidas
DDRC=0xFF; //todo el puerto C como salidas
PORTC=0x10; //Inicializar el puerto C para el barrido de las columnas
while(1){ //ciclo infinito
for(j=0;j<25;j++){ //ciclo de numero de barridos
for(i=0;i<5;i++){ //ciclo de barrido de columnas
PORTD=numero[contador][i]; //se le asigna al PORTD el código respecto a la // columna
_delay_ms(1); //retardo de 1 milisegundo
PORTC=PORTC>>1; //siguiente columna
} //termina ciclo para columnas
PORTC=0x10; //se inicializa a las primera columna
} //termina ciclo para numero de barridos
contador++; //incrementar en 1 el contador
if (contador==10) //si el contador llega a 10
contador=0; //que vuelva a ser 0
} //termina ciclo infinito
} //termina programa principal