PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Flags 8051



16.12.2004, 08:12
Hallo,
ich weis das ist vermutlich ne noob frage, trotzdem:
Kann mir jemand mal die Flags im 8051 (Overflow, Carry, Hilfscarry) erklärenund wenn möglich auchallgemeine Definitionen... von Flags. Vielleicht auch noch was technisches (Aufbau Flag...)

Danke und viele Grüße,

MICROMAN

Bomberman
16.12.2004, 10:45
Hallo Microman,

die genauen Angaben zu Flags erhälst Du aus der Hardwarebeschreibung Deines µCs.
Allgemein kann man sagen, daß für bestimmte Ereignisse Flags (Bits) reserviert sind, die immer dann gesetzt werden, wenn das entsprechende Ereigniss eintritt.
Die Flags müssen manuell (per Befehl) wieder gelöscht werden, da sie sonst kein weiteres Mal ausgewertet werden können (is ja auch logisch, wenn´s bereits gesetzt ist).
Im Assembler kann man die Flags Bitweise ansprechen. z.B.:
CLR ti ; Sendeflag der RS232 löschen
Oder:
CLR tf1 ;Überlaufsflag von Timer 1 löschen.
Oder
JB C,irgendwohin ;Sprung nach irgendwohin wenn Carry gesetzt ist
...

Falls Du genauere Informationen zu bestimmten Flags brauchst, benötige ich das Hardwaredatenblatt Deines µCs.

Der von Dir angesprochene Overflow ist vermutlich der Überlauf des Akkus. Wenn also der Akku überläuft wird das Carry-Bit gesetzt.
Das ist eine besondere Sache, weil für das Carry einige spezielle Funktionen vorgesehen sind.

Ciao

Patrick

16.12.2004, 15:27
Hallo Patrick
Das Problem ist ich hab keinen Zugang zum Datenblatt, da ich
Schüler bin und wir das in der Schule behandeln. Ich soll über Flags ein kurzes Referat halten. Hätte ich das Datenblatt wäre es wahrscheinlich kein Problem. Ich hab schon bei Google gesucht aber nichts wirklich hilfreiches gefunden. Im Forum von "www.mikrocontroller.net" wurde ich lediglich beleidigt, dass ich anscheinlich will, dass man mir das Referat fertig schreibt so, dass ich es nur noch vortragen muss.
Über den Microcontroller kann ich leider nicht mehr sagen als dass es ein 8051 ist und unser Lehrer uns sagte wir sollten nach "MCS51" suchen (was aber auch nicht geholfen hat.

Gruß,
microman

PicNick
16.12.2004, 16:13
Im Kern sind Flags einfach einzelne Bits, die deswegen "Flags" (=Flagge) heißen, weil die Verwendung nachrichtlichen Charakter hat (Befehl /Variation bzw. Information)
Das Zero-Flag (z.B) setzt die ALU (arithmetic-logical unit) dann, wenn alle 8 Bit im Akku =0 sind, warum auch immer.

mfg robert

Bomberman
17.12.2004, 08:01
Hallo microman,

habe auf die Schnelle nichts zusammenfassendes über Google herausgefunden, aber ich schau mal in meiner BIO-CPU im Cache nach, da hab ich bestimmt noch ein paar Begriffe nach denen Du vielleicht eher googeln kannst.
Also Markante M8051 Flags:
Timerüberläufe: tf0,tf1, tf2
RS232-Flags:ri, ti
Akkuüberlauf: c
Interruptflags: (da gibt es viele, aber ich bringe Sie immer durcheinander)
Ich vewrsuche Dir mal ein Datenblatt anzuhängen.
Ciao

Patrick

m.artmann
17.12.2004, 08:35
Hallo PicNick,


Das Zero-Flag (z.B) setzt die ALU (arithmetic-logical unit) dann, wenn alle 8 Bit im Akku =0 sind, warum auch immer.

Weil Du mit dem Zero Flag wunderbar Zähler, Schleifen oder Vergleichsoperationen ausführen kannst.

Ein primitives Beispiel

LD A,10 'Lade Register A (Akku) mit Wert 10

Schleife:
DEC A 'decrementiere Akku (Akku=Akku-1)
JZ Label ' Springe wenn Akku = 0 zu Label (Jump if Zero)
JMP Schleife 'Solange Akku noch nicht 0 in Schleife bleiben

Label: ' ab hier geht es weiter wenn Akku = 0

Das Programm bleibt dann so lange in der Schleife bis das Register A = 0 ist

Gruß
m.artmann