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
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