Wenn du die Sequenz öfter brauchst würde ich eine Funcktion machen, weil sonst fast der gleiche Code mehrfach dasteht, mit Funktionen stehen nur die Aufrufe da.
Die Warteschleifen machst du besser mit _delay_loop_1(unsigned char) oder _delay_loop_2(unsigned int) aus util/delay.h (deprecated: avr/delay.h)
Da OCR0 volatile ist, wird der Code kleiner (und schneller), wenn du über ein temporäres Zwischenregister gehst:
Code:uint8_t ocr0 = OCR0; while (ocr0 <= ***) { _delay_loop_* (***); OCR0 = ++ocr0; }
Lesezeichen