Programmentwurf eines Mikrocontrollergesteuerten H
1. Einführung
Die Hardware - Semesterarbeit besteht aus der Aufgabe, einen mikrocontrollergesteuerten Hochregalroboter zu fertigen. Hierfür stand der ELVamat Baukasten zur Verfügung, der neben drei Schrittmotoren auch diverse mechanische Teile zum Bau von verschiedenen "Robotern" beinhaltet. Die Basis ist ein Mikrocontrollersystem auf der Basis des Intel 87C52. Die Software zum Betrieb des Roboters wird in Assembler geschrieben und in einem EPROM abgelegt. An dieses System angeschlossen sind eine I/O - Baugruppe, die Tastatur, das Display und eine Motoransteuerung, die einen Logikteil und die Treiberstufen enthält. In dieser Dokumentation wird näher auf die Programmausarbeitung eingegangen.
1.1. Formelle Aufgabenstellung für die gesamte Gruppe
Aufgabe: HochregalroboterTeilnehmer: Michael Kuß, Thomas Jüngel, Matthias Buchhorn, Andreas Spiller
Zeitraum: 8 Wochen
Mit dem ELVamat Baukasten wird ein Hochregalroboter gebaut, der Gegenstände in ein Hochregallager ein - , aus - und umlagern kann. Die Steuerung erfolgt über eine Mikrocontrollerbaugruppe. Die gesamte Steuerung erfolgt durch ein Assemblerprogramm, das auf der Mikrocontrollerbaugruppe in einem EPROM gespeichert ist. Die Hardware teilt sich in die drei folgenden Teilbereiche: Logik &Treiber, Ein - und Ausgabeeinheit und Mikrocontrollerbaugruppe. Die Steuerung des Roboters erfolgt über die Tastatur, die Eingaben können auf dem Display überprüft werden. Die Mikrocontrollerbaugruppe verarbeitet die Eingaben und gibt die Signale für die Schrittmotorsteuerung.
Der Funktionsnachweis ist zu führen. Das fertige Projekt wird mit einer kompletten Dokumentation präsentiert
1.2. Organisatorisches Umfeld
1.3. Aufgabenstellung Programmausarbeitung
Grundlage für alle weiteren Programme sind zwei Befehlsbibliotheken, welche alle elementaren Funktionen in sich vereinigt und somit erst ein effizienteres Programmieren ermöglicht. Die Bibliothek "system.mak" soll alle Funktionen zum Ansteuern der Tastatur und des Displays beinhalten. Desweiteren stellt die Bibliothek "motor.mak" alle Funktionen zum Steuern der Schrittmotoren bereit. Es gibt mehrere Möglichkeiten zum Ansteuern der Motoren, sei es vom PC aus, über eine seriellen Schnittstelle, manuell oder automatisch mit den Mikrocontroller.Das Hauptprogramm bedient sich dieser Funktionen und erfüllt folgende Aufgaben:
-
Gegenstand aus dem Fach nehmen Gegenstand in das Fach legen Steuerung über PC manuelle Steuerung des Roboters über die Cursortasten Hilfe
2. Grundlagen
2.1. Speicherverwaltung
Alle Bausteine der MCS - 51 Familie haben einen getrennten Adreßbereich für Programm - und Datenspeicher von jeweils maximal 64 KByte Größe. Die CPU holt sich, die für die Abarbeitung von Programmen nötigen Befehlen aus dem Programmspeicher (EEPROM), Speichervariablen werden jedoch in den Datenspeicher abgelegt bzw. ausgelesen. Bei einem Zugriff auf die RAM - Bausteine wird die Leseleitung (\RD) angesprochen, sobald Befehle vom Programmspeicher angefordert werden, wird die Programmspeicherfreigabeleitung (\PSEN) aktiviert. Die Funktionen des Mikrocontrollers schalten selbstständig die Steuerleitungen frei, so das dieser Vorgang beim Programmieren transparent bleibt. Die Software des Mikrocontrollersystems wurde am PC, mit einem sogenannten Cross - Assembler entwickelt. Dieses kleine MS - DOS Programm wandelt den Assemblercode in einen funktionstüchtigen Maschinencode um. Diese Datei mit der Endung2.2. Spezialfunktionsregister (SFR)
Im oberen Datenspeicher befindet sich im Bereich der Adresse 80 - FF die Spezialfunktionsregister (SFR) die weitere umfangreiche Funktionen bieten :SFR |
Code |
Beschreibung |
Akkumulator |
Acc |
Bei Operationen der ALU wird dieses Register benutzt. |
B Register |
B |
Wird bei der Division und Multiplikation benutzt. |
Programmstatuswort |
P |
Das Flagregister bietet folgende Informationen: CY - Carry Flag AC - Hilfscarryflag F0 - freies Flag RS1,RS2 - Registerbänke OV - Überlaufflag P - Parityflag |
Stackpointer |
SP |
Durch Beschreiben dieses Registers legt man den Stack an eine andere Stelle des Speichers.(default=07) |
Datenpointer |
DPL, DPH, (DPTR) |
Der 16 - Bit Datenpointer teilt sich in Low und Highbyte. Damit ist eine Adressierung bis zu 64k Byte möglich. |
Ports 0 - 3 |
P0, P1, P2, P3 |
Ports können eingelesen bzw. beschrieben werden. |
serieller Datenbuffer |
SBUF |
Besteht aus zwei getrennten 8 - Bit - Registern. Beim Lesen wird der Empfangspuffer, beim Schreiben der Sendepuffer angespochen. |
Timer |
TL0, TL1, TH0, TH1 |
Diese Register stehen für die beiden 16 - Bit Timer - register. |
Kontrollregister |
PCON, TCON, TMOD, SCON, IE, IP |
Diese Register dienen zum Steuern der Timer und Interrupts. |
2.3. Übersicht über die Maschinenbefehle
2.3.1. Arithmetische Befehle
Die arithmetischen Befehle kennzeichnen einfache mathematische Befehle wie Addieren, Subtrahieren, Multiplizieren, Dividieren und Erhöhen bzw. Erniedrigen eines Wertes. Für Berechnungen dieser Art verwendet die ALU (arithmetic logic unit) den Akkumulator und das B - Register. Die Funktionen ADD,SUBB, INC und DEC setzt beim Überschreiten von 0ffh bzw. Unterschreiten von 0 das Übertragsflag. Die Befehle ADDC und SUBB beziehen das Übertragflag in die Berechnung mit ein. So können größere Zahlen addiert bzw. subtrahiert werden. Eine Möglichkeit, zwei Zahlen nach Größe zu vergleichen, ist z.b. das Subtrahieren zweier Zahlen und das Auswerten des Übertragflags. Nach jeder BCD - Addition muss der DA A - Befehl zur Korrektur ausgeführt werden.2.3.2. Logische Befehle
Die logischen Befehle bieten verschiedenste Verknüpfungsmethoden zwischen zwei Bytes. Logikbefehle sind AND(ANL), OR(ORL), XOR(XRL), NOT(CPL). Weiterhin bietet der Mikrocontroller Befehle wie Rotate(RR,RL), Swap(SWAP), Clear(CRL). Die Rotatefunktion schiebt die 8 Bit des Akumulators nach rechts oder links. Damit lässt sich z.b. ein schnelles Multiplizieren mit einer Zweierpotenz gewährleisten. XOR - Logik wird auch dazu verwendet zwei Werte zu vergleichen. Sind beide Werte identisch, so ist der Akkumulator null und kann mit dem bedingten Sprungbefehl JZ ( jump zero) und JNZ (jump not zero) ausgewertet werden.2.3.3. Datentransferbefehle
Die Datentransferbefehle MOVX und MOVC greifen auf den externen Speicherbereich der RAM - bzw. der ROM - Bausteine zu. Der MOV - Befehl kann nur auf internen Speicher zugreifen, somit können Register, Spezialfunktionsregister und Variablen bearbeitet werden. Alle Datentransferbefehle verschieben 8 oder 16 Bit große Datenpakete zu beliebigen Zielen. Interrupts und Subprozeduren unterbrechen den Ablauf des Hauptprogrammes, um deshalb wieder in den normalen Programmablauf zurückzukehren, werden alle Registerinhalte mit Pop in den Stack gesichert und nach Beenden der Routine mit Push wiederhergestellt.2.3.4. Boolsche Befehle
Mit Hilfe von boolschen Befehlen ist die Verknüpfung von einzelnen Bits möglich. Alle logischen Befehle arbeiten auch mit Bits. Weiterhin bietet der Mikrocontroller bedingte Sprungbefehle, welche den Zustand der Bits auswerten und einen Sprung an einer relativen Programmadresse veranlassen. Die Carry - Flag - Befehle spielen ein große Rolle, da sie den Übertrag bei Addition, Subtraktion, Inkrement - oder Dekrementierung registrieren.2.3.5. Bedingte und unbedingte Sprünge
Ohne bedingte und unbedingte Sprünge ist nur eine sequenzielle Abarbeitung des Programmes möglich. Sprünge erlauben erst das Arbeiten mit Unterprogrammen, Subroutinen und Interrupts. Prozeduren werden mit2.4. Assemblerfunktionen
Der verwendete MCS - 51 Assembler besitzt über die einfache Mnemonik hinaus, Kontrollstrukturen, Verwaltung von Variabeln und Labels. Konstanten werden im Programmspeicher abgelegt Es können 8 - Bit große Zahlen mit dem Befehl DB abgelegt werden, 16 - Bit große Zahlen werden mit der DW - Anweisung im ROM deklariert. Mit der ORG - Anweisung wird eine absolute Adresse festgelegt. Diese Anweisung wird z.b. für die Programmeinsprungsadresse und der Speicheradresse der Konstanten verwendet. Die Registerbänke werden mit der Funktion USING2.5. Programmierung der Peripherie
2.5.1. Ansteuerung der Tastatur
Es wird eine 3x4 Tastaturmatrix verwendet. Die Tastaturinformation liegt an Adresse 04000h. Der eingelesende Wert wird in ASCII - Code umgewandelt:
Wert |
ASCII - Code |
Wert |
ASCII - Code |
6Fh |
30 - ‘0’ |
F5h |
36 - ‘6’ |
DEh |
31 - ‘1’ |
DBh |
37 - ’7’ |
7Eh |
32 - ‘2’ |
7Bh |
38 - ‘8’ |
F6h |
33 - ‘3’ |
F3h |
39 - ‘9’ |
DDh |
34 - ‘4’ |
CFh |
20 - ‘ ’ |
7Dh |
35 - ‘5’ |
E7h |
A0 - ‘ ’ |
2.5.2. Ansteuerung des Displays
Ist das 1./2. und 9.Bit des Adressbytes gesetzt, so wird das Display angesprochen.Das 2.Bit gibt an, ob es sich bei dem empfangende Byte um eine Date oder ein Befehl handelt. Somit trägt die Befehlsadresse den Wert 4001h und die Datenadresse den Wert 4002h. Erklärung zum Befehlsbyte:
Wert - binär |
Befehl |
Beschreibung |
0000 0001 |
Clear Display |
löscht das Display und setzt den Cursor an Position 0 |
0000 001 - |
Return Home |
setzt den Cursor an Position 0 |
0000 01xy |
Eintragemodus |
regelt die Richtung der Cursorbewegung (x) und das Displayshift (y) |
0000 1xyz |
Display on/off |
schaltet Anzeige (x), Cursor (y) u. Cursorblinken (z) an/aus, |
0001 xy - - |
Shift |
Bewegt den Cursor (x) und verschiebt die Anzeige (y) |
001x yz - - |
Interface |
setzt Datenbreite(x), Zahl der Zeilen (y) und Größe des Zeichens (z) |
01xx xxxx |
setzeBefehlsadr. |
alle nachfolgenden Daten gelangen in den gesetzten Charakter - RAM |
1xxx xxxx |
setze Datenadr. |
alle nachfolgenden Daten gelangen in den gesetzten Daten - RAM |
xyyy yyyy |
lese Adr.&Busy |
setzt das Busy flag (x) und liest den Adreßzähler der Anzeige (x) |
2.5.3. Motorsteuerung
Die Hauptaufgabe besteht natürlich darin, den Hochregalroboter zu steuern. Der Roboter kommuniziert über die Adresse C000h. Ließt der Microcontroller von dieser Adresse, wird der Zustand der Taster übermittelt. Mit einem Schreibbefehl werden die Motoren angesteuert. Es ist möglich, bis zu drei Bitfolgen miteinander zuverknüpfen, um so die Motoren gleichzeitig laufen zu lassen. So können Anfahrtswege mit einen Linienalgorithmus verkürzt werden. Der Breesenham - Algorithmus arbeitet nur mit Integerwerten und ist somit sehr schnell. Es sind keine komplitzierten Realzahlberechnungen notwendig.Bewegungsrichtung des Roboters |
horizontal |
vertikal |
Greifer |
vor |
1111 1110=FEh |
1111 1011=FBh |
1110 1111=EFh |
zurück (init) |
1111 1100=FCh |
1111 0011=F3h |
1100 1111=CFh |
Taster in Bewegungsrichtung des Roboters |
Rückgabewert |
links |
FEh |
rechts |
FDh |
hoch/vor |
E7h |
runter/zurück |
EBh |
Jeder Motor muss mit einer Linksdrehung initialisiert werden. Es genügt, wenn der Microcontroller ein Byte mit dem Wert 0h zur Motorsteuerung schickt. Die Wartezeit zwischen den Betrieb eines Motors sollte nicht 4,0 ms unterschreiten, da die Motoren bei kürzeren Signalzwischenzeiten nicht die nötige Kraft zum Bewegen des Roboters aufbringen können. Wird ein Taster gedrückt, muss der Motor in dieser Richtung gestoppt werden.
2.5.4. Serielle Schnittstelle zum PC
Der Lagerroboter soll die Möglichkeit besitzen, über einen PC komfortabler gesteuert zu werden, dafür besitzt der Mircocontroller die Möglichkeit über serielle Ports mit anderen Prozessoren in Verbindung zu treten. Auf dieser seriellen Schnittstelle können gleichzeitig Daten versendet und empfangen werden. Damit der Mircocontroller, der über den UART - Standart verfügt, mit einen PC kommunizieren kann, wird der Baustein MAX232 verwendet. Dieser wandelt die Logik von 0V/5V des UART - Standard in den RS - 232 - Standart mit der Logik von - 12V/ +12V um. Der Ein - und Ausgang der seriellen Ports ist gebuffert. Die Empfangs - und Sendebuffer liegen zwar auf der selben Adresse (99h), sind aber physikalisch zwei verschiedene Register. Ein Schreibbefehl auf diese Adresse lenkt die Daten in das Senderegister, ein Lesebefehl holt die Daten aus den Empfangsregister. Der serielle Port kann in vier Modi arbeiten. Sie werden über das SCON - Register gesetzt. Modi 2und 3 sind Multiprozessormodi und spielen in der Verständigung zwischen Prozessoren eine große Rolle, da simultane Datensendung und - empfang möglich ist. Modus 0 schiebt mit konstanten Geschwindigkeit die Bits mit Hilfe eines Schieberegisters über die serielle Schnittstelle, Modi 1 bis 3 arbeitet im üblichen UART/RS232 - Format. Dieses Protokall arbeitet mit einem Startbit, acht (Modus 1) oder neun (Modi 2/3) Datenbits und einem oder zwei Stoppbits. Für die Anwendung des Hochregalroboters genügt Modus 1, da nie Daten gleichzeitig gesendet und empfangen werden müssen. Außerdem arbeitet der Modus mit 8 - bit Datenbits und die Baudrate ist beliebig, über das TH1 - Register, einstellbar. Die Timer werden mit dem Register TMOD gesetzt, um eine konstante Baudrate zu erzeugen.
3. Realisierung / Implementierung
3.1. Allgemeines
In der Testphase wurde der Eprom - Baustein mit einem Bootstrapprogramm beschrieben. Dieses 8K Byte große Programm liefert Debug - Informationen an den PC. Über die serielle Schnittstelle wird das Hochregalroboter - programm mit dem Programm Term95 auf das RAM geschrieben. Die Projektsoftware muss im Adressbereich 2000h - 3FFFh organisiert werden, da hier der RAM - Bereich liegt. Es wurde ein Shareware - Crossassembler benutzt, welcher über Internet bezogen wurde.3.2. Befehlsbibleothek
Die Befehlsbibleothek enthält elementare Funktionen zum Ansteuern des Displays, der Tastatur und des Roboters.3.2.1. Display
-
Zeichen ausgeben Befehl an das Display schicken Display initialisieren Display löschen Zeichenkette vom ROM lesen und auf Display ausgeben
Das Unterprogramm DISPLAY hat die Aufgabe den Buchstaben, welcher im Akkumulator liegt, auf dem Display anzuzeigen. Da das Display wie langsamer RAM - Speicher angesprochen wird, muss mit Hilfe des Busy - Signals auf das Display gewartet werden. Erst dann können die Daten an die Adresse E003 geschickt werden. DISPLAY_BEFEHL funktioniert ähnlich wie die Subroutine DISPLAY, hier wird jedoch ein Befehlsbyte zum Display, an die Adresse E001 gesendet. Diese beiden Funktionen sind Grundlage für alle weiteren Displayfunktionen.Das Display wird in der Subroutine "DISPINI" initialiesiert. Der Display - Controller wird in den 2 Zeilenmodus - geschalten, der Bildschirm wird gelöscht, das automatische Weiterbewegen des Cursors wird angeschalten und als letzes wird der Cursor ausgestellt. Die Funktion "DISPCLR" löscht den Bildschirm. Die Funktion "CURSOR" ließt aus dem Akkumulator die Cursorposition. Die erste Position der Zeile 1 hat dem Wert 00h, die erste Position in Zeile 2 wird mit Cursorwert 40h aktiviert. Mit dem Befehl DB können Daten und Zeichenketten ins ROM abgelegt werden. Die Subroutine "ROM2DISP" bedient sich desMaschienenbefehles MOVC, der diese Zeichenketten aus dem ROM ausliest. Eine Zeichenkette ist definiert als Menge von ASCII - Zeichen, die mit dem Byte 0 abgeschlossen wird. Das DPTR - Register enthält die Adresse des Strings und eine Anzahl von 256 Zeichen kann eingelesen werden.
3.2.2. Tastatur
-
Taste einlesen Zeichenkette einlesen 2 Byte String in eine Dezimalzahl umwandeln Tastaturstatus übergeben
Als Eingabemedium wird eine 3x4 Tastaturmatrix verwendet. Die Tastatur schickt an die Adresse ein Byte, welches den momentanen Status der Tastatur zurückgibt. Die Funktion "TASTE" ließt ein Zeichen von Tastatur, wandelt dieses Zeichen in ein ASCII - Zeichen um und legt diesen Wert in den Akkumulator ab. Die Tastaturmatrix muss über die Software entprellt werden. Das erledigt eine sehr kurze Warteschleife, danach wird noch ein Zeichen vom Eingabegerät gelesen und mit dem vorherigen Zeichen verglichen. Sind beide Zeichen gleich, hat ist die Taste immer noch gedrückt. Das Zeichen wird erst an das Hauptprogramm zurückgegeben, wenn der Benutzer die Taste loslässt. Die Subroutine "READLN" nutzt diese Funktion, um ein komplette Zeichenkette von der Tastatur zu lesen. Die Eingabe wird mit dem Enterzeichen oder mit der maximalen Anzahl der Zeichen beendet. Mit der Cancel - Taste kann jederzeit die Eingabe abgebrochen werden. Mit dem Unterprogramm "STR2DEZ" kann eine mehrstellige Zahl, welche im ASCII - Code im Speicher liegt, in eine Dezimalzahl umgewandelt werden.
3.2.3. Motorsteuerung
-
Drehe Motor automatische Motorsteuerung nach dem Linienalgorithmus von Breesenham manuelle Motorsteuerung PC - Steuerung Motorstatus ausgeben
3.2.4. Serielle Schnittstelle zum PC
Die Prozeduren für die serielle Schnittstelle liegen in der Befehlsbibliothek "motor.mak" und ist unter PC - Steuerung zu finden. Die Register werden initialisiert. Der serielle Modus 1, 8 bit UART und 4800 Baud wird eingestellt und der Timer1 wird gestartet. Der Mircrocontroller wartet auf einen Datenbyte. Dieses Byte gibt an, wie der Roboter sich bewegt. Der ASCII - Code der numerischen Tastatur übernimmt die Funktion der Steuerung. Nur die Tasten "+" und " - " varieren zum 3x4 Tastaturblock. Bei Betätigung dieser Tasten wird der Greifer vor und zurück bewegt. Wenn der auzuführende Prozess des Mircocontrollers beendet ist, schickt das Programm ein Zeichen zum PC. Damit gibt der Mircocontroller dem PC bekannt, dass er neue Befehlsdaten emfangen kann.3.3. Hauptprogramm des Hochregalroboters
3.3.1. Bedienung
Der Benutzer kann ohne Vorkennis den Roboter bedienen. Dies ist durch eine intuitive Menusteuerung möglich:
1 links/hoch |
2 hoch |
3 rechts/hoch |
4 links |
5 |
6 rechts |
7 links/runter |
8 runter |
9 rechts/runter |
Abbruch |
0 Greifer vor |
Bestätigen Greifer zurück |
Menüsteuerung im Programm des
Hochregalroboters
Mehrfachbelegung der 3x4 Tastaturmatrix
Der jeweilige Menupunkt wird mit den Cursortasten ausgewählt und mit der Taste "Bestätigen" aktiviert. Der Punkt "Ablegen" fordert die Fachnummer vom Benutzer. Nach der Eingabe fährt der Roboter das gewünschte Fach an, legt den Gegenstand ab und kehrt zum Ausgangspunkt zurück. Der Menupunkt "Nehmen" fährt nach der Eingabe das gewünschte Fach an, nimmt den Gegenstand und kehrt zur Anfangsposition zurück. Der Benutzer hat weiterhin die Möglichkeit den Roboter manuell oder über einen Computer zu steuern. Der Menupunkt "Steuern" gibt ein Untermenu auf dem Display aus. Dieses Menu hat die Auswahlmöglichkeiten "PC - Steuerung" und "manuell Steuern". Der Mircocontroller besitzt die Möglichkeit mit einem Personalcomputer über die serielle Schnittstelle zu kommunizieren. Der PC sendet ein Befehlsbyte an den Mircocontroller, welcher den Roboter steuert. Der zweite Menupunkt ermöglicht es dem Benutzer den Hochregalroboter manuell zu steuert. Die Cursortasten bewegen den Greifer in horizontaler und vertikaler Richtung. Die Tasten "0" und "Enter" Bewegen den Greifer vor und zurück. Mit den "Abbruch" Taste wird zum Hauptmenu zurückgesprungen. Mit dem Menupunkt "Hilfe" wird dem Benutzer eine kurze Hilfe in Form einer Scrollschrift gegeben. Mit der "Abbruch" Taste gelangt der Benutzer ins Hauptmenu zurück.
3.3.2. Programmroutinen des Hauptprogrammes
Programmablaufplan des Hauptprogrammes
Das Unterprogramm MENU gibt, nach der kurzen Information, ein Auswahlmenü auf dem Display aus. Das Auswahlmenü wird mit Hilfe des DB - Befehls in den EPROM abgelegt und mit der Subroutine ROM2DISP auf das Display geschrieben. Ein beliebiger Menupunkt kann mit den Cursortasten ausgewählt werden. Die folgenden Zahlen stehen für Cursorbewegungen < 2 - oben, 8 - unten, 4 - links, 6 - rechts>. Mit der Funktion TASTE werden diese Zahlen eingelesen und mit der Entertaste (Zeichen 12) bestätigt. Die Varible Menu_status gibt die Cursorposition an. Die Funktion ABLEGEN ruft das Programm EINGABE auf. Die Funktion READLN ließt die Fachnummer ein. Die Zeichenkette wird mit STR2DEZ in die Nummer des Faches umgewandelt. Diese Date wird mit Hilfe der Variable Fachx dividiert. Die Y - Koordinate steht nun im Akkumulator und die X - Koordinate liegt im B - Register. Diese Werte werden in das Register R0,R1 geschrieben und der Funktion "MOTOR" übergeben. Der Funktion wird weiterhin das Befehlsbit F0 übergeben. Ist dieses Bit gelöscht wird die Funktion Ablegen aktiviert. Das Unterprogramm NEHMEN arbeitet mit den gleichen Funktionen wie ABLEGEN. Diese Funktion wird mit dem gesetzten Bit F0 aktiviert. Das Unterprogramm STEUERN ruft den Befehl ROM2DISP auf, um die Menupunkte auf den Bildschirm anzuzeigen. Der Benutzer hat die Möglichkeit zwischen den Menüpunkten PC - STEUERUNG, MANUELL STEUERN auszuwählen. Die Funktion Menu_Steuerung2 gibt den ausgewählten Menupunkt zum Hauptprogramm zurück. Die Funktion Menu_steuerung2 funktioniert nach dem Prinzip der Funktion Menu_steuerung. Das Unterprogramm PC - Steuerung ermöglicht die Kommunikation zwischen PC und Mircocontroller mit Hilfe der seriellen Schnittstelle. Der zweite Menupunkt Manuell Steuern ermöglicht es dem Benutzer den Greifarm über die Cursortasten zu steuern. Mit der Funktion Press wird ständig der Tastaturstatus überprüft. Wird ein anderer Wert als FFh an das Hauptprogramm übergeben, wertet das Programm den Tastaturstatus aus. Je nach gedrückter Taste wird der Akkumulator mit den Wert der Motorsteuerung geladen und die Funktion Dreh aufgerufen. Dieses Programm schleift solange, bis die Taste "Abbruch" gedrückt wird. Der letzte Hauptmenupunkt HILFE schreibt eine Zeichenkette an die Cursorposition 040h. Die Zeichenkette wird vorher im ROM mit dem DB - Befehl abgelegt. Es wird ein 16 - Zeichen großer Ausschnitt vom kompletten String an Cursorposition 0 des Displays ausgegeben. Nach einer kurzen Warteschleife wird dieser Auschnitt, um zwei Zeichen nach links verschoben, wieder an Position 0 angezeigt. Der Tastaturstatus wird ständig mit der Funktion Press überprüft und solange die Laufschrift ausgegeben, bis die Taste "Abbruch" gedrückt wird.
Quellnachweis :
Bücher
"8 bit - Einchip - Mikrocontroller" - Datenbuch Phillips - 1988
"Das Mikrocontroller Kochbuch", "Das Mikrocontroller Applikations Kochbuch"
- Andreas Roth IWT Thomson, Bonn 97
Internet
Suche im Worlwideweb: http://www.altavista.digital.com
FTP - Server : http://www.ftp - search.com
Datenblätter und Tutorials im PDF, WORD und HTML Format.
http:://www.hitex.com
http:://www.ece.orst.edu/
Shareware - Crossassembler 1.2 : Copyright (c) 1994, 1996 by W.W. Heinz
4050 Worte in "deutsch" als "hilfreich" bewertet