26.10.2012 Aufrufe

Tresor-Steuerung

Tresor-Steuerung

Tresor-Steuerung

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.

<strong>Tresor</strong>-<strong>Steuerung</strong><br />

mit Tastatur, Anzeige<br />

G07 - Florian Meyer, Matthias Stahl<br />

Bearbeitungszeitraum:<br />

03.02.2009 - 30.06.2009


Inhaltsverzeichnis<br />

1Information und Planung....................................................................................................................1<br />

1.1Lastenheft....................................................................................................................................1<br />

1.2Pflichtenheft................................................................................................................................2<br />

1.3Lösungsansatz.............................................................................................................................3<br />

1.3.1Beschreibung des Lösungsansatzes im Überblick..............................................................3<br />

1.3.2Technologieschema.............................................................................................................3<br />

1.3.3Blockschaltplan...................................................................................................................4<br />

1.4Arbeitsplanung............................................................................................................................4<br />

1.5Kostenplanung............................................................................................................................5<br />

1.5.1Entwicklungskosten............................................................................................................5<br />

1.5.2Fertigungskosten.................................................................................................................5<br />

Gesamtpreis (incl. Mwst)............................................................................................................5<br />

2Durchführung.....................................................................................................................................6<br />

2.1Hardware.....................................................................................................................................6<br />

2.1.1Schaltungsbeschreibung......................................................................................................6<br />

2.1.2Schaltplan............................................................................................................................7<br />

2.1.3Bauteilliste..........................................................................................................................8<br />

2.1.4Platinenlayout für Serienfertigung ( mit EAGLE)..............................................................9<br />

2.1.5Bestückungsplan für Serienfertigung ( mit EAGLE)..........................................................9<br />

2.2Software....................................................................................................................................10<br />

2.2.1Entwicklungsumgebung / Programmiersprache...............................................................10<br />

2.2.2Programmbeschreibung....................................................................................................10<br />

2.2.3Programmablaufplan / Struktogramm...............................................................................11<br />

2.2.4Quelltext............................................................................................................................16<br />

3Kontrolle und Dokumentation..........................................................................................................37<br />

3.1Fotos..........................................................................................................................................37<br />

3.1.1Gesamtaufbau....................................................................................................................37<br />

3.1.2Bestückungsseite der Platine (beschriftet)........................................................................38<br />

4Quellenverzeichnis...........................................................................................................................38<br />

4.1Datenblätter...............................................................................................................................38<br />

4.2Beispielprojekte........................................................................................................................38<br />

4.3Fachliteratur..............................................................................................................................38


1 Information und Planung<br />

1.1 Lastenheft<br />

Zielbestimmung<br />

Es ist eine <strong>Steuerung</strong> für einen <strong>Tresor</strong> zu entwickeln, bei der die Eingabe des Codes über<br />

eine Tastatur mit 12 Tasten erfolgt. Dazu werden die Zahlen 0 bis 9 sowie eine Löschtaste<br />

und eine Bestätigungstaste benötigt. Die Eingabe und Eingabebedingungen sollen über ein<br />

Display dargestellt werden. Beim ersten Einschalten der <strong>Steuerung</strong> muss der Code<br />

eingestellt werden. Nach einem Ausfall der <strong>Steuerung</strong> muss der Code noch vorhanden sein.<br />

Es muss eine Möglichkeit geben den Code später zu ändern.<br />

Produkteinsatz<br />

Das Produkt soll für eine vielzahl von Nutzern geeignet sein, z.B. für einen <strong>Tresor</strong> im privaten<br />

Haushalt sowohl als auch im Geschäftswesen.<br />

Produktfunktionen<br />

Es soll möglich sein nach der Eingabe des PIN-Codes den <strong>Tresor</strong> zu öffnen. Der PIN-Code<br />

soll veränderbar sein und mindestens vierstellig sein. Das Bedienen des Gerätes soll durch<br />

ein Display bedienfreundlicher sein. Nach einer Fehleingabe hat man weitere 2 Versuche<br />

den richtigen Code einzugeben. Nach dreimaliger Eingabe eines falschen PIN-Codes die<br />

Eingabe für kurze Zeit gesperrt werden. Der Code soll bei der Eingabe nicht mit Zahlen,<br />

sondern mit Sternchen (*) auf dem Display Angezeigt werden.<br />

Produktdaten<br />

Der <strong>Tresor</strong> soll mit einer Batterie betrieben werden, Eingabe über eine 12 Tasten Tastatur,<br />

Anzeige über LCD<br />

Produktleistungen<br />

Timer für Sperrzeit, Pin mit möglichst vielen Zeichen<br />

Qualitätsanforderungen<br />

Saubere übersichtliche Bedienung, Schutz gegen Datenverlust bei Ausfall<br />

Seite 1


1.2 Pflichtenheft<br />

Zielbestimmung<br />

Wir fertigen für Sie eine <strong>Steuerung</strong> für einen <strong>Tresor</strong> an, bei der die Eingabe des Codes über<br />

eine Tastatur mit 12 Tasten erfolgt. Dazu werden die Zahlen 0 bis 9 sowie eine Löschtaste<br />

und eine Bestätigungstaste vorhanden sein. Dazu verwenden wir eine Matrix-Tastatur bei<br />

der wir die einzelnen Reihen nacheinander Abfragen Die Eingabe und Eingabebedingungen<br />

werden über ein LC-Display dargestellt. Beim ersten Einschalten der <strong>Steuerung</strong> muss der<br />

Code eingestellt werden. Nach einem Ausfall der <strong>Steuerung</strong> ist der Code trotz dessen noch<br />

vorhanden.<br />

Der Code ist zudem nachträglich änderbar.<br />

Produkteinsatz<br />

Das Produkt ist für eine Vielzahl von Nutzern geeignet. Für private Nutzer, aber auch<br />

Bereich des Geschäftswesen.<br />

Produktfunktionen<br />

Es wird möglich sein nach der Eingabe des PIN-Codes den <strong>Tresor</strong> zu öffnen. Der PIN-Code<br />

ist veränderbar und muss mindestens vier stellig sein. Durch ein LCD ist das Gerät<br />

Benutzerfreundlich und einfacher zu verstehen. Nach einer Fehleingabe hat man weitere 2<br />

Versuche den richtigen Code einzugeben. Nach dreimaliger Eingabe eines falschen PIN-<br />

Codes wird die Eingabe für 2 Minuten gesperrt. Der Eingegebne Code wird bei der Eingabe<br />

nicht mit Zahlen, sondern mit Sternchen (*) auf dem LC-Display Angezeigt.<br />

Produktdaten<br />

- Der <strong>Tresor</strong> wird mit einer 6V Batterie betrieben<br />

- Eingabe über eine 12 Tasten Matrix-Tastatur<br />

- Anzeige über LC-Display<br />

Produktleistungen<br />

- Timer für Sperrzeit<br />

- PIN kann 4-8 stellig sein<br />

Qualitätsanforderungen<br />

- Saubere übersichtliche Bedienung<br />

– Schutz gegen Datenverlust bei Ausfall vorhanden<br />

Seite 2


1.3 Lösungsansatz<br />

1.3.1 Beschreibung des Lösungsansatzes im Überblick<br />

Unsere <strong>Tresor</strong>steuerung wird durch ein Codeschloss realisiert. Der <strong>Tresor</strong> erhält eine LCD Anzeige<br />

auf dem alle schritten die durchzuführen angezeigt werden. Die Code-eingabe erfolgt über einen<br />

Tastatur. Eine rote LED zeigt an, dass der <strong>Tresor</strong> verschlossen ist und eine grüne LED zeigt an, dass<br />

der Code richtig eingegeben wurde und der <strong>Tresor</strong> offen ist. Diese <strong>Steuerung</strong> wird mithilfe eines<br />

Atmega48 realisiert.<br />

1.3.2 Technologieschema<br />

Seite 3


1.3.3 Blockschaltplan<br />

1.4 Arbeitsplanung<br />

Seite 4


1.5 Kostenplanung<br />

1.5.1 Entwicklungskosten<br />

Bezeichnung der Leistung<br />

Anzahl der<br />

Stunden<br />

Pflichtenheft erstellt 2 36€<br />

Schaltplan erstellt 4 72€<br />

Allgemeine<br />

Projektplanung<br />

1.5.2 Fertigungskosten<br />

LNr Anzahl Bezeichnung der Leistung<br />

Gesamtpreis<br />

20 360€ 21,95<br />

Einzelpreis<br />

(incl. Mwst)<br />

Gesamtpreis<br />

(incl. Mwst)<br />

1 1 Matrix Tastatur 3x4 6,00€ 6,00€<br />

2 1 LCD Display 4x27 4,95€ 4,95€<br />

3 1 Batterie 0,50€ 0,50€<br />

4 1 Batteriefach 0,48€ 0,48€<br />

5 1 Atmega48Spi 1,20€ 1,20€<br />

6 1 IC-Sockel 28 Polig 0,37€ 0,37€<br />

7 1 LED rot 0,08€ 0,08€<br />

8 1 LED grün 0,08€ 0,08€<br />

9 1 Festspannungsregler 7805 0,17€ 0,17€<br />

10 3 Lötstifte 0,05€ 0,15€<br />

11 4m Fädeldraht 0,98€ 3,92€<br />

12 1 Lochrasterplatine 1,85€ 1,85€<br />

13 1 Präzisionstrimmer 10KOhm 1,28€ 1,28€<br />

14 2 Kondensatoren 0,1µ 0,41€ 0,82€<br />

15 3 Wiederstände 1000 Ohm 0,033€ 0,10€<br />

16 160 Arbeitsstunden 18,00€ 2880€<br />

Gesamtpreis (incl. Mwst): 3369,96€<br />

Seite 5


2 Durchführung<br />

2.1 Hardware<br />

2.1.1 Schaltungsbeschreibung<br />

Eine Folientastatur mit 3x4 Matrix soll abgefragt werden.<br />

die Eingänge des Atmegas werden mit pull up wiederständen auf High gezogen.<br />

Wird eine Taste gedrückt, werden die Leitungen an den Kreuzungspunkten verbunden.<br />

Um die gedrückte Taste zu ermitteln, werden nacheinander die Spalten mit einem Prüfsignal<br />

(LOW) beschaltet .<br />

Eingänge des controllers an den sich eine gedrückte taste befindet werden auf masse gezogen wenn<br />

dass Prüfsignahl der entsprechende Spalte zugeschaltet wurde.<br />

Die LCD wird über eine 8 Bit Datenleitung und den 5 Steuerleitungen Bedient.<br />

es befinden sich 2 controller auf dem LCD deshalb sind auch 2 Enabel Pins Vorhanden.<br />

Die beiden Hälften des LCDs müssen einzelt gesteuert werden mit dem 10 kohm Trimmer ist zum<br />

einstellen des LCd Kontrastes.<br />

Die LEDs signalisieren ob die Tür auf (bei grün) oder geschlossen (bei rot) ist, außerdem ist ein<br />

anschluss für isp angebracht worden um eine leichte programmentwicklung zu ermöglichen die<br />

Stromversorgung besteht aus einer 9V Blockbatterie und einen Festspannungsregler<br />

Seite 6


2.1.2 Schaltplan<br />

Seite 7


2.1.3 Bauteilliste<br />

LNr Anzahl Bezeichnung der Leistung<br />

1 1 Matrix Tastatur 3x4<br />

2 1 LCD Display 4x27<br />

3 1 Batterie<br />

4 1 Batteriefach<br />

5 1 Atmega48Spi<br />

6 1 IC-Sockel 28 Polig<br />

7 1 LED rot<br />

8 1 LED grün<br />

9 1 Festspannungsregler 7805<br />

10 3 Lötstifte<br />

11 4m Fädeldraht<br />

12 1 Lochrasterplatine<br />

13 1 Präzisionstrimmer 10KOhm<br />

14 2 Kondensatoren 0,1µ<br />

15 3 Wiederstände 1000 Ohm<br />

Seite 8


2.1.4 Platinenlayout für Serienfertigung ( mit EAGLE)<br />

2.2 Software<br />

2.2.1 Entwicklungsumgebung / Programmiersprache<br />

Entwicklungsumgebung: AVR-Studio 4<br />

Programmiersprache: Assembler<br />

2.2.2 Programmbeschreibung<br />

Zuerst werden die ein und Ausgänge des Atmega's initialisiert<br />

dann werden die beiden hälften des LCDs nacheinander initialisiert<br />

als nächstes wird der <strong>Tresor</strong> geschlossen und ein Einführungstext auf dem LCD ausgegeben<br />

danach wird das Hauptprogramm gestartet. Im Hauptprogramm wird als erstes wieder der <strong>Tresor</strong><br />

geschlossen damit nach der Öffnung bei einen Sprung ins Hauptprogramm der <strong>Tresor</strong> wieder<br />

