EZ8 Beispielprogramme
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
LED mit integriertem Treiber leuchten lassen
In diesem Beispiel wird der integrierte LED-Treiber des Z8 encore! (eZ8) von Zilog verwendet, um eine an einem beliebigen Pin an Port C (ganzer Port wird geschaltet) angeschlossene LED leuchten zu lassen. Die verwendeten Adressen beziehen sich auf den Z8F082A.
INCLUDE "ez8.inc" ; Definitionsdatei für eZ8 inkludieren
VECTOR RESET = startme ; Den Resetvektor nennen wir "startme"
startme:
LDX PCADDR,#%07 ; Adressregister Port C für alternative Portfunktion beladen
LDX PCCTL, #%FF ; Alle Pins auf alternative Funktion (Led-Treiber)
LDX LEDEN, #%FF ; LED-Treiber für alle Pins von Port C konfigurieren
LDX LEDLVLH,#%FF ; LED-Treiber auf 13mA einstellen (LED leuchtet)
JP startme
LED mittels Timer0 blinken lassen
Dieses Beispiel baut auf dem vorhergehenden auf, es wird wieder der integrierte LED-Treiber des Z8F082A verwendet. Jetzt wollen wir die Led jedoch blinken lassen und verwenden dazu den Timer-Interrupt
INCLUDE "ez8.inc" ; Definitionsdatei einbinden
VECTOR RESET = startme ; Resetvektor
VECTOR TIMER0 = tim ; Timervektor
startme:
LDX SPL,#%FF ; Stackpointer (Kellerspeicher-Zeiger) initialisieren
LDX SPH,#%00
EI ; Interrupts global aktivieren
LDX IRQ0ENL,#%20 ; Timer-Interrupt freigeben
LDX PCADDR,#%07 ; Adressregister laden
LDX PCCTL, #%FF ; Alternative Funktion von Port C konfigurieren
LDX LEDEN, #%FF ; Led-Treiber einschalten
LDX LEDLVLH,#%FF ; LED level high value (13mA)
LDX T0RL, #%00 ; Maximale Timerzeit (=0000) einstellen
LDX T0RH, #%00
LDX T0CTL1, #%F9 ; Timer 0 Control Register 1 (Prescaler, Mode)
LDX T0CTL0, #%E0 ; Timer 0 Control Register 0 (Timer einschalten)
endlosschleife: ; Wir haben sonst ja nichts zu tun ;-)
JP endlosschleife
tim:
XORX LEDEN,#%FF ; Wenn Timerinterrupt zuschlägt, Treiber XOR FFh
IRET ; Rüksprung aus ISR