Also dein Beispiel hat leider nicht getan, ich habe deine Idee mal versucht umzusetzen.

Code:
//
//    ATMega644
//    lcd-routines.c, lcd-routines.h
//
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
#include "lcd-routines.h"

uint8_t tasten;
 
 

int main(void)
{
    DDRD = 0x00; // Pins sind Eingang
    PORTD = 0xff; // mit aktiviertem PullUp, Taster schalten nach GND

    // Initialisierung des LCD
    // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken
    // verschwunden sein
    lcd_init();

    lcd_string("LCD Start !!!");
    _delay_ms(100); //Gibt einem die moeglichckeit zu lesen was auf dem LCD steht
    lcd_home();    
    
    while(1)
    {
        
           
           switch((tasten))
           {
                case 1: lcd_string("Das ist Taste 0"); lcd_home(); break;
                
                case 2: lcd_string("Das ist Taste 1"); lcd_home(); break;
                
                case 3: lcd_string("Das ist Taste 2");  lcd_home();break;
                
                case 4: lcd_string("Das ist Taste 3"); lcd_home(); break;
                
                default: lcd_home(); lcd_string("Taste druecken");
            }
        
    }
    return(0);
}
Nur möchte ich das Programm relative einfach halten damit man es gut lesen und relative kann.
Ich möchte stat 0b00000001 das (1 << PD0) benutzen, weil man Dan sofort erkennt, was gemeind ist.

Nun wie setz ich so was um?

Danke