Okay - weshalb der EEPROM-Speicher verwendet wird, verstehe ich zwar nicht, aber das macht auch nichts...

Wie gesagt - ich würde E nicht durch irgendwelche unkontrollierten Additionen und Subtraktionen manipulieren, die schnell mal außer Kontrolle geraten können wenn sie ungewollt mehrfach hintereinander ablaufen, sondern diese Variable ganz sauber mittels E=0 oder E=1 auf den gewünschten Wert setzen. Dann macht es nämlich nichts, wenn dieser Befehl ein zweites oder drittes mal ausgeführt wird.

Aber da ist noch was anderes:

Motor1 bis Motor4 und Freischalten sind als Ausgänge konfiguriert - und in diesem Fall darfst Du nicht die Pin-Register, sondern musst die Port-Register nehmen!

Also Freischalten Alias PORTD7, Motor1 Alias PORTB.1 usw.

Versuch das mal...


Was macht die Schaltung denn bisher überhaupt? Erzeugt sie wenigstens schon mal ein PWM-Signal?