Danke schon mal für die vielen und schnellen Antworten!!!!
Aber ich muss euch enttäuschen aber ich bin keine guter Assembler Programmierer ganz im Gegenteil ich Stümper ein bisschen rum aber mehr auch nicht ich versuche mir gerade C beizubringen.

Ich verstehe die Lösung mit der Tabelle leider nicht. Ein Arbeitskollege der C gut kann hat mir heute diesen Quelle-Code erstelle.

Code:
//alte werte müssen global deklariert sein


steuerfunktion(void)
{
    a = portB & 0x8;
    b = portB & 0x10;

    if ((a == 1) && (a_old == 0))    P_a = 1;
    else P_a = 0;

    if ((b == 1) && (b_old == 0))    P_b = 1;
    else P_b = 0;


    temp_a = a & P_a;
    temp_b = a & P_b;

    portb2 = temp_a & !temp_b;
    portb1 = temp_b & !temp_a;

    //Löschen des alten Outputs
    PORTB &= ~0x4;
    PORTB &= ~0x2;

    //zurdnung auf Ports (setzen des bits)
    PORTB |= portb2;
    PORTB |= portb1;


    a_old = a;
    b_old = b;
}
Allerdings weiß er nicht wie ich das mit der Ein- und Ausgabe machen kann.

Kann mir hier vielleicht einer von euch weiterhelfen, denn das Code an sich sollte laut ihn Funktionieren.

Ich bin für jede kleine Hilfe sehr dankbar!

Gruß
Rolf