Vor dem Enablen des Watchdogs sollte ein wdt_reset() eingefügt werden.
Der Watchdog-Prescaler läuft nämlich auch dann, wenn kein Enable
vorliegt und kann sonst irgendwo stehen.
Die NOPs nach dem Enable in Verbindung mit dem nachfolgenden wdt_reset()
haben dagegen keinen für mich erkennbaren Sinn. Auch sollten während
des Watchdog Enable die Interrupts gesperrt werden, wenn dies nicht
anderweitig gesichert ist.
Übrigens, falls nicht so gewollt: Die zweite while(c)-Schleife
durchläuft den vollen Bereich einer Integer und nicht nur 50
Schleifendurchläufe wie die erste (so sie überhaupt ausgeführt wird -
ich habe mit Keil nur in uralten 8051-Zeiten gearbeitet, damals konnte
er die sinnlose Schleife noch nicht erkennen).