Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Erste Befehle Define...Schleife und Pause Die C- Control besitzt 16 Ausgangsleitungen- auch Ports genannt. Willst Du nun einen dieser Ports schalten, muss die C-Control wissen, welchen Port Du meinst. Dafür gibt es die Befehle Port (für 1Bit), Byteport 1 oder Byteport 2 (für 8 Bit oder 1 Byte) und Wordport 1 (für 16 Bit oder 2 Byte). Bevor nun ein Port angesprochen werden kann, muss dieser festgelegt- definiert- werden. Dazu dient der Befehl define. Nach dem Define-Befehl folgt noch eine Variable. Diese kann x , y oder zur besseren Lesbarkeit auch Leuchtdiode, Taster, Led oder irgendein sinnvolles Word sein. So könnte daher der Anfang Deines Programms aussehen: Define Led Port [1] Oder Define Led Byteport[1] Oder Define Led Wordport[1] Aufgabe: Worin besteht der Unterschied zwischen den definierten Ports? Nachdem nun der oder die Ausgabeports festgelegt sind, müssen wir noch beschreiben, was mit den Portleitungen geschehen soll. Da die C-Control in der Lage ist Binär-, Hex- und Dezimalzahlen zu verarbeiten, folgt an dieser Stelle eine kurze Beschreibung dieser Zahlensysteme. Dezimalzahl 0 1 2 3 4 5 6 7 8 9 10 11 12 Binärzahl 00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 Hexadezimalz Dezimalzahl ahl 0 13 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 A 23 B 24 C 25 Binärzahl 00001101 00001110 00001111 00010000 00010001 00010010 00010011 00010100 00010101 00010110 00010111 00011000 00011001 usw. Hexadezimalz ahl D E F 10 11 12 13 14 15 16 17 18 19 Aufgabe: Setze die Tabelle bis zur Dezimalzahl 35 fort. An einem Beispiel eines dreistufigen Lauflichts kann die unterschiedliche Programmierung gezeigt werden. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Dezimalsystem Define Led Byteport[1] Binärsystem Define Led Byteport[1] Hexadezimalsystem Define Led Byteport[1] Led=1 Led=2 Led=4 Led=&B00000001 Led=&B00000010 Led=&B00000100 Led=&H1 Led=&H2 Led=&H4 Aufgabe: Gib das Programm ein. Verwende das Binärsystem! Nachdem das Programm eingegeben wurde, muss es noch für den Computer lesbar gemacht werden. Dies bezeichnen wir als Compilieren. (Compilieren = STRG + F9 Tastenkombination) Nun öffne mit der Tastenkombination Alt + 5 das Digitalportfenster. Das Programm wird mit der Taste F9 gestartet. Im Digitalportfenster ist die oberste Reihe rot geworden und die Nummer 3 ist rot ausgefüllt. Die C-Control hat das Programm sehr schnell ausgeführt- zu schnell für unsere Augen. Deshalb müssen wir Pausen einfügen. Mit dem Pause Befehl wird das Programm jeweils für 20 Millisekunden= 0,020s angehaltenalso Pause 10 : 10 * 0,020s = 0,2s. Pause 50: 50 * 0,020s = 1 s Das Programm muss wieder Compiliert werden, und es kann mit F9 gestartet werden. Aufgabe: Drücke die F9 Taste. Damit das Programm immer läuft müssen wir eine Schleife einbauen. Mit #Schleife kann diese programmiert werden. Am ende des Programms erfolgt die Anweisung: Goto Schleife. Define Led Byteport[1] #Schleife Led=&B00000001 Pause 10 Led=&B00000010 Pause 10 Led=&B00000100 Pause 10 Goto Schleife Mit der ESC- Taste kannst Du das Programm anhalten. Ein blauer Balken zeigt an, welchen Befehl das Programm als nächstes abarbeiten will. Der blaue Balken verschwindet, wenn Du Strg + F2 drückst. Nun kannst Du weitere Befehle einfügen. Aufgaben: a) Schreibe ein Programm für ein 8 stufiges Lauflicht.! b) Schreibe ein Programm für ein 16 stufiges Lauflicht! (Denke an den DefineBefehl) © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Weitere Experimente Schreibe dieses Programm ab. Compiliere es und drücke F9- (ggf Alt + 5 drücken) Define Led Byteport[1] #Schleife Led=&B00000001 Pause 10 Led=&B00000010 Pause 10 Led=&B00000100 Pause 10 Led=&B00001000 Pause 10 Led=&B00010000 Pause 10 Led=&B00100000 Pause 10 Led=&B01000000 Pause 10 Led=&B10000000 Pause 10 goto Schleife Es zeigt ein 8 stufiges Lauflicht. Aufgabe: Verändere den Define Befehl in : Define Led Byteport[2]. Was verändert sich? Aufgabe: Verändere den Define Befehl in: Define Led Wordport[1]. Was verändert sich? Aufgabe: Verändere den Define Befehl in : Define Led Wordport[2]. Was verändert sich? Aufgabe: Verändere den Define Befehl in : Define Led Port[2]. Was verändert sich? Größere Programme werden leicht unübersichtlich. Deshalb fügt man häufig Kommentarzeilen ein. Diese Kommentarzeilen beginnen mit einem Hochkomma (Taste rechts neben der Ä- Taste- mit Shift zu erreichen.) Füge als erste Zeile eine Programmbeschreibung gefolgt von Deinem Namen ein. '8 Bit Lauflicht- geschrieben von ..... Aufgabe: Verändere den Define Befehl wieder in Byteport[1] und speichere das Programm unter Led8bit .bas ab. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Tasterabfrage und der If...Then...Befehl Die 16 Bit wurden bisher für die Ausgabeleitungen genutzt. Es ist aber auch möglich diese Ports als Eingabeleitungen zu gebrauchen. Dabei müssen nicht zwangsläufig alle 16 Bit als Eingabeports geschaltet werden. Es ist möglich, auch nur ein Teil der 16 Bit zu nutzen. In dem Programm werden neue Befehle ausgeführt. Der IF... THEN... Befehl kann übersetzt werden mit FALLS...DANN...Damit wird veranlasst, falls eine Bedingung zutrifft- dann mache etwas. In unserem Fall soll eine LED leuchten. Auf Tastendruck soll eine LED leuchten. Der Taster ist an Port 9, die Led ist an Port 1 angeschlossen. `Tasterabfrage mit Ausgabe an Led Kommentar zum Programm define taste1 Port[9] define led Port[1] Definition des Ports für Eingabe Definition des Ports für Ausgabe #schleife if taste1 =on then led =&B0000001 pause 10 if taste1 =off then led =&B0000000 pause 10 goto schleife Endlosschleife (Beginn) Falls Taste gedrückt ist, dann LED an Pause für 10*0,020 Sekunden Falls Taste nicht gedrückt ist, dann aus Pause für 10*0,020 Sekunden Gehe zum Beginn der Endlosschleife Aufgabe: Tippe das Programm ein. Öffne mit Alt+5 das Digitalportfenster. Compiliere das Programm (mit STRG+F9) und starte es(mit F9). Klicke mit der Maus auf die (grüne) 9. Was passiert? Speichere das Programm unter Taster_led.bas Aufgabe: Verändere das Programm so, dass bei Tastendruck alle LEDs leuchten! Speichere das Programm unter Taster2_led.bas Aufgabe: Verändere das Programm so, dass bei der Taster an Port 13 abgefragt wird! Speichere das Programm unter Taster3_led.bas Aufgabe: Es sollen 2 Taster abgefragt werden. Diese Taster sollen an Port 12 und 15 angeschlossen werden. Beim Drücken des Tasters an Port 12 sollen die 4 Leds an Port 1-4beim Drücken des Tasters an Port 15 sollen die Leds an Port 5-8 leuchten. Speichere das Programm unter Taster3_led.bas Hinweis: Die Abfrage von 8 Tastern kann auch mit dem Befehl: Define Taster Byteport[2] (für die Ports 9 – 16 erfolgen. Probiere es aus! © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Tasterabfrage und Erzeugung von Zufallszahlen Die C-Control Einheit soll nun zum Würfeln eingesetzt werden. Dazu benötigen wir einige neue Befehle. ' Würfel 1 Ansteuerung von LEDs Kommentar zum Programm Define Led Byteport [1] Define Taster Port [9] Define Zahl Byte #Tasterabfrage If Taster = ON then goto Wurf goto Tasterabfrage Definition des Ausgabeports (8 Bit) Definition des Eingabeports Definieren einer Variablen mit Namen Zahl Unterroutine Tasterabfrage Falls Taster gedrückt, verzweige zur Unterroutine Wurf Falls Taster nicht gedrückt, springe zur Unterroutine #Tasterabfrage Unterroutine Wurf Siehe Text unten Siehe Text unten Siehe Text unten Pause 10* 0,020s = 0,2 s Falls die Zahl 1 ist, dann Led 4 an Falls die Zahl 2 ist, dann Led 1 u. 5 an Falls die Zahl 3 ist, dann Led 1, 4 u. 5 an Falls die Zahl 4 ist, dann Led 1,3,5 u.7 an Falls die Zahl 5 ist, dann Led 1,3,4,5,7an Falls die Zahl 6 ist, dann Led 1,2,3, 5,6,7 Verzweige z. Unterroutine Tasterabfrage #Wurf Randomize Timer Zahl = Rand Zahl = Zahl mod 6 +1 Pause 10 If Zahl = 1 then Led = &B00001000 If Zahl = 2 then Led = &B00010001 If Zahl = 3 then Led = &B00011001 If Zahl = 4 then Led = &B01010101 If Zahl = 5 then Led = &B01011101 If Zahl = 6 then Led = &B01110111 goto Tasterabfrage Randomize Timer und Rand Die C-Control besitzt einen internen Pseudozufallszahlengenerator. Der Befehl RANDOMIZE initialisiert den Zufallsgenerator. Man kann sich dies so vorstellen, als wenn es eine Liste mit Zahlen von -32768 bis 32767 gibt. Wird nun der Befehl Randomize Timer ausgeführt, so schaut die C-Control auf die interne Uhr, ermittelt daraus die Sekunden und springt dann in die Liste der Zahlen. Dort steht vielleicht die Zahl 3439. Diese 3439 werden der Variablen Rand zugeordnet. Allerdings ist die Zahl 3439 für einen Würfel nicht brauchbar. Mod (modulo) mod = Der ganzzahlige Rest bei der Division zweier Zahlen. Nehmen wir wieder an, der Randomize Timer und der Rand Befehl hätte die Zahl 3439 geliefert. Da bei Würfel bekanntlich nur die Zahlen 1 bis 6 auftreten können, ist die Zahl 3439 recht sinnlos. Teile ich aber 3439 : 6 - so erhalte ich 573 Rest 1. Die mod - Routine liefert also ganzzahlige Reste. Beim Dividieren zweier Zahlen mod 6 können also nur Reste zwischen 0 und 5 auftreten. Da beim Würfel aber Zahlen zwischen 1 und 6 vorkommen, müssen wir zum mod 6 Wert noch 1 addieren. Deshalb programmieren wir: Zahl = Zahl mod 6 + 1. Aufgabe: Tippe das Programm ab, compiliere und starte es. Drücke „9“ Speichere das Programm unter Wuerfel1.bas Aufgabe: Dividiere die Zahlen von 2514 bis 2519 durch 6. Ermittle die „Reste“. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Würfeln und Ausgabe an 7 Segment Display Eine gewürfelte Zahl kann nicht nur durch Leds angezeigt werden. Sie kann auch durch ein 7 Segment Display dargestellt werden. Dieses Display kann man sich auch aus 7 einzelnen länglichen Leds vorstellen. Led 1 Led 6 Led 2 Led 7 Led 5 Led 3 Led 4 ' Würfel 2 Ansteuerung von 7 Segment Kommentar zum Programm Define Led Byteport [1] Define Taster Port [9] Define Zahl Byte Definition des Ausgabeports (8 Bit) Definition des Eingabeports Definieren einer Variablen mit Namen Zahl Unterroutine Tasterabfrage Falls Taster gedrückt, verzweige zur Unterroutine Wurf Falls Taster nicht gedrückt, springe zur Unterroutine #Tasterabfrage Unterroutine Wurf Initialisiere Zufallsgenerator über Timer Ermittle einen Wert und mache eine Zahl Teile diese Zahl durch 6 und ermittle Rest Pause 10* 0,020s = 0,2 s Falls die Zahl 1 ist, dann Led 2,3 an Falls die Zahl 2 ist, dann Led 1,2,4,5,7 an Falls die Zahl 3 ist, dann Led 1,2,3, 4,7an Falls die Zahl 4 ist, dann Led 2,3,6,7 an Falls die Zahl 5 ist, dann Led 1,3,4,6,7an Falls die Zahl 6 ist, dann Led 1,3,4,5,6,7 Verzweige z. Unterroutine Tasterabfrage #Tasterabfrage If Taster = ON then goto Wurf goto Tasterabfrage #Wurf Randomize Timer Zahl = Rand Zahl = Zahl mod 6 + 1 Pause 10 If Zahl= 1 then led=&B00000110 If Zahl= 2 then led=&B If Zahl= 3 then led=&B If Zahl= 4 then led=&B If Zahl= 5 then led=&B If Zahl= 6 then led=&B goto Tasterabfrage Aufgabe: In der Programmbeschreibung stehen die Leds, die bei den jeweiligen Zahlen leuchten sollen. Ermittle das zugehörige Bitmuster. Aufgabe: Tippe das Programm ab, setze die Bitmuster für die Zahlen ein, compiliere das Programm und starte es. Drücke „9“ Speichere das Programm unter Wuerfel2.bas 01011011 01001111 01100110 01101101 01111101 © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Würfeln und Ausgabe an 7 Segment Display, Print und Looktab -Befehl ' Würfel 3 Ansteuerung von 7 Segment Kommentar zum Programm Define Led Byteport [1] Define Taster Port [9] Define Zahl Byte Definition des Ausgabeports (8 Bit) Definition des Eingabeports Definieren einer Variablen mit Namen Zahl Unterroutine Tasterabfrage Falls Taster gedrückt, verzweige zur Unterroutine Wurf Falls Taster nicht gedrückt, springe zur Unterroutine #Tasterabfrage Unterroutine Wurf Initialisiere Zufallsgenerator über Timer Ermittle einen Wert und mache eine Zahl Teile diese Zahl durch 6 und ermittle Rest Siehe Text Pause 10* 0,020s = 0,2 s Siehe Text Verzweige z. Unterroutine Tasterabfrage Ende des Programms #Tasterabfrage If Taster = ON then goto Wurf goto Tasterabfrage #Wurf Randomize Timer Zahl = Rand Zahl = Zahl mod 6 + 1 Print zahl Pause 10 Looktab Tabelle, Zahl, Led goto Tasterabfrage End Siehe Text Siehe Text Siehe Text Siehe Text Siehe Text Siehe Text table Tabelle &B00000000 &B00000110 &B01011011 &B01001111 &B01100110 &B01101101 &B01111101 Tabend Print Das Anzeigen der Variable Zahl auf dem Bildschirm geschieht mit dem Print-Befehl. Diese Ausgabeseite ist durch Drücken der Tasten Alt+3 zu sehen. Es können auch Texte angezeigt werden. Print "Hallo Welt" liefert den Schriftzug Hallo Welt auf dem Bildschirm. Wird das Programm in der C-Control Unit ausgeführt, veranlasst der Print- Befehl dass Werte oder texte über die serielle Schnittstelle an den Rechner übermittelt werden. (Siehe weiter unten) Looktab, Table, Tabend Mit dem Befehl Looktab erhalte ich Zugriff auf eine Tabelle. Diese Tabelle (table) kann ein beliebiger Namen zugeordnet werden. Im obigen Beispiel heißt die Tabelle eben Tabelle. Da oben die Variable „Zahl“ ein Wert zwischen 1 und 6 annehmen kann, werden in table Tabelle die zugehörigen Bitmuster definiert. In jeden Fall fängt allerdings der interne „Tabellenzähler“ bei Null an. Deshalb muss hier noch der Wert &B00000000 für die Null in die Tabelle geschrieben werden. Aufgabe: Tippe das Programm ab, compiliere das Programm und starte es. Drücke „9“ Speichere das Programm unter Wuerfel3.bas © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik 8 Bit LED Anzeige, der FOR... Next... –Befehl Mit der C-Control lassen sich auch Dezimalzahlen als Binärzahlen (also mit Nullen und Einsen) dargestellen. 'Darstellung von Dezimalzahlen in Binärzahlen Kommentar zum Programm Define Led Byteport[1] Define n Byte Definition des Ausgabeports Definition für die Zählvariable n For n= 0 to 35 Print n Led= n Pause 100 Next n Zähle von 0 bis 35 Schreibe die Zahl (ggf. Fenster mit Alt+3) n wird am Ausgabeport gezeigt Pause 100 * 0,020 s Nächste Zahl Der FOR... Next... Befehl Mit dem For ...Next... Befehl wird eine Schleife programmiert. Die Schleife wird solange durchlaufen bis der Endwert (hier 35) erreicht ist. Vor dem Eintritt in die Schleife wird der Startwert (hier 0) zugewiesen. Nach jedem Schleifendurchlauf wird x um 1 erhöht. Ist der Endwert erreicht, wird die Schleife verlassen. Aufgabe: Tippe das Programm ab, compiliere das Programm und starte es. Öffne mit Alt+3 das Ausgabefenster. Verschiebe das Digitalportfenster nach links unten. Dadurch können die Binärzahlen mit den Dezimalzahlen verglichen werden. Achtung: Die Anzeige der Binärzahlen ist umgekehrt, d.h. das der wert nach rechts zunimmt. Wert: 1 2 4 8 16 32 64 128 Die Dezimalzahl 17 ist gleich &B00010001 (umgekehrt10001000 wie im Digitalportfenster dargestellt.) Aufgabe: Erweitere die For...Next.. auf 255. Compiliere das Programm und starte es. Speicher das Programm unter Zahlen1.bas © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Der Gosub- Return Befehl Der Gosub und Return Befehl hat große Ähnlichkeit mit dem Goto Befehl. Beim Gosub und Return Befehl merkt sich aber der Computer den „Absprung“ um an dieser Stelle wieder in das Programm einzuspringen und das Programm weiter fortzusetzen. Ein Beispiel soll dies verdeutlichen. Bei einem Lauflicht soll immer ein Taster abgefragt werden. Wird dieser gedrückt, sollen alle LEDs eingeschaltet werden und schließlich soll das Lauflicht an dieser Stelle fortgesetzt werden. 'Der Gosub und Return Befehl Kommentar zum Programm Define Led Byteport[1] Define Taster Port[9] Definition des Ausgabeports Definition der Tasterports #Schleife Led=&B00000001 Pause 20 If Taster= On then Gosub Taster Led=&B00000010 Pause 20 If Taster= On then Gosub Taster Led=&B00000100 Pause 20 If Taster= On then Gosub Taster Led=&B00001000 Pause 20 If Taster= On then Gosub Taster Led=&B00010000 Pause 20 If Taster= On then Gosub Taster Led=&B00100000 Pause 20 If Taster= On then Gosub Taster Led=&B01000000 Pause 20 If Taster= On then Gosub Taster Led=&B10000000 Pause 20 If Taster= On then Gosub Taster goto Schleife Start Schleife #Taster Led=&B11111111 Pause 40 Return Es folgen 8 mal die Programmzeilen mit: LED Ausgabewert Pause Tasterabfrage- wenn Taster gedrückt, gehe zur Unterroutine Tasterabfrage Das Programm merkt sich, wo es verzweigte. Unterroutine Taster LED Ausgabewert Pause Springe zurück Schreibe das Programm ab- compiliere und starte es. Versuche, bei der LED Nr. 4 die Taste 9 zu drücken. Was geschieht dann? Wo wird das Programm fortgesetzt und warum? Wie könnte man das mit dem Goto Befehl realisieren? © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Einführung in die C-Control Technik Daten zur C-Control Unit übermitteln Die Verbindung der C-Control Unit mit dem Computer erfolgt mit einem seriellen Kabel. Der Computer besitzt meist 2 serielle Ports. Die Einstellung des Computerports wird über den Menüpunkt Optionen, Umgebung...,Simulator und Lader vorgenommen. Diese Einstellung wird gespeichert und bleibt für zukünftige Anwendungen verfügbar. Wird ein eigenes Programm erstellt, muss es zuerst compiliert werden. Eventuell auftretende Fehler werden angezeigt und sollten unbedingt berichtigt werden. Zeigt die Compilierroutine die Fehlerfreiheit an, kann das Programm in die C-Control Unit übertragen werden. Das Starterboard und somit die C-Control Unit müssen mit einer Spannung versorgt werden. Dieses kann über ein Steckernetzteil (9V) oder ein Netzgerät erfolgen. Auf die richtige Polung muss unbedingt geachtet werden. Das Übermitteln des Programms kann mit dem Menüpunkt Entwicklung, In C-Control-Unit übertragen. Mit der Taste F12 erzielt man die gleiche Wirkung. Ist alles richtig angeschlossen, leuchtet die rote Leuchtdiode auf der C-Control Unit kurzzeitig auf. Während dieser Zeit wird das Programm in den Speicher geschrieben. Mit dem gelben Taster kann das Programm gestartet werden. Die Verbindung zum Rechner könnte getrennt werden, da die C-Control Unit nun selbstständig arbeitet. Die Meldung: Die ControlUnit antwortet nicht Kann auf fehlende Versorgungsspannung, falschen Com-Port oder fehlende Verbindung zwischen Computer und C-Control hinweisen. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Programmieraufgabe – Fahrstuhl Erstelle ein Programm für eine Fahrstuhlsteuerung mit einem Schrittmotor. Bedingungen: Schalter Etage 0 an Port 9 Schalter Etage 1 an Port 10 Schalter Etage 2 an Port 11 Reedkontakt *) Etage 0 an Port 12 Reedkontakt *) Etage 1 an Port 13 Reedkontakt *) Etage 2 an Port 14 Schrittmotorbits an Port 1 und 2 In der Fahrstuhlgondel befinden sich keine Tasten für die Etagenauswahl. Dazu müssen die Fahrstuhlschalter betätigt werden. Wenn der Fahrstuhl in der 1. Etage steht (Reedkontakt 1 = on) und Fahrstuhlschalter 2 wird gedrückt (Schalter2 = on), dann soll der Schrittmotor die Fahrstuhlgondel in die 2. Etage hoch ziehen. Fahrstuhlmodell Fahrstuhlschalter 2 bis 0 Reedkontakt 2 Reedkontakt 1 Die Schalter sind Öffner, d.h. sie sind im unbetätigtem Zustand geschlossen. Beim Betätigen öffnet der Schalter und geht dann auf „on“. Auch die Reedkontakte sind auf „off“ geschaltet. Nähert sich der Magnet, schaltet der Reedkontakt auf „on“. Reedkontakt 0 Schrittmotor *) Ein Reedrelais ist ein Schalter, der mit einem Magneten betätigt wird. Beim Fahrstuhlmodell wird ein Öffner als Reedkontakt eingesetzt. Beim Annähern des Magneten öffnen sich die beiden Kontakte und der Schalter öffnet. (Reedrelais gibt es auch als Schließer. Dabei schließen die Kontakte beim Annähern eines Magneten.) Magnet Glaskörper Magnet © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Programmieraufgabe – Ampelschaltung Erstelle eine Ampelschaltung nach deutscher Phasenansteuerung Ampelmasten West Ost Fußgängerampel Nord Taster für Fußgänger Süd 1. Teilaufgabe: Die jeweils gegenüberliegenden Fahrzeugverkehrsampeln sollen die Phasenabfolge rot- rot gelb- grün- gelb- rot aufweisen. Dabei sollen unterschiedliche Phasenlängen vorkommen und leicht zu ändern sein 2. Teilaufgabe: Bei Tasterdruck soll die Bedarfsfussgängerampel auf grün schalten. Gleichzeitig soll auch der Parallelfahrzeugverkehr grün erhalten. Die Programmierung soll so erfolgen, dass der Tastendruck zwischengespeichert wird, d.h. es soll nur kurz auf den Taster gedrückt werden um ein Fussgänger grün zu erhalten. 3. Teilaufgabe: Durch Abfrage eines LDRs soll die Ampel bei Dunkelheit in den Gelb-Blinkmodus übergehen. Wenn es wieser hell wird, sollen alle Ampeln zuerst rot zeigen. Zusatzaufgabe: Durch Induktionsschleife (Reedrelais unter der Fahrbahn) soll ein Licht zweimal blitzen wenn ein Fahrzeug bei rot über die Kreuzung fährt. Absprachen: Port 1 Nord Süd Rot Port 4 West Ost Rot Port 7 Fussg. Rot Port 14 Taster Port 2 Nord Süd Gelb Port 5 West Ost Gelb Port 8 Fussg. Grün Port 15 LDR * Port 3 Nord Süd Grün Port 6 West Ost Grün Port 16 Blitzlicht Zusatz * Hinweis: Zum Programmieren des Nachtschaltung “If Taster= Off then...” Control dann umstellen auf “If Taster=On then...” , weil LDR bei Licht niederohmig und bei Dunkelheit hochohmig. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Programmierung von Schrittmotoren In einem Schrittmotor befinden sich mehrere Spulen, von denen hier nur 2 Paare dargestellt werden. Schrittmotore werden durch sinnvolles Umpolen der Magnetfelder betrieben.. N Nord Ost West Paar S Süd Paar N S Bild 1 Eine Kompassnadel stellt sich auf “1 Uhr” ein, da sich dort der größte magnetische Nordpol befindet. Wird nun die Nord Süd Spule umgepolt, zeigt die Kompassnadel auf “5 Uhr”. (Bild 2) S S S N N N S N Bild 2 Bild 3 Wird nun die West Ost Spule umgepolt, zeigt die Nadel auf “7 Uhr”. (Bild 3) Schließlich wird die Nord Süd Spule umgepolt und die Nadel zeigt auf “11 Uhr”. (Bild 4) Nach weiterem Umpolen zeigt die Nadel wieder auf “1 N Uhr”, also wie im Bild 1. Das Umpolen eines Spulenpaares kann durch eine Polwechselschaltung erfolgen. Dabei sei der Zustand von Bild 1 , also Nordpol der Nord Süd Spule oben und N S Nordpol der West Ost Spule rechts gleich 0. Ein Umpolen soll durch eine 1 symbolisiert werden. Dadurch ergibt sich folgende Tabelle: 0 0 1 0 S 1 1 Bild 4 0 1 Nun kann leicht ein Bitmuster für die Programmierung erfolgen. Motor=&B00000000 Motor=&B00000010 Motor=&B00000011 Motor=&B00000001 Zwischen den Zeilen sollte noch ein Pausebefehl eingefügt sein. Für eine Drehung in die andere Richtung wird nur die 2. und 4. Zeile vertauscht. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Aufgaben zur Schrittmotorprogrammierung +5V - Nebenstehend ist eine Schrittmotorsteuerung für 2 Schrittmotore.Da die Stromstärke der CControl nicht für die Ansteuerung der Motoren ausreicht, muss eine separate Stromzuführung erfolgen. Dazu dienen die beiden Lötnägel, an die eine Spannung von 5 V gelegt wird. Die Schrittmotore werden einfach an die Pfostenstecker angeschlossen. Das IC TC 4469 übernimmt die Ansteuerung. Aufgaben: 1. Programmiere eine Schrittmotorsteuerung für einen Schrittmotor. Beachte das Bitmuster! Bitmuster für die Programmierung Motor=&B00000000 Motor=&B00000010 Motor=&B00000011 Motor=&B00000001 Definition der Variablen Motor und die Pausebefehle nicht vergessen! 2. Programmiere eine Schrittmotorsteuerung für einen Schrittmotor, bei der der Schrittmotor (auch Stepper genannt) auf Tastendruck in den Linkslauf- und auf anderen Tastendruck in den Rechtslauf übergeht. Eine Richtung andere Richtung Motor=&B00000000 Motor=&B00000010 Motor=&B00000011 Motor=&B00000001 Motor=&B00000000 Motor=&B00000001 Motor=&B00000011 Motor=&B00000010 3. Programmiere die Motorsteuerung im Dezimalsystem, also Motor=0 Motor=1 Motor=3 Motor=2 4. Programmiere eine Schrittmotorsteuerung für zwei Schrittmotore, bei der jeder Stepper auf Tastendruck in den Linkslauf- bzw. in den Rechtslauf übergeht. 5. Beachte: Fett= 1. Motor Kursiv=2. Motor—beide Motoren jeweils gleiche Richtung Motor=&B00000000 Motor=&B00000000 Motor=&B00000110 Motor=&B00000101 Motor=&B00001111 Motor=&B00001111 Motor=&B00000101 Motor=&B00001010 5. Speichere die Programme unter Stepper1 bis Stepper 4 ab © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Aufgaben zur Schrittmotorprogrammierung Programmierung eines Längenmessgerätes Ein Längenmessgerät besitzt zwei Endtaster, die durch Schieber betätigt werden. Die Schieber sitzen auf einer 6mm Gewindestange, die durch einen Schrittmotor gedreht wird. Eine 6mm Gewindestange hat bei einer Umdrehung einen Support (Vorschub) von 1 mm. Der Schrittmotor hat pro Umdrehung 200 Schritte. Somit beträgt die Messgenauigkeit 1/200 mm. Aufgabe: Programmiere das Längenmessgerät. Dazu soll der Schieber zuerst den rechten Taster berühren. (Rechtslauf Stepper). Dann wird der rechte Taster betätigt. Der Motor wird umgepolt. Dann sollen die Schritte gezählt werden, die der Schrittmotor macht bis der linke Taster betätigt wird. Die Länge ergibt sich dann aus der Länge zwischen den Tastern abzüglich der Länge der gemachten Schritte. 2. Taster Loser Schieber Zu messender Gegenstand Gewindestange 1. Taster Mutter Stepper Messprinzip: Die Strecke zwischen den Tastern beträgt z.B.10 cm. Zuerst fährt der rechte Schieber gegen den rechten Taster. Wird dieser betätigt, wird ein Zähler auf 0 gesetzt und die Motordrehrichtung umgekehrt. Nun können die Schritte gezählt werden. Der Schieber ist unten mit einer 6mm Mutter mit der Gewindestande verbunden. Dadurch schiebt er den zu messenden Gegenstand an den linken Schieber, der wiederum den linken Schalter betätigt. Der Motor bleibt stehen. Nun werden die gezählten Schritte abgefragt. Da jeder Schritt 1/200mm groß ist, sind z.B. 6200 Schritte = 31 mm = 3,1 cm. Somit ist der zu messende Gegenstand 10 cm – 3,1 cm = 7,9 cm lang. Aufgaben: 1.) Ermittle die Strecke zwischen den Schiebern (bis die Taster schalten) oder ermittle die Gesamtzahl der Schritte und somit die Gesamtstrecke. 2.) Programmiere das Messgerät. Die Motorausgabean Port 1 und 2, die Tasterabfrage an Port 9 und 10 und einen Starttaster an Port 11. Messwertausgabe über den Printbefehl (Simulation). 3.) Beim Einsatz des Modells werden die Messwerte wieder an den Computer übermittelt. Dazu dient das Programm Hyperterm von Microsoft. Speichere das Programm (Laenge) © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Lösung Fahrstuhlaufgabe 'Fahrstuhlsteuerung 24.12.2003 Holger Ulrich Define Taster Byte Define Motor Byteport[1] Define Etage Byte Define Taster1 Port[9] Define Taster2 Port[10] Define Taster3 Port[11] Define Kabine1 Port[12] Define Kabine2 Port[13] Define Kabine3 Port[14] #Tasterabfrage Etage = 0 Motor=&B00000000 If Kabine1= on then Etage=1 If Kabine2= on then Etage=2 If Kabine3= on then Etage=3 If Taster1 = on then gosub Kab1 If Taster2 = on then gosub Kab2 If Taster3 = on then gosub Kab3 goto Tasterabfrage Kommentar zum Programm Definition der Variablen Routine Tasterabfrage Init Etage Init Motor Variablenzuweisung Abfrage Taster und Sprung zu Unterroutinen #Kab1 Taster=1 If Etage < Taster then gosub Motorlinks If Etage > Taster then gosub Motorrechts Return Kabine Unten Wertzuweisung Taster Wenn Kabinenanford. < als Taster (also 1)dann Motorlinks Wenn Kabinenanford. > als Taster (also 1)dann Motorrechts #Kab2 Taster=2 If Etage < Taster then gosub Motorlinks If Etage > Taster then gosub Motorrechts Return Kabine Mitte Wertzuweisung Taster Wenn Kabinenanford. < als Taster (also 2)dann Motorlinks Wenn Kabinenanford. > als Taster (also 2)dann Motorrechts #Kab3 Taster=3 If Etage < Taster then gosub Motorlinks If Etage > Taster then gosub Motorrechts Return Kabine oben Wertzuweisung Taster Wenn Kabinenanford. < als Taster (also 3)dann Motorlinks Wenn Kabinenanford. > als Taster (also 3)dann Motorrechts #Motorrechts Motor=&b00000000 pause 1 Motor=&b00000001 pause 1 Motor=&b00000011 pause 1 Motor=&b00000010 pause 1 If Kabine1= on then Etage=1 If Kabine2= on then Etage=2 If Kabine3= on then Etage=3 If Etage = Taster then return goto Motorrechts #Motorlinks Motor=&b00000000 pause 1 Motor=&b00000010 pause 1 Motor=&b00000011 pause 1 Motor=&b00000001 pause 1 If Kabine1= on then Etage=1 If Kabine2= on then Etage=2 If Kabine3= on then Etage=3 If Etage = Taster then return goto Motorlinks Motorroutine Bitmuster und Pause für Motor Abfrage der Reedrelais für Etage Falls Fahrwunsch (Taster) = Ort der Kabine dann return Sonst fährt Motor weiter Motorroutine Bitmuster und Pause für Motor Abfrage der Reedrelais für Etage Falls Fahrwunsch (Taster) = Ort der Kabine dann return Sonst fährt Motor weiter Hinweis: In der Fahrstuhlkabine befinden sich keine Taster. Stattdessen sind die Etagentaster zu drücken. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Lösung Längenmessgerät 'Längenmessgerät, Holger Ulrich 5.Jan. 2004 'Entfernung zwischen den Tastern 121 mm Define Zaehler Word [1] Define Wert Word [1] Define Tasterrechts Port[9] Define Tasterlinks Port[10] Define Taster Port[11] Define Motor Byteport [1] #Start If Taster = on then goto Motorrechts Zaehler = 0 Goto Start #Motorrechts Motor=&B00000000 Pause 1 Motor=&B00000010 Pause 1 Motor=&B00000011 Pause 1 Motor=&B00000001 Pause 1 If Tasterrechts = on then goto Motorlinks Goto Motorrechts #Motorlinks Motor=&B00000000 Pause 1 Motor=&B00000001 Pause 1 Motor=&B00000011 Pause 1 Motor=&B00000010 Zaehler=Zaehler+4 Pause 1 If Tasterlinks = on then goto Messwert Goto Motorlinks Kommentar zum Programm Definition der Variablen Routine Start Wartet auf Taster (Port 11) Motorroutine Rechts Motor fährt solange rechts bis Taster an Port 9 gedrückt wenn nicht gedrückt, dann Motor weiter rechts Motorroutine Links Motor fährt solange links bis Taster an Port 10 gedrückt Variable Zaehler wird um 4 erhöht Wenn linker Taster gedrückt, gehe zur Unterroutine Messwert sonst weiter Motor links Unterroutine Messwert Gesamtstrecke 121mm= 24200 "; Wert/200; " mm" Schritte – gezälte Schritte Dieser Wert wird durch 200 dividiert (Stepper 1 Umdrehung 200 Schritte) Gesamtstrecke – Strecke Zaehler = Strecke des Gegenstandes Hinweis: der Print Befehl liefert bei der Simulation den Messwert im Ausgabefenster CControl Ausgaben (Alt + 3) den Wert. Wird das Programm auf der C-Control ausgeführt, wird der Messwert an den Rechner übergeben. Dazu muss das Programm Hyperterm geöffnet sein. (Hyperterm=Start-Programme-Zubehör-Kommunikatin-Hyper Terminal dann Hypertm.exe öffnen) Wenn nicht installiert, dann nachinstallieren. Beim 1. Start einfach alle Telefonnummern mit 000 füllen. Baudrate 9600. Neue Verbindung CCBasic eingeben. Zum Schluss: Speichern der Sitzung- dann steht Hyperterm auch zukünftig zur Verfügung. #Messwert Wert=24200- Zaehler Print "Die Länge beträgt Goto Start © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Lösung Verkehrsampel ' Ampelschaltung ' Verbindung über 2 Flachbahnkabel, wobei Kabel ' für Port 9-16 gedreht angeschlossen werden ' LDR steuert Blinkphase- ggf. für ausreichend Beleuchtung ' sorgen. Das Abdunkeln kann mit einer Füllerkappe geschehen define led byteport[1] define eingang1 port [15] define eingang2 port [14] define n byte define betaetigt byte #loop led =&B01001001 pause 100: gosub taster led =&b01001011 pause 20: gosub taster led =&b01001100 pause 150: gosub taster led =&b01001010 pause 20: gosub taster led =&b01001001 pause 100:gosub taster led =&b01011001 pause 20: gosub taster led =&b01100001 pause 150: gosub taster led =&b01010001 pause 20: gosub taster goto loop 'alle rot Schleife Ampel 'rot gelb 'grün Unterschiedliche Ampelphasen und Tasterabfrage 'gelb 'alle rot ' rot gelb ' grün ' gelb #blink for n= 1 to 10 led= &B00010010 pause 10 led= &B00000000 pause 10 next n if eingang2= -1 then goto blink goto loop #fuss betaetigt = 1 return Hinweis 2. Kabel gedreht Definition der Variablen #taster if eingang1= 0 then gosub Fuss if betaetigt = 1 and led =89 then goto fussampel if eingang2= -1 then goto blink return #fussampel led = &B10100001 pause 200 led = &B01010001 pause 20 betaetigt = 0 goto loop Kommentar zum Programm Tasterabfrage Flag für Knopf betätigt Falls Flag gesetzt und Leds an einer bestimmten Stelle, dann Unterroutine fussampel Falls LDR dunkel, dann Blinkroutine Blinkroutine Solange noch dunkel, dann Blinkroutine Unterroutine Fussgängerampel Leds für Fussgänger Flag zurücksetzen Unterroutine Flag für Fussgänger Flag setzen Hinweis: Für Taster = on kann Taster= 1 geschrieben werden. Für Taster = Off kann auch Taster = -1 geschrieben werden. (Bei manchen Computersystemen wird auch für Taster= Off auch Taster = 0 geschrieben. Beim CCBasic ist es aber –1) © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Befehl AD [1] Bedeutung wählen: eines A/D-Portes bei DEFINE, i = 1 bis 8 wählt ein Userbit bei DEFINE. i:= 1bis 192 BIT[i] BYTE[i] wählt ein Userbyte bei DEFINE, i: 1...24 BYTEPORT[ wählt einen 8-Bit- Digitalport bei DEFINE, i: i] 1...2 &B... Angabe einer Binärzahl CLOSE# Datei schließen DA[i] wählt einen D/A-Port. i: 1...2 Definition einer Variablen für einen Port, DEFINE oder eine Konstante Programmende END FOR Programmschleifen GOSUB Zeit Sprung zu einer Unterroutine Programmsprung. GOTO schleife Angabe einer Hexzahl &H... Falls ... dann .... IF- then INPUT# n Einlesen eines Zahlenwertes von der seriellen Schnittstelle, wobei n: Variablenbezeichner LOOKTAB Laden eines Wertes aus einer Tabelle, t: Tabellenbezeichner i: Index n: t.i.n Variablenbezeichner Operator fiir Modulo- Division MOD logische Verknüpfung NOT aus OFF ein ON Pause für t*20 Millisekunden PAUSE t wählt einen Port PORT[i] Ausgabe von Werten und Texten über die PRINT x serielle Schnittstelle. x: Aufzeichnen eines Wertes in einer Datei PRINT# n Integer-Zufallszahl generieren RAND RANDOMIZ Zufallszahlengenerator neu initialisieren E timer Rückkehr aus einer Unterroutine (gosub) RETURN Schritte in FOR-Schleife STEP TO WORD[1] WORDPOR T[1] Angabe des Endwertes bei der FOR-Schleife Definition einer Variablen Definition eines 16-Bit-Digitalport bei DEFINE Beispiel DEFINE poti AD[ 1] DEFINE flag BIT[16] DEFINE x BYTE[ 1 ] DEFINE LEDs BYTEPORT[ 1 ] &B01010000 CLOSE# DEFINE Wert DA[1] DEFINE Poti AD[1] DEFINE n Byte IF A=1 THEN END FOR n=1 TO 10 GOSUB Zeit GOTO schleife &H2AF1 IF n=10 THEN GOTO end INPUT n LOOKTAB Tabelle,i,n n= 10 MOD 3 n= NOT x LED=OFF Taster1=ON PAUSE 50 Define wordport [1] PRINT “Wert”, wert PRINT# n n = RAND RANDOMIZE TIMER RETURN FOR n= 0 TO 100 STEP 2 FOR n=1 TO 10 DEFINE WORD[1] DEFINE Wert WORDPOR[1] © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Der Einsatz der Analogausgänge- der DA Wandler der C-Control Die C-Control besitzt zwei DA-Wandler. Durch entsprechende Basic Befehle können Spannungen von 0- 5 V ausgegeben werden. Dividiert man somit 5 V durch 256 (8 Bit), dann so erhält man 0,0196078 V, also ca. 20mV pro Einheit. Dadurch ist es möglich, beliebige Spannungen auszugeben. Benötigt man eine Spannung von 1,6 V, so berechnet man: 1600 mV : 20 mV = 80. Der DA Wert ist somit 80. Mit diesen unterschiedlichen Spannungen (oder DA Werten) kann die Drehzahl eines Motors, die Helligkeit einer Leuchtdiode oder Glühlampe oder der Spannungsverlauf für einen Versuch gesteuert werden. Intern arbeitet die C-Control nach der Pulsweitenmodulation (PWM). Dabei werden die DA- Ausgänge sehr schnell ein- und ausgeschaltet. Das Verfahren erinnert an einen Dimmer, bei dem auch die Spannung sehr schnell ein- und ausgeschaltet wird. Beim Dimmer ist die Frequenz 100 Hz- also die doppelte Netzfrequenz. Ein anderes Beispiel ist das Schaltnetzteil des Computers. Dabei wird auch die Netzspannung solange (ein-) u. ausgeschaltet, bis die erforderlichen Spannungen (z.B. 5V oder 12 V) erreicht werden. (Durch geeignete Kondensatoren und weitere Bauteile kann dann eine nahezu stabile Spannung erzeugt werden.) Die Ausgangsfrequenz der C-Control beträgt etwa 1953Hz (1s /(2µs * 256) =0,0019531---besser 1000000 µs / 512µs). Interne Routinen der C-Control sorgen für eine autonome Verarbeitung der Ausgabefrequenz. Diese Routinen werden durch das Basic- Programm aktiviert. Beispiel: Die Grafik soll einen DA Wert von 50 darstellen. Die Grafik soll einen DA Wert von 100 darstellen Die Grafik soll einen DA Wert von 200 darstellen etwa 512 µs Die DA- Werte von 50,100 und 200 entsprechen etwa einer Einschaltdauer von 20%, 40% und letztlich 80%. Eine angeschlossene Leuchtdiode würde die in % angegebene Helligkeit aufweisen- also DA Wert = 200 wäre etwa 80% der Helligkeit erreicht. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Der A/D Wandler Der Wandler der C-Control hat eine Auflösung von 8 Bit = 256 Schritte. Bei einer Referenzspannung von 5V beträgt der minimale Abstand zwischen zwei Messwerten also 5V / 256 = 0,02 V, also rund 20mV (gerundet). Mit der Referenzspannung wird die Eingangsspannung des A/D Wandlers verglichen. Die Referenzspannung ist die größte Spannung, die am Wandler anliegen kann. Ist sie 5 V so ergibt sich eine Schrittweite von 20 mV. Ist sie 2,5 V, so erhält man eine Schrittweite von 10 mV; also doppelt so genau. Die Referenzspannung lässt sich am oberen Rand der C-Control mittels eines Jumpers auf 2,5 V oder 5V einstellen. Werden fertige Sensoren von Conrad verwendet, können diese an den Port AD 1 bis AD 8 angeschlossen werden. Dabei sind dann die linken Pins von AD 1-8 mit dem Minuspol, die mittleren Pins mit +6,35 V !!!!! und die rechten Pins mit den Eingängen verbunden. Aufgaben: Verbinden Sie ein Poti (10k, 100k) mit dem Eingang von AD1 und die Außenkontakte mit dem Pluspol und dem Minuspol. Starten Sie das u.g. Programm und Hyperterm. `Abfrage des AD Wandlers 1 Kommentar zum Programm Define Eingang ad[1] Definition der Variablen Eingang #Schleife Print Eingang Goto Schleife Endlosschleife Schreibe den Wert des AD Wandlers Gehe zur Endlosschleife U A/D J33 – J40 Zum Wandler Zum AD Wandler GND GND + 6,35 V Für die Simulation kann ein Analogportfenster geöffnet werden (Alt + 6). Klickt man in den grauen Balken, kann von links nach rechts ein Analogwert (mit gedrückter linker Maustaste(keine Rechtschreibvorschläge) eingestellt werden. Aufgaben: Stellen Sie die Referenzspannungen ein und ermitteln Sie die Werte. Referenzspannung 2,5 V 10k 100k Werte von- bis Referenzspannung 5 V Werte von- bis Die Werte sind immer im Bereich von 0 –255. Stellen Sie den Wert auf ca. 52 ein. Verändern Sie nun die Referenzspannung. Was fällt auf?(Hyperterm) Programmieren Sie eine Led- Anzeige, bei der die Potistellung als Lichtband dargestellt wird. © Holger Ulrich Haupt- und Realschule Hude- Hurreler Weg 2- 27798 Hude Einführung in die Mikrocontrollertechnik Ein weiteres Programm zur Motoransteuerung 'Ansteuerung von 2 Schrittmotoren mit Taster(platine) 'Taster als Öffner anschließen Define Motor Byteport [1] Define Taster Byteport [2] Define n Word Define a Byte Define b Byte Define c Byte Define d Byte #Tasterabfrage If Taster= 0 then goto Null If Taster= 1 then goto Eins If Taster= 2 then goto Zwei If Taster= 4 then goto Vier If Taster= 8 then goto Acht If Taster= 10 then goto Zehn If Taster= 9 then goto Neun If Taster= 6 then goto Sechs If Taster= 5 then goto Funf goto Tasterabfrage #Null A= 0: B= 0: C= 0: D= 0: goto Motor #Eins A= 0: B= 1: C= 3: D= 2: goto Motor #Zwei A= 0: B= 2: C= 3: D= 1: goto Motor #Vier A= 0: B= 4: C=12: D= 8: goto Motor #Acht A= 0: B= 8: C=12: D= 4: goto Motor #Zehn A= 0: B= 5: C=15: D= 10: goto Motor #Neun A= 0: B= 9: C=15: D= 6: goto Motor #Sechs A= 0: B= 6: C=15: D= 9: goto Motor #Funf A= 0: B= 10: C=15: D= 5: goto Motor Goto Tasterabfrage #Motor Motor= A: Pause 1 Motor= B: Pause 1 Motor= C: Pause 1 Motor= D: Pause 1 goto Tasterabfrage © Holger Ulrich