Univerzální programátor

Rychlost toho interpreteru je sice trochu pomalejší než přímý kód, ale není to tak strašné, každá pseudoinstrukce zabere kolem 1 us. Např. kousek skriptu pro odeslání bajtu na SPI:

SPISnd2:loadt 7 ; 1.0us get T flag from AL, bit 7 pinout SPI_MOSI,T ; 1.1us output to MOSI from T flag pinset SPI_SCK ; 0.9us start SCK clock signal wait BL ; 2..255 us delay 1 pintest SPI_MISO ; 1.0us input MISO to T flag pinres SPI_SCK ; 0.9us stop SCK clock signal wait BH ; 1..127 us delay 2 savet 7 ; 1.0us save T flag to AL, bit 7 rol AL ; 1.1us rotate AL left (bit 7 -> bit 0) dec HL ; 1.1us decrement loop counter jnz SPISnd2 ; 1.0/1.3us loop until counter is zero ret ; 1.2usVýhoda skriptu je, že nemusí být univerzální, zkompiluje se pro přesně daný typ MCU (např. čísla bitů portů) a díky tomu může být někdy i rychlejší než univerzální kód. A hlavní důvod, proč jsem to předělal na skript - ten může upravovat každý, aniž mění obsah procesoru, takže si může kdokoliv přidat neznámý obvod.

Lepší by byl ASM kód nahrávaný do RAM, ale to tenhle MCU neumí. ARMy nelze použít kvůli napájení - je potřeba 5V a výstupní proud desítky mA, což splňují asi jen ATmegy.