Vissza kellene néznem, de úgy emlékszem, nem 400 ns és 800 ns az idők, hanem 450 ns és 800 ns, illetve 850 ns és 400 ns, szóval sajnos rosszabb a helyzet annál, amit írsz. Az persze más kérdés, hogy adott esetben tudatosan kihasználjuk-e a toleranciaként megadott 150 ns-ot az életünket megkönnyítendő. Viszont igaz, a pwm modullal ez egész tűrhetően managelhető. Ha másképp nem, 50 ns felbontású pwm, a bittől függő konstansok írásával.
A baj még így is az, hogy 800 kHz-cel kell adagolni a biteket, ami IT-ből nem fog menni. 32 MHz-es PIC esetén is csak 10 gépi ciklusunk van egy bit átadására, de gondolom, jó volna a bitet kiszámolni előbb. Vagy az egészet kiszámoljuk előre, letesszük memóriába - ez jó sok adat sok LED esetén -, majd onnan bután kitoljuk ennek a csodának. Ez pwm vagy CLC használatával menni fog, de még így is elég feszes lesz. Szubrutin nem fér bele, legfeljebb macro.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE