Hallo,
das meiste sollte so passen, allerdings stimmt bei den PORT- und PIN-Registern manches nicht.
Das ist so gedacht:
Das DDRx-Register legt fest, ob ein Anschluss Eingang(0) oder Ausgang(1) sein soll.
Ist der Anschluss als Ausgang eingestellt, kannst du den mit dem PORTx-Register auf High oder Low setzen.
Ist der Anschluss als Eingang eingestellt, kannst du mit dem PORTx-Register die Pullup-Widerstände aktivieren/deaktivieren.
Willst du einen Eingang abfragen, musst du das PINx-Register auslesen.

So müsste das meiner Meinung nach aussehen:
Code:
 //----------------------------------------------------------------------
#define     F_CPU 16000000  // Taktfrequenz des myAVR-Boards
#include    <avr\io.h>      // AVR Register und Konstantendefinitionen
#include    <util/delay.h>
//----------------------------------------------------------------------

void init_io(void);
void strobe(void);

int main(void) 
{
    init_io();
    unsigned char string[12] = "Hello World!"; //Text string

    PORTF = (1<<PF2); //Setzt Strobe auf high

    while(PINK == 255); //Wartet auf einen Tastendruck
    for (unsigned char i = 0; i <= 12; i++) //Liest alle Stellen des String
    {
        PORTA = string[i]; //Legt die Zeichen an den Datenausgang
        strobe(); //Sagt dem Drucker, dass Daten anliegen
        while(PINF == 1); //Wartet auf die Bestätigung des Druckers, dass Daten empfangen wurden
    }
   return 0;
}

void init_io(void)
{
    DDRE = 0b11111111; //Datenleitungen DATA0-7
    DDRF = 0b10100111; //Steuerleitungen vom/zum Drucker
    //PF0: nc       Out
    //PF1: nc       Out
    //PF2: Strobe   Out
    //PF3: Busy     In
    //PF4: ACK      In
    //PF5: INIT     Out
    //PF6: ERROR    In
    //PF7: Autofeed Out
    DDRK = 0b00000000; //An alle Pins sind Taster angeschlossen
    PORTK = 0; //Pull-Up nicht setzen
    PORTF |= (1<<PF7); //Schaltet Autofeed ein
}

void strobe(void)
{
    PORTF = ~(1<<PF2); //Setzt Stobe auf low = Drucker soll empfangen
    _delay_ms(1);
    PORTF = (1<<PF2);  //Setzt Strobe wieder auf high
}

//----------------------------------------------------------------------
Vermutlich wird man noch die while-Schleifen anpassen müssen, in der verlinkten Seite wird bei der zweiten while-Schleife das ACK abgefragt, ist bei dir an PF4 ?

Grüße, Bernhard