Archiv verlassen und diese Seite im Standarddesign anzeigen : FLAG
Hallo LEUTZ!
Habe in der assemblersprache viel gehört über flags! :-s Was ist dass eigentlich und wozu braucht man es??
MFG
Mike
Als Flag bezeichnet man ein bit welches beispielsweise gesetzt wird wenn ein bestimmtes Ereignis eintritt.
Wenn man z.b wissen möchte wann ein Byte komplett empfangen wurde gibt es dafür ein Bit (Flag) welches gesetzt wird wenn das Byte angekommen ist. Dann braucht man nur dieses Flag abzufragen. Und wenn es gesetzt ist, dann kann man das Byte auslesen.
War jetzt nur ein Beispiel. So gibt es in Controller jede Menge Flags die bei bestimmten Ereignissen gesetzt werden
flagtabelle müsste in den Datenblättern stehen.
oder: http://www.avr-asm-download.de/beginner_de.pdf
Kapier ich nicht ganz mit FLAG! warum nimmt man nicht einfach z.b: Vergleiche R16 mit R17. Wenn gleich nächsten Schritt übersrpingen!
Bitte um Rückantwort
MFG
Mike
moment, du vergleichst hier Register,
Der Flag wird von der Hardware z.B. automatisch gesetzt,
z.B. wenn die UART n Zeichen empfangen hat oder
der UART-Puffer leer ist.
Das macht der Kerl von selber.
Beispiel:
ich bastle mir ne Verbindung von µC zu µC per RS485.
Dann muss ich den Busbaustein vor jedem Senden in
Sendemodus schalten und nach dem Senden auf Empfang.
Woher weiß ich nun, das das Zeichen das ich an die UART
geschickt habe auch schon übertragen wurde?
Richtig, aus dem Flag das der Controller setzt wenn das der Fall ist.
Schalte ich den Busbaustein zu früh um gehen die gesendeten Daten ins
Nirvana, ergo schalte ich um, sobalt das Flag da ist, der µC kann derweil
was anderes machen.
Also dass heißt! Flags sind nur nützlich wenn mehrere uc kommunizieren oder?
MFG
Mike
Nein. Flags sind einzelne Bitwerte die vom Prozessor gesetzt werden um Eigenschaften von Berechnungen bzw. Ereignissen anzuzeigen.
Das kann bei der Kommunikation zw. 2 µC geschehen, aber auch bei einer Berechnung oder bei einem Interrupt ...
Z.B. das Negativ Flag zeigt an ob ein Wert <0 geworden ist bei einer Berechnung.
Weitere Beispiele: Zero-Flag, Carry-Flag ...
Interrupt-Flag -> Infos über Interrupts
Es gibt noch viele Beispiele. Schau mal ins Datenblatt irgendeines µC (z.B. AT Mega8) dort steht einiges über Flags.
@ceekay: Ich weiss das du genau das gleiche geschrieben hast :) Ich dachte nur das exodus es vieleicht in anderen Worten versteht ;)
Bitte zeigt mir ein beispiel!? BÜDDE
MFG
MIKE
http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf
Man kann sich selber einen Flag erstellen....
ein Register für Flags z.B
.def Flags = R 16
.equ taste = 0
in einem Timerinterrupt z.B. prüfen ob eine Taste gedrückt wurde und mit sbr Flags,1<<taste den Flag setzen (bit 0 vom Register Flags auf 1)
In der loop Schleife, braucht man nur hin und wieder den Bit mit sbrc oder sbrs prüfen,entsprechend abzweigen und anschließend mit
cbr Flags,1<<taste löschen.
Wie gesagt es gibt viele Beispiele.
Gruß Sebastian
Beispiel leerer Sendepuffer:
do
loop until Ucsra.txc=1 (prüfen auf leeren Sendepuffer)
Für was steht ".equ Taste = 0"????
Für was steht ".equ Taste = 0"????
.equ - Wertzuweisung, der Konstante Taste wird 0 zugewiesen, in dem Beispiel Bit Nummer 0
Gruß Sebastian
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.