geschlossen ist. Dann gibt das LCD einen Text zur Code Eingabeaufforderung aus.<br />

Seite 9


Jetzt wird die Tastatur abgefragt, dabei wird drauf geachtet dass eine eingegebene zahl nicht<br />

mehrfach erscheint ohne dass die taste mehrmals gedrückt wurde. Die Ziffer der Eingabe wird mit<br />

der Ziffer im Sicherheitscode überprüft. Die Eingegebene Ziffer wird außerdem auf dem LCD<br />

angezeigt. War diese Eingabe richtig wird dieser Vorgang mit den nächsten Ziffern wiederholt bis<br />

der Code komplett ist. Dann wird der Code mit * bestätigt und die Tür des <strong>Tresor</strong> lässt sich<br />

innerhalb der nächsten 5 Sekunden öffnen, dies ist auch auf dem LCD<br />

nachzulesen. Danach beginnt das Hauptprogramm erneut. Wurde eine falsche Ziffer eingegeben<br />

entfällt das vergleichen der Eingabe mit dem Sicherheitscode. Es werden nur noch die Angaben auf<br />

dem LCD ausgegeben und bei bestätigen des Codes (*) wird einen Text ausgegeben<br />

der einem mitteilt, dass der eingegebene Code falsch ist und die Tür verschlossen bleibt.<br />

2.2.3 Programmablaufplan / Struktogramm<br />

Start<br />

Initialisierung<br />

der Ein und Ausgänge<br />

Initialisierung<br />

LCD 1 und LCD2<br />

<strong>Tresor</strong><br />

schließen<br />

Ausgabe<br />

des Einführung -<br />

textes<br />

Sprung zu Main<br />

Seite 10


Main<br />

<strong>Tresor</strong><br />

schließen<br />

LCD Ausgabe<br />

zur<br />

Code Eingabe<br />

Tastatur<br />

R16 =<br />

Codestelle<br />

Ja<br />

Tastatur<br />

R16 =<br />

Codestelle<br />

Ja<br />

Sprung<br />

zu Richtig<br />

Nein<br />

Nein<br />

Seite 11<br />

Sprung<br />

zu Falsch<br />

Sprung<br />

zu Falsch


JA<br />

Tastatur<br />

Tastatur<br />

-abfrage<br />

R16 =<br />

Tastwert JA<br />

R16 = 0<br />

NEIN<br />

Tastwert<br />

= 0<br />

NEIN<br />

R16 ist<br />

Tastwert<br />

Ausgabe<br />

auf LCD 2<br />

Rücksprung<br />

Seite 12


Falsch<br />

Tastatur<br />

R16 = *<br />

JA<br />

LCD<br />

löschen<br />

10ms Pause<br />

NEIN<br />

Ausgabetext<br />

für Falschen Code<br />

5s Pause<br />

Sprung zu Main<br />

Seite 13


Richtig<br />

<strong>Tresor</strong><br />

öffnen<br />

LCD<br />

löschen<br />

10ms Pause<br />

Ausgabetext für<br />

richtige Eingabe<br />

5s Pause<br />

Sprung zu<br />

Main<br />

Seite 14


2.2.4 Quelltext<br />

;<strong>Tresor</strong>steuerung (G07) Matthias Stahl & Florian Meyer<br />

.include "m48def.inc" ;Einbinden der Register-namen usw.<br />

.def TW = R17 ;devieniere Tastatur-Wert<br />

#define E2 PORTB,1 ;devieniere Enable 1<br />

#define E1 PORTB,0 ;devieniere Enable 2<br />

#define RS PORTB,7 ;devieniere Read/Steuer<br />

#define RW PORTB,6 ;devieniere Read/Write<br />

.org 0x0000 ;Der nächste Befehl steht an Adresse 0x0000<br />

INIT: ;INIT-Label<br />

INITLCD:<br />

ldi R16 , 0b11100011 ;Das Bitmuster 0xff in R16 laden<br />

out DDRB, R16 ;und in das Data Direction Register B schreiben<br />

ldi R16, 0b11111111 ;Das Bitmuster 0xf0 in R16 laden<br />

out DDRC, R16 ;und in das Data Direction Register C schreiben<br />

ldi R16, 0b11111111 ;Das Bitmuster 0xff in R16 laden<br />

out DDRD, R16 ;und in das Data Direction Register D schreiben<br />

