05.08.2014 Aufrufe

sanduhr_doku.pdf (658 KB) - Homepage von Stefan Buchgeher

sanduhr_doku.pdf (658 KB) - Homepage von Stefan Buchgeher

sanduhr_doku.pdf (658 KB) - Homepage von Stefan Buchgeher

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Elektronische Sanduhr<br />

4.4.6. SUMMERAKTIV<br />

Dieses Unterprogramm erzeugt ein Rechtecksignal mit einer Frequenz <strong>von</strong> etwa 1 kHz.<br />

Dazu wird der Lautsprecher 500µs lang eingeschaltet und 500µs lang ausgeschaltet.<br />

bsf PORTB,SUMMER<br />

call WARTESCHLEIFE<br />

bcf PORTB,SUMMER<br />

call WARTESCHLEIFE<br />

return<br />

Diese Unterprogramm wird so oft aufgerufen bis die Starttaste erneut gedrückt, oder die<br />

Stopptaste gedrückt wird (vgl. Hauptprogramm Kap.4.2)<br />

4.4.7. WARTESCHLEIFE<br />

Dieses Unterprogramm erzeugt eine Zeitverzögerung <strong>von</strong> exakt 500 µs bei einem 4<br />

MHz-Quarz.<br />

Wie erzeugt man genau 500 µs? Dazu sehen wir uns zunächst den Code genauer an:<br />

movlw .164 (1)<br />

movwf DELAY (1)<br />

VERZOEGERUNG decfsz DELAY,f (1 bzw. 2)<br />

goto VERZOEGERUNG (2)<br />

nop (1)<br />

return (2)<br />

In den Klammer befinden sich die Anzahl der Zyklen die diese Befehle benötigen. Eine<br />

Besonderheit gibt es beim Befehl decfsz DELAY,f. Solange dieser Befehl nur die<br />

angegebene Variable (hier DELAY) dekrementiert benötigt er nur einen Zyklus. Ist die<br />

Variable DELAY 0, überspringt sie den folgenden Befehl. In diesem Fall benötigt der<br />

Befehl 2 Zyklen.<br />

Die Schleife VERZOEGERUNG benötigt 3 Zyklen (decfsz DELAY,f und goto<br />

VERZOEGERUNG) und wird 164-mal durchgeführt. 3x164=492. 1 Zyklus kommt für den<br />

Sprung bei DELAY= 0 hinzu, ebenso die Zyklen für die restliche Befehle. Nun sind wir<br />

bei 498 Zyklen. Zählt man noch 2 Zyklen für den Aufruf (CALL WARTESCHLEIFE) dazu,<br />

so ergibt dies die gewünschten 500 Zyklen, und bei einem Takt <strong>von</strong> 1µs (bei einem 4<br />

MHz-Quarz) ergibt dies genau 500 µs.<br />

Seite 16

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!