MikroForth bietet hier - insbesondere für listenartige Werte - die Array-Struktur an; hierfür kann ein Bereich im SRAM reserviert und dann benutzt werden.
Geht es nur um wenige, einzelne Werte, kann man auf die General-Purpose-Register (GPRIOR0, GPRIOR1, …) zurückgreifen. Diese gehören zu den IO-Registern des Mikrocontrollers. Hierfür stellt MikroForth3 die Wörter SetIOReg, setBitIOReg und getIOReg zur Verfügung (vgl. Manual zu MikroForth3)
An einem einfachen Beispiel zeigen wir, wie man einen Wert in dem IO-Register GPRIO-Register GPIOR0 abspeichert und ihn wieder herausholt. Beim Atmega328 besitzt dieses Register die SRAM-Adresse $3E.
Code: Alles auswählen
: merke $3E swap setioreg ;
: hole $3E getioreg ;
: main $FF ddre 85 merke $FF porte 1 wait hole porte ;
1. Das virtuelle PortE (vgl. Manual, s. o.) wird als Ausgang konfiguriert; an diesem Port sind 8 LEDs (mit Vorwiderstand) angeschlossen.
2. Der Wert 85=&B01010101 wird im GPIOR0 gespeichert;
3. Der Wert 255=$FF wird an PortE ausgegeben; dadurch werden alle LEDs an PortE zum Leuchten gebracht.
4. Der Mikrocontroller wartet 1 Sekunde.
5. Der Inhalt von GPIOR0 wird auf den Stack gelegt und an PortE ausgegeben. Jetzt wird an den LEDs von PortE das Bit-Muster &B01010101 ausgegeben.
.