rcall WARTEN_10m ;40ms Pause<br />

rcall WARTEN_10m<br />

rcall WARTEN_10m<br />

rcall WARTEN_10m<br />

cbi RS ;LCD soll Steuerbefehl erhalten<br />

cbi RW ;LCD soll lesen<br />

ldi R16, 0x39<br />

rcall ILC1 ;Enable LCD1<br />

rcall WARTEN_10u<br />

rcall ILC1<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall ILC1<br />

rcall WARTEN_10u<br />

ldi R16, 0x14 ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />

rcall ILC1<br />

rcall WARTEN_10u ;100us Pause<br />

Seite 15


call WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x78 ;Display ein, Cursor ein, blinken<br />

rcall ILC1<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x55 ;Display löschen, Cursor auf Home-Position<br />

rcall ILC1<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x6d ;Cursor Auto-Increment<br />

rcall ILC1<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x0f ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />

rcall ILC1<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x01 ;Display ein, Cursor ein, blinken<br />

rcall ILC1<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x06 ;Display löschen, Cursor auf Home-Position<br />

rcall ILC1<br />

ldi R16, 0x39 ;Reset<br />

rcall ILC2<br />

rcall WARTEN_10u<br />

rcall ILC2<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall WARTEN_1m<br />

rcall ILC2<br />

rcall WARTEN_10u<br />

ldi R16, 0x14 ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />

rcall ILC2<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

Seite 16


ldi R16, 0x78 ;Display ein, Cursor ein, blinken<br />

rcall ILC2<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x55 ;Display löschen, Cursor auf Home-Position<br />

rcall ILC2<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x6d ;Cursor Auto-Increment<br />

rcall ILC2<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x0f ;8-Bit-Interface, 2-zeilig, 5*7-Font<br />

rcall ILC2<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x01 ;Display ein, Cursor ein, blinken<br />

rcall ILC2<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

rcall WARTEN_10u ;100us Pause<br />

ldi R16, 0x06 ;Display löschen, Cursor auf Home-Position<br />

rcall ILC2<br />

cbi RW ;Disable LCD Contr. 1<br />

sbi RS ;Disable LCD Contr. 2<br />

Start: ;MAIN-Label<br />

Main:<br />

rcall TRSH ;<strong>Tresor</strong> schließen<br />

rcall Einfuehrung ;LCD ausgabe zur Einführung<br />

rcall TRSH ;<strong>Tresor</strong> schließen<br />

rcall Codein ;LCD Ausgabe zur Code Eingabe<br />

rcall Tast<br />

cpi R16,'9'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'6'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'8'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'9'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'9'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'7'<br />

Seite 17


Wrong:<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'7'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'8'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'2'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'4'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'5'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'4'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'0'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'2'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'7'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'1'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'9'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'9'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'6'<br />

brne Wrong<br />

rcall Tast<br />

cpi R16,'*'<br />

brne Wrong<br />

rjmp Richtig<br />

rcall Tast<br />

cpi R16,'*'<br />

brne Wrong<br />

rcall LCDCL ;LCD löschen<br />

rcall WARTEN_10m<br />

ldi R16, ' '<br />

Seite 18


call LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'T'<br />

rcall LC2<br />

ldi R16, 'u'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'r'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'b'<br />

rcall LC2<br />

ldi R16, 'l'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 'b'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'g'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 's'<br />

rcall LC2<br />

ldi R16, 'c'<br />

rcall LC2<br />

ldi R16, 'h'<br />

rcall LC2<br />

ldi R16, 'l'<br />

rcall LC2<br />

ldi R16, 'o'<br />

rcall LC2<br />

ldi R16, 's'<br />

rcall LC2<br />

ldi R16, 's'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'n'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

Seite 19


call Spalte2<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'F'<br />

rcall LC1<br />

ldi R16, 'a'<br />

rcall LC1<br />

ldi R16, 'l'<br />

rcall LC1<br />

ldi R16, 's'<br />

rcall LC1<br />

ldi R16, 'c'<br />

rcall LC1<br />

ldi R16, 'h'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'C'<br />

rcall LC1<br />

ldi R16, 'o'<br />

rcall LC1<br />

ldi R16, 'd'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

Seite 20


Richtig:<br />

ldi R16, ' '<br />

rcall LC1<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rjmp Main<br />

rcall TROE<br />

