Problema con registros.. (PORT y DDR)

Estoy empezando a usar registros y use este código:

Void setup(){
DDRA = B11111111
}
Void LOOP(){
PortA = 1;
Delay(1000);
PortA = 3;
Delay(1000);
PortA = 7;
Delay(1000);
}

El problema es que lo hice en físico y se queda la primera led encendida la segunda parpadea y la tercera no enciende, probé usar otros puertos.... Los puertos que use fueron: 22,23 y 24. Mi Arduino es un MEGA.

Lo primero es que tienes que respetar la sintaxis:

void setup(){
   DDRA = B11111111;  //255
}

void loop(){
   PORTA = 1;    //Prende puerto 22
   delay(1000);
   PORTA = 3;    //Prende puertos 22+23
   delay(1000);
   PORTA = 7;    //Prende puertos 22+23+24
   delay(1000);
}

En que momento apagas los LEDs ?

void setup(){
   DDRA = B11111111;  //255
}

void loop(){
   PORTA = 1;    //Prende 22, apaga resto
   delay(1000);
   PORTA = 2;    //Prende 23, apaga resto
   delay(1000);
   PORTA = 4;    //Prende 24, apaga resto
   delay(1000);
}

Recuerda que el PORTA va del 22 al 29 1 = B00000001; --> 22 2 = B00000010; --> 23 4 = B00000100; --> 24 8 = B00001000; --> 25 16 = B00010000; --> 26 32 = B00100000; --> 27 64 = B01000000; --> 28 128 = B10000000; --> 29

La gran ventaja es que mientras un digitalWrite() demora 63 (77 si es pin PWM) ciclos de CPU, PORTx solo toma 1 ciclo de CPU.

PD: Tambien podrias usar la funcion bit() para simplificar.

Lo simule en Proteus (mi programa ) y funcionó bien, al parecer mi Arduino (Que es chino), tal vez tenga los puertos cambiados :/, y la secuencia es correcta, las leds se apagan cuando vuelve al inicio del LOOP (En 1 que sería b00000001), igual gracias, no sabía lo de las ventajas en cuanto a ciclos usando registros :)

A ver.. no le hechen la culpa a los Chinos que solo fabrican Hardware barato de nuestras limitaciones para programar!!!

Un Atmega es un Atmega en USA o China, de modo que no puede haber ningún puerto cambiado. Lo mas lógico es que tu interpretes eso cuando no lo es, justamente porque estas aprendiendo.