EZ8 Beispielprogramme

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

LED mit integriertem Treiber leuchten lassen[Bearbeiten]

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[Bearbeiten]

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