Hallo liebe Gemeinde. Ich bin im AVR Tutorial beim Kapitel Logik angelangt. Da in diesem Kapitel der Begriff Maske recht oft vor kommt, wollte ich fragen, was man unter dem Begriff Maske genau versteht?? Hier ein Auszug aus dem Kapitel: "Im Ergebnis tauchen an den Bitpositionen an denen in der Maske eine 1 war auf jeden Fall ebenfalls eine 1 auf. In den restlichen Bitpositionen hängt es vom ersten Argument ab, ob im Ergebnis eine 1 auftaucht oder nicht." Vielen Dank für die Antworten im Voraus. Gruß Max
Die Maske ist ein Bitmuster, z.B. 8 Bit. Wenn an einer oder mehreren Stellen (Bitpositionen) eine "1" steht, wird der Wert beachtet, bei einer "0" nicht. Eine Maske sagt also immer aus, welche Bitpositionen z.B für einen Vergleich relevant sind (1) und welche egal sind (0).
Nimm mal an, du möchtest Status des Pin0 am PortA auslesen. Der Pin kann 0 oder 1 sein. Auslesen kannst du aber nur den Status aller 8 Pins zusammen über das Register PINA. Wenn du also testest:
1 | if (PINA == 1) |
2 | // mach was
|
3 | [/c) |
4 | |
5 | dann wird die Bedingung nur wahr, wenn ausschlieslich Pin0 high ist. Sollten noch andere PIns high sein , ist das Ergebnis nicht 1. |
6 | |
7 | Möchtest du etwas in Abhängigkeit von Pin0 machen, wobei der Status der anderen Pins nicht beachtet werden soll, musst du alle anderen Pins ausmaskieren. Das geht mit einer Bitmaske: |
8 | |
9 | [c] if ((PINA & 0b00000001) == 1) |
10 | // mach was
|
Oliver
Hi >"Im Ergebnis tauchen an den Bitpositionen an denen in der Maske eine 1 >war auf jeden Fall ebenfalls eine 1 auf. In den restlichen Bitpositionen >hängt es vom ersten Argument ab, ob im Ergebnis eine 1 auftaucht oder >nicht." Nur mal so: Das ist eine ODER-Verknüpfung und kein UND. Argument Maske Ergebnis 0 0 0 0 1 1 1 0 1 1 1 1 MfG Spess
ich schrieb: > Eine Maske sagt also immer aus, welche Bitpositionen z.B für einen > Vergleich relevant sind (1) und welche egal sind (0). Wobei es je nach Operation auch genau anders rum sein kann. Eine Maske ist so ähnlich wie im täglichen Leben. Ein Stück Papier mit Löchern drinnen, die du zb auf einen Text legst. Dadurch 'siehst' du nur noch die Buchstaben, die unter den Löchern liegen. Alles andere ist ausgeblendet. Ob diese Löcher jetzt einem 0-Bit entsprechen oder einem 1-Bit, hängt von der Operation ab, die du mithilfe der Maske machst. Auch wie im täglichen Leben: du kannst die Maske benutzen, um nur bestimmte Buchstaben lesbar zu machen. Du kannst die Maske aber auch benutzen um die Buchstaben 'freizustellen', die du mit einem Radiergummi ausradieren willst oder mit einer Farbspraydose übersprühen willst. Erst die Kombination der Maske mit der durchgeführten Operation entscheidet was wirklich passiert. Aber die Maske sorgt auf jeden Fall dafür, dass es nur mit bestimmten Teilen vom ganzen passiert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.