Sie sind auf Seite 1von 5

GHOST: Ein AT89LPx052 (8051) Entwicklungshelfer

3.0 8051 Assembler und Hochsprachen


Eine kurze bersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundstzlich akzeptiert ein 8051 Mikrocontroller als Befehle nur binren Maschinencode. Ein Programmsprung oder das Speichern von Werten wird im Maschinencode durch verschiedene Binrzahlen angegeben. Ein Maschinencode wird auch Operation Code genannt oder auch einfach mit OpCode abgekrzt. Die Opcodes kann man nach deren Funktionen unterscheiden, z.B. arithmetische Funktionen wie addieren (ADD) und subtrahieren (SUBB), logische Funktionen wie UND, ODER und Schiebeoperationen, Datentransferbefehle wie MOV, PUSH, POP oder z.B. Sprungbefehle in Abhngigkeit von bestimmten Zustnden im Flagregister. Die Ausfhrung eines Maschinenbefehls bentigt eine bestimmte Zeit, die in Datenblttern mit der Anzahl der Taktzyklen angegeben ist. Beim 8051 Mikrocontroller sind u.a. die folgenden Register (benannte Speicherstellen) wichtig, die einen Zustand beschreiben oder aktuelle Werte fr eine Verarbeitung speichern: A B R0-R7 PSW SP Der Akkumulator, ein 8 Bit Arbeitsregister Das Hilfsregister bei Multiplikation und Division Allgemeine Register im RAM (Registerbnke 0-3) Das Flagregister zeigt aktuelle Zustnde an Der Stackpointer ist ein Zeiger auf den Stapelspeicher

Weitere SFR Register (Special Function Register) dienen zur Steuerung der Hardware. Mit ihnen knnen z.B. die I/O-Ports (P1 bzw. P3), die Zhler/Timer oder die serielle Kommunikation gesteuert werden. Alle SFR Register werden ber ihre Adresse als RAM angesprochen (Adressen ber 128 Byte). Der Maschinencode, z.B. 74 0F F5 90 80 FE (hier angegeben im HEX Format) steht im Flash oder ROM eines 8051und wird einfach von
Seite 18 von 119

GHOST: Ein AT89LPx052 (8051) Entwicklungshelfer

Anfang bis zum Ende hintereinander gesetzt. Dort wird es vom Controller gelesen und dem Programm entsprechend abgearbeitet. Bei Atmel AT89LPx052 sucht der Mikrocontroller, wie die meisten 8051er Controller, nach dem Einschalten den ersten Befehl an der ersten Adresse 0000H im Speicher. Der Datenbus wird gelesen und die Zahl in ein Befehlsregister geladen. Der Befehlszhler wird um eins erhht. Dieser knnte nun die nchste Speicherzelle adressieren, doch die CPU gibt diesen Wert noch nicht zum Adressbus aus, sie muss erst den Befehl untersuchen. Im Internet findet man zu internen 8051 Ablufen z.B. folgendes Bild und einige detaillierte Erluterungen unter: http://www.goblack.de/desy/mc8051chip/theorie/cpu.html

Seite 19 von 119

GHOST: Ein AT89LPx052 (8051) Entwicklungshelfer

3.2 Hochsprachen und Assembler zur Erzeugung von Maschinencode Dieser Zahlenwirrwarr ist fr den Menschen unleserlich und wird einem Programmierer durch sog. Hochsprachen vereinfacht. Als Hochsprachen, die Programme wiederum in Maschinencode umsetzen knnen, kommen z.B. C, Basic oder seltener auch Pascal in Frage. Das bersetzungsprogramm zur Umsetzung des Quelltextes in Maschinencode wird in diesem Fall Compiler genannt (to compile = zusammenstellen). Die Programme werden nach der Erstellung kompiliert und dadurch die HEX oder BIN Dateien fr eine bertragung zum Mikrocontroller erzeugt. Assembler ist die maschinennaheste Sprache und besitzt nur einen kleinen und berschaubaren Befehlsatz. Die jeweiligen Befehle werden im Quelltext in einfachen Krzeln (Mnemoniks) angegeben. Jeder Befehl ist genau einem Maschinencode zugeordnet. Ein Assembler-Quelltext wird in einem Texteditor als Textdatei angefertigt und anschlieend wird dieser von einem Assemblerprogramm in Maschinencode umgewandelt. TASM ist zum Beispiel als Shareware Assemblerprogramm im Internet erhltlich. Die Ergebnisse einer reinen Assemblerprogrammierung sind im Vergleich zu den Compilerausgaben einer Hochsprache in den meisten Fllen erheblich effektiver. Manchmal ist die Verwendung von Assembler sogar unumgnglich wenn man Ausfhrungszeiten im s oder ms Bereich bercksichtigen muss. 3.2 Download eine Hex oder Bin Datei zum 8051 bermitteln Die erzeugte Datei, mit dem Opcode im Hex Format oder auch im binren (BIN) Format, wird in den Speicher oder Flash eines 8051 bertragen und nach einem Reset vom Mikrocontroller ausgefhrt. Das bertragen einer HEX oder BIN Datei wird dabei oft auch als Download oder einfach auch als Flash bezeichnet. Fr die Signalbertragung vom PC zum Atmel AT89LPx052 Mikrocontroller kann die SPI Schnittstelle des Controllers verwendet werden. Da ein Standard PC keine SPI Schnittstelle besitzt ist ein Adapter notwendig, der die Signale einer parallelen, seriellen oder USB Schnittstelle des PC fr die SPI Schnittstelle umsetzt.

Seite 20 von 119

GHOST: Ein AT89LPx052 (8051) Entwicklungshelfer

Adapter (und dazugehrige Flash Software) fr die parallele PC Schnittstelle sind z.B. von Atmel, GMS Bentheimer Softwarehaus oder anderen Unternehmen erhltlich. Alternativ kann die HEX oder BIN Datei auch mit einem externen Programmiergert verarbeitet werden. Der Nachteil dabei ist, dass der Baustein aus der Fassung genommen und in das Programmiergert gesteckt werden muss. Dieser Vorgang ist nach jeder neuen Programmierung erneut durchzufhren und der Mikrocontroller ist nach dem Programmiervorgang wieder zurck in die Schaltung zu stecken. Mit den oben angegebenen Adaptern wird der Atmel Mikrocontroller direkt in der Schaltung programmiert. Ob Sie sich fr die eine oder eine andere der o.g. Hochsprachen entscheiden, in den meisten Fllen sind eine Vielzahl von Assemblerund Compilerprogrammen im Internet kostenlos verfgbar. Sie finden zudem gengend Internetseiten, die sich mit dieser Thematik beschftigen. Einige davon sind im Literaturverzeichnis im Anhang aufgefhrt.

3.3 TASM eine kurze bersicht Mit TASM knnen Sie Ihre Assembler Quelltext in den Maschinencode umwandeln. Der TASM Assembler entstand ursprnglich bei Speech Technology Incorporated auf der Grundlage einiger C Bibliotheken von Borland International und ist fr das Betriebssystem DOS konzipiert. Der TASM untersttzt, neben dem 8051, noch weitere Prozessoren. Fr jeden Prozessortyp gibt es eine Tabelle, z.B. TASM51.TAB fr den 8051. Nach einem Download aus dem Internet z.B. http://www.bookcase.com/library/software/msdos.devel.cross-asm.html entzippen Sie alle Dateien z.B. in das Verzeichnis c:\tasm\. Ihre Quelltexte sollten Sie ebenfalls im gleichen Verzeichnis ablegen. Den Assembler Quelltext knnen Sie mit einem einfachen Texteditor erstellen und danach mit der Dateiendung .asm speichern, z.B. Test.asm. Das DOS Programm TASM.EXE kann wie folgt aufgerufen werden um einen Maschinencode im Binrformat zu erzeugen:

Seite 21 von 119

GHOST: Ein AT89LPx052 (8051) Entwicklungshelfer

c:\tasm\tasm -51 b test.asm test.bin Unter Windows knnen sie sich z.B. dazu eine kleine Batch Datei erstellen, die diese Befehlszeile beinhaltet. -51 steht fr die Verwendung der TASM51.Tab Datei -b fr die Ausgabe im Binrformat TASM erzeugt neben der Test.bin auch eine Test.lst Datei. Diese Datei listet neben dem Quelltext und den Maschinencode auch die aufgetretenen Fehler auf. .org 0000H mov 0c2H,#00H mov 0c3H,#00H mov 0c6H,#00H mov 0c7H,#00H mov a,#00 next mov P1,a mov r2,#255 loop1 mov r3,#20 loop2 djnz r3,loop2 djnz r2,loop1 inc a sjmp next .end main

0000 0003 0006 0009 000C 000E 0010 0012 0014 0016 0018 0019 001B

75 C2 00 75 C3 00 75 C6 00 75 C7 00 74 00 F5 90 7A FF 7B 14 DB FE DA FA 04 80 F3

Die Angaben auf der linken Seite zeigen die Ergebnisse nach der bersetzung mit dem Assembler TASM in der vom TASM erzeugten *.lst Datei. Am Anfang jeder Zeile ist die Speicheradresse angegeben. Die Zahlen in Kursivschrift zeigen die Maschinencodes des jeweiligen Befehls. Im Internet http://www.hjberndt.de/mc/mc5.htm steht fr auch eine Automatisierung eine Windowsoberflche namens TASMEDIT zur Verfgung, die von H.J.Bernd bzw. B.Kainka in verschiedenen Bchern beschrieben wird.

Seite 22 von 119