Also dieser code ist inordnung so viel steht ja wohl fest.
Gesucht sind andere mögliche fehlerquellen

lass mal das programm hier laufen

Code:
#include "asuro.h"
int main(void) {
        Init();
        // Drehrichtung vorwärts
        PORTD = (PORTD &~ ((1 << PD4) | (1 << PD5))) | (1 << PB5);
	PORTB = (PORTB &~ ((1 << PB4) | (1 << PB5))) | (1 << PB5);
        //Volle Pulle vorwärts
        OCR1A = 255;
	OCR1B = 255;
        int i;
        for(i=0;i<1000;i++) 
                Sleep(72);
        //Linkskurve
        OCR1A= 100
        for(i=0;i<1000;i++) 
                Sleep(72);
        //Langsam geradeaus
        OCR1B=100;
        return 0;
}
Asuro sollte jetzt erst volle pulle fahren, dann eine linkskurve, und dann langsamer geradeaus.
Wenn, das Positiv verläuft, solltest du den fehler in der asuro.c suchen. Wenn das jetzt nicht geht, musst du den fehler in der hardware suchen.