Hay muchos problemas con tu código.
Primero que nada, solo verificas la condición una vez, es decir, cuando comienzas a ejecutar el código. Así que para eso estoy agregando un bucle while (1).
Segundo, ya has puesto tu PORTA = 0x00, lo que significa que ya les has asignado un BAJO. Si ya los ha hecho BAJOS, parece que no tiene sentido verificar su estado.
No puedo ver el archivo de imagen proteus que adjuntaste en los comentarios anteriores. Entonces, estoy asumiendo que el interruptor conecta el pin a tierra. Si el interruptor se conecta a 5V, cambie la condición if a PINA.0 == 1;
void main(void)
{
//PORTA=0x00; //If you already made them LOW, there won't be
DDRA=0xFE; //any point of checking their status.
PORTD=0x00;
DDRD=0x00;
lcd_init();
lcd_clear();
lcd_goto(0,0);
lcd_puts("Emad Helmi") ;
while (1)
{
if(PINA.0 == 0) //whenever you want to read the status
{ //you access the PIN register and not PORT
lcd_clear() ;
}
}
}
Si aún no funciona, intente acceder a PINA como un todo. Cambie la condición if a
if (PINA == 0x00)
pero si lo hace, recuerde cambiar los PUERTOS individuales a BAJO. es decir,
PORTA.1 = 0;
y así sucesivamente a PORTA.7.