rcall LCDCL ;LCD löschen<br />

rcall WARTEN_10m<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'T'<br />

rcall LC2<br />

ldi R16, 'u'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'r'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 's'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'o'<br />

rcall LC2<br />

ldi R16, 'f'<br />

rcall LC2<br />

ldi R16, 'f'<br />

Seite 21


call LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'n'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

rcall Spalte2<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'R'<br />

rcall LC1<br />

ldi R16, 'i'<br />

rcall LC1<br />

ldi R16, 'c'<br />

rcall LC1<br />

ldi R16, 'h'<br />

rcall LC1<br />

ldi R16, 't'<br />

rcall LC1<br />

ldi R16, 'i'<br />

rcall LC1<br />

ldi R16, 'g'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, ' '<br />

Seite 22


Tast:<br />

LC1:<br />

ILC1:<br />

rcall LC1<br />

ldi R16, 'C'<br />

rcall LC1<br />

ldi R16, 'o'<br />

rcall LC1<br />

ldi R16, 'd'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rjmp Main<br />

rcall TETA<br />

cp R16, TW<br />

breq Tast<br />

ldi R16, 0<br />

cpi Tw,0<br />

breq Tast<br />

mov R16, TW<br />

rcall LC2<br />

ret<br />

rcall WARTEN_100u<br />

out PORTD,R16 ;Wert in PortD ausgeben<br />

nop<br />

nop<br />

Seite 23


LC2:<br />

ILC2:<br />

Spalte2:<br />

LCDCL:<br />

sbi E1 ;Enable LCD Contr. 1<br />

nop<br />

nop<br />

nop<br />

cbi E1 ;Disable LCD Contr. 1<br />

ret<br />

rcall WARTEN_100u<br />

out PORTD,R16 ;Wert in PortD ausgeben ;4ms Pause<br />

nop<br />

nop<br />

sbi E2 ;Enable LCD Contr. 2<br />

nop<br />

nop<br />

nop<br />

cbi E2 ;Disable LCD Contr. 2<br />

ret<br />

;LCD<br />

ldi R16, 0xc0<br />

cbi RS ;LCD soll Steuerbefehl erhalten<br />

cbi RW ;LCD soll lesen<br />

rcall LC1<br />

rcall LC2<br />

cbi RW ;Disable LCD Contr. 1<br />

sbi RS ;Disable LCD Contr. 2<br />

ret<br />

;LCD löschen<br />

ldi R16, 0x01<br />

cbi RS ;LCD soll Steuerbefehl erhalten<br />

cbi RW ;LCD soll lesen<br />

rcall LC1<br />

rcall LC2<br />

cbi RW ;Disable LCD Contr. 1<br />

sbi RS ;Disable LCD Contr. 2<br />

ret<br />

;<strong>Tresor</strong> schließen<br />

TRSH: ;<strong>Tresor</strong> schließen-Label<br />

sbi PORTC,5 ;rote LED an<br />

Seite 24


cbi PORTC,4 ;grüne LED aus<br />

ret<br />

;<strong>Tresor</strong> öffnen<br />

TROE: ;<strong>Tresor</strong> öffnen-Label<br />

sbi PORTC,4 ;grüne LED an<br />

cbi PORTC,5 ;rote LED aus<br />

ret<br />

; Tastatur<br />

TETA: ;Tastatur-Label<br />

;erste Spalte überprüfen<br />

rcall WARTEN_100u<br />

ldi TW, 0 ;Tast-Wert auf 0 setzen<br />

cbi PORTC,3 ;Spalte 1 ansprechen<br />

sbi PORTC,2 ;Spalte 2 ignurieren<br />

sbi PORTC,1 ;Spalte 3 ignurieren<br />

sbi PORTC,0 ;Spalte 3 ignurieren<br />

sbis PINB,4 ;Teste 2. Zeihle<br />

ldi TW, '1' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />

sbis PINB,3 ;Teste 2. Zeihle<br />

ldi TW, '2' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />

sbis PINB,2 ;Teste 3. Zeihle<br />

ldi TW, '3' ;wenn 7 gedrückt 7 in Tast-Wert schreiben<br />

;zweite Spalte überprüfen<br />

rcall WARTEN_1m<br />

sbi PORTC,3 ;Spalte 1 ansprechen<br />

cbi PORTC,2 ;Spalte 2 ignurieren<br />

sbi PORTC,1 ;Spalte 3 ignurieren<br />

sbi PORTC,0 ;Spalte 3 ignurieren<br />

sbis PINB,4 ;Teste 1. Zeihle<br />

ldi TW, '4' ;wenn 1 gedrückt 1 in Tast-Wert schreiben<br />

sbis PINB,3 ;Teste 2. Zeihle<br />

ldi TW, '5' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />

sbis PINB,2 ;Teste 3. Zeihle<br />

ldi TW, '6' ;wenn 7 gedrückt 7 in Tast-Wert schreibe<br />

;dritte Spalte überprüfen<br />

rcall WARTEN_1m<br />

sbi PORTC,3 ;Spalte 1 ansprechen<br />

sbi PORTC,2 ;Spalte 2 ignurieren<br />

cbi PORTC,1 ;Spalte 3 ignurieren<br />

sbi PORTC,0 ;Spalte 3 ignurieren<br />

sbis PINB,4 ;Teste 1. Zeihle<br />

Seite 25


ldi TW, '7' ;wenn 1 gedrückt 1 in Tast-Wert schreiben<br />

sbis PINB,3 ;Teste 2. Zeihle<br />

ldi TW, '8' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />

sbis PINB,2 ;Teste 3. Zeihle<br />

ldi TW, '9' ;wenn 7 gedrückt 7 in Tast-Wert schreibe<br />

; vierte Spalte<br />

rcall WARTEN_1m<br />

sbi PORTC,3 ;Spalte 1 ansprechen<br />

sbi PORTC,2 ;Spalte 2 ignurieren<br />

sbi PORTC,1 ;Spalte 3 ignurieren<br />

cbi PORTC,0 ;Spalte 3 ignurieren<br />

nop<br />

sbis PINB,4 ;Teste 1. Zeihle<br />

ldi TW, '*' ;wenn 1 gedrückt 1 in Tast-Wert schreiben<br />

sbis PINB,3 ;Teste 2. Zeihle<br />

ldi TW, '0' ;wenn 4 gedrückt 4 in Tast-Wert schreiben<br />

sbis PINB,2 ;Teste 3. Zeihle<br />

ldi TW, '#' ;wenn 7 gedrückt 7 in Tast-Wert schreibe<br />

rcall WARTEN_1m<br />

ret<br />

Einfuehrung:<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'F'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'i'<br />

rcall LC1<br />

ldi R16, 'p'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 'o'<br />

rcall LC1<br />

ldi R16, 'j'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'k'<br />

rcall LC1<br />

ldi R16, 't'<br />

rcall LC1<br />

ldi R16, ' '<br />

Seite 26


call LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'G'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 'u'<br />

rcall LC1<br />

ldi R16, 'p'<br />

rcall LC1<br />

ldi R16, 'p'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, '0'<br />

rcall LC1<br />

ldi R16, '7'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'M'<br />

rcall LC2<br />

ldi R16, 'a'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, 'h'<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 'a'<br />

Seite 27


call LC2<br />

ldi R16, 's'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'S'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, 'a'<br />

rcall LC2<br />

ldi R16, 'h'<br />

rcall LC2<br />

ldi R16, 'l'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, '&'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

rcall Spalte2<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'T'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 's'<br />

rcall LC1<br />

ldi R16, 'o'<br />

Seite 28


call LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 's'<br />

rcall LC1<br />

ldi R16, 't'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'u'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 'u'<br />

rcall LC1<br />

ldi R16, 'n'<br />

rcall LC1<br />

ldi R16, 'g'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'F'<br />

rcall LC2<br />

ldi R16, 'l'<br />

rcall LC2<br />

ldi R16, 'o'<br />

Seite 29


Codein:<br />

rcall LC2<br />

ldi R16, 'r'<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 'a'<br />

rcall LC2<br />

ldi R16, 'n'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'M'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'y'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'r'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

rcall WARTEN_1s<br />

ret<br />

rcall LCDCL ;LCD löschen<br />

rcall WARTEN_10m<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'z'<br />

rcall LC1<br />

Seite 30


ldi R16, 'u'<br />

rcall LC1<br />

ldi R16, 'm'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'o'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'f'<br />

rcall LC1<br />

ldi R16, 'f'<br />

rcall LC1<br />

ldi R16, 'n'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'n'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'd'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 's'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'T'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 's'<br />

rcall LC1<br />

ldi R16, 'o'<br />

rcall LC1<br />

ldi R16, 'r'<br />

rcall LC1<br />

ldi R16, 's'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

rcall Spalte2<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

Seite 31


ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'b'<br />

rcall LC1<br />

ldi R16, 'i'<br />

rcall LC1<br />

ldi R16, 't'<br />

rcall LC1<br />

ldi R16, 't'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'C'<br />

rcall LC1<br />

ldi R16, 'o'<br />

rcall LC1<br />

ldi R16, 'd'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'i'<br />

rcall LC1<br />

ldi R16, 'n'<br />

rcall LC1<br />

ldi R16, 'g'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'b'<br />

rcall LC1<br />

ldi R16, 'e'<br />

rcall LC1<br />

ldi R16, 'n'<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC1<br />

ldi R16, ' '<br />

rcall LC2<br />

Seite 32


ldi R16, 'm'<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, '*'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'E'<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 'n'<br />

rcall LC2<br />

ldi R16, 'g'<br />

rcall LC2<br />

ldi R16, 'a'<br />

rcall LC2<br />

ldi R16, 'b'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, 'b'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 's'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, 'a'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 't'<br />

rcall LC2<br />

ldi R16, 'i'<br />

rcall LC2<br />

ldi R16, 'g'<br />

rcall LC2<br />

ldi R16, 'e'<br />

rcall LC2<br />

ldi R16, 'n'<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

Seite 33


ldi R16, 0x02<br />

cbi RS ;LCD soll Steuerbefehl erhalten<br />

cbi RW ;LCD soll lesen<br />

rcall LC2<br />

cbi RW ;Disable LCD Contr. 1<br />

sbi RS ;Disable LCD Contr. 2<br />

rcall Warten_1m<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ldi R16, ' '<br />

rcall LC2<br />

ret<br />

;Zeitschleifen<br />

WARTEN_10u: ;Unterprogramm WARTEN 10uSekunden<br />

nop<br />

nop<br />

nop<br />

nop<br />

ret<br />

WARTEN_100u: //Unterprogramm WARTEN_100uSekunden<br />

ldi r23, 9<br />

W2: rcall WARTEN_10u<br />

nop<br />

dec r23<br />

brne W2<br />

ret //Rücksprung hinter den Aufrufbefehl<br />

WARTEN_1m: //Unterprogramm WARTEN_1Milisekunde<br />

ldi r24, 9<br />

W3: rcall WARTEN_100u //R22 ruterzählen<br />

nop<br />

nop<br />

nop<br />

nop<br />

nop<br />

nop<br />

dec r24<br />

brne W3<br />

Seite 34


et //Rücksprung hinter den Aufrufbefehl<br />

WARTEN_10m: //Unterprogramm WARTEN_10mSekunden<br />

ldi r25, 9<br />

W4: rcall WARTEN_1m //R22 ruterzählen<br />

nop<br />

dec r25<br />

brne W4<br />

ret //Rücksprung hinter den Aufrufbefehl<br />

WARTEN_100m:<br />

ldi r26, 9<br />

W5: rcall WARTEN_10m //R22 ruterzählen<br />

nop<br />

nop<br />

nop<br />

nop<br />

dec r26<br />

brne W5<br />

ret<br />

WARTEN_1s:<br />

ldi r27, 9<br />

W6: rcall WARTEN_100m //R22 ruterzählen<br />

nop<br />

nop<br />

nop<br />

nop<br />

dec r27<br />

brne W6<br />

ret<br />

Seite 35


3 Kontrolle und Dokumentation<br />

3.1 Fotos<br />

3.1.1 Gesamtaufbau<br />

Seite 36


3.1.2 Bestückungsseite der Platine (beschriftet)<br />

4 Quellenverzeichnis<br />

4.1 Datenblätter<br />

➢ Atmega: 25455.pdf<br />

➢ LCD: hd44780.pdf / SpecSheet WD-C2704M-1HNN.pdf /<br />

Text-LCDs.pdf / WD-C2704M-1HNN.pdf<br />

➢ Tastatur: 709930-da-01-de-Folientastatur_Matrix_3_4.pdf<br />

4.2 Beispielprojekte<br />

➢ Sprut Lernbeispiele<br />

4.3 Fachliteratur<br />

➢ Internet<br />

➢ Conrad<br />

➢ Reichelt<br />

Seite 37

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!