Automatisieren und Vernetzen mit Industrie-PC
:: Stand ::
17.04.2004 |
||
| Pfad ::: Home / Mikrocontroller / MyFirstProject | ||
2.3. Programme mit Keil C51 / Philips LPC900
2.3.3. MyFirstProject
Hinweis: Alle Seitenangaben
beziehen sich auf das Buch "Keil C51 / Philips LPC900 von Michael Baldischweiler
CSEG AT 0 ; Information für den Assembler, an welcher Adresse im Codebereich das Programm
; beginnen soll.
; Ein Befehl besteht im Falle eines 8-Bit-Rechners aus einer Kombination von
; acht Nullen bis zu acht Einsen (256 Kombinationen). Somit ergeben sich 255
; mögliche Befehle und ein Reservebefehl für den 8051-Core (dt. Kern, meint
; die CPU). Eine solche Kombination gelangt in den Befehlsdecoder der CPU, die
; daraufhin den Controller zu ganz bestimmten Aktionen veranlasst.
; Die Kombination für den folgenden Befehl "ljmp" ist binar: 0000 0010 bzw.
; hex: 02h auch als 0x02 geschrieben (das x steht für hexadezimal)
ljmp main ; Springe zum Hauptprogramm "main", (long jump dt. langer Sprung)
; ljmp hex: 02h (0x02) binär: 0000 0010 Länge: 3 Byte Zeit: 2 Maschinentakte
; Unbedingter Sprung zur adressierten Stelle, indem der Programmzähler mit dem
; zweiten und dritten Byte des Befehls geladen wird.
main: ; Anfang von main, "main:" ist ein so genanntes Label, wie Textmarke in MS Word :-)
mov A, #0x34 ; Lade die Konstante hex: 0x34 binar: 0011 0100 in den Akku,
; mov A hex: 74h (0x74) binar: 0111 0100 Länge: 2 Byte Zeit: 1 Maschinentakt
; Der Akkumulator oder Akku ist ein 8-Bit Register (1 Byte) und ist ein Bestandteil
; der CPU (Central Prozessing Unit). Der Akku ist eng mit der ALU (Arithmetisch-
; logische Einheit) verbunden und wird bei sehr vielen Befehlen verwendet.
INC A ; Erhöhe den Akku um 1; bin: 0011 0100 + 1 = 0011 0101 hex: 0x34 + 1 = 0x35
; INC A hex: 04h (0x04) binär: 0000 0100 Länge: 1 Byte Zeit: 1 Maschinentakt
CLR C ; Lösche das Carry-Flag (Ein Bit im PSW = Programmstatuswort)
; Das Carry-Bit wird im Allgemeinen durch eine vorausgegangene mathematische
; Operation
; geändert. Das Carry ist ferner der boolesche Akku, über den viele Bitoperationen
; laufen.
; CLR C hex: C3h (0xC3) binär: 1100 0011 Länge: 1 Byte Zeit: 1 Maschinentakt
SJMP $ ; Mit SJMP (short jump dt. kurzer Sprung) wird wieder zu einem Label gesprungen,
; hier das Dollarzeichen, das die Startadresse das SJMP-Befehls repräsentiert.
; Also ein Sprung zu sich selbst und somit eine Endlosschleife.
; Es soll verhindert werden, dass der Controller weitere Speicheradressen im ROM, hier
; Flash-ROM ausliest und eventuell Datenmüll als Befehl ausführt.
; SJMP $ hex: 80h (0x80) binär: 1000 0000 Länge: 2 Byte Zeit: 2 Maschinentakte
end ; hex: FEh (0xFE) binär: 1111 1110, gehört noch zum SJMP $ -Befehl
|
|||
|
Beratender Fachlehrer: |
|||