05.11.2013 Aufrufe

est Bewegung durch eine 3D-Landschaft mit ... - David Zaadstra

est Bewegung durch eine 3D-Landschaft mit ... - David Zaadstra

est Bewegung durch eine 3D-Landschaft mit ... - David Zaadstra

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Projektarbeit 2002, BKIK 2/1<br />

<strong>David</strong> <strong>Zaadstra</strong>, Alexander Fuchs<br />

<strong>Bewegung</strong> <strong>durch</strong> <strong>eine</strong> <strong>3D</strong>-<strong>Landschaft</strong> <strong>mit</strong> Fernbedienung<br />

Elektronikschule Tettnang<br />

5.2 Das Assemblerprogramm<br />

Das Assemblerprogramm ist in 80535-Assembler geschrieben und umfasst, Kommentare<br />

eingeschlossen, etwa 600 Zeilen selbst entwickelten Code.<br />

Die Aufgabe dieses Assemblerprogramms ist es, die Signalfolge, welche von der Diode SFH<br />

5110 auf Port 1.1 des Mikrocontrollers eingespeist wird, zu interpretieren, zu vergleichen und<br />

zu erkennen. Anschließend soll die Nummer des erkannten Signals per V24 an den COM -<br />

Port des PCs gesendet werden.<br />

Das Programm b<strong>est</strong>eht aus<br />

- Hauptprogramm<br />

- Interrupt-Programm<br />

sowie aus den Makros<br />

- WAIT_HIGH<br />

- SAVE<br />

- POSTPROCESSDATA<br />

- benutzt: ENCODE<br />

- COMPARE<br />

- benutzt: COMPAREONE<br />

- SENDAKKU<br />

die per .inc-Datei in das Hauptprogramm inkludiert werden. Entwickelt wurde das Programm<br />

unter der Entwicklungsumgebung µVision der Firma Keil.<br />

5.2.1 Funktion<br />

Um, wie unter Punkt 5 bemerkt, das auf Port 1.1 eingespeiste Signal dekodieren zu können<br />

muss der Mikrocontroller also im Signalverlauf das Header-Signal und die 2<br />

unterschiedlichen Bitzeiten messen, speichern, in Bits umwandeln, vergleichen und erkennen<br />

können. Da hier ein äußerst knappes Timing eingehalten werden muss, werden während des<br />

Signalverlaufs ausschließlich die Impulslängen <strong>durch</strong> den Timer 0 im Interrupt-Modus in<br />

0,1ms – Schritten gemessen, in die Register R0 und R1 addiert und anschließend <strong>durch</strong> das<br />

Makro „SAVE“ in den externen Speicher gespeichert. Die Impulslänge <strong>eine</strong>s Low-Impulses<br />

wird dabei immer in R0, die Länge <strong>eine</strong>s High-Impulses in R1 aufaddiert.<br />

Um immer erst genau bei Beginn <strong>eine</strong>s Signals die Messung zu starten, setzt das Makro<br />

„WAIT_HIGH“ <strong>eine</strong>n ca. 10ms langen High-Impuls voraus, welcher nur zwischen dem<br />

- 16 -

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!