Stap 5: Maskeren maakt het makkelijk
Hoe kunt u alleen de bit(s) die u wilt zonder de rest van de bit(s) in het register wijzigen? U wat heet een masker. Denk aan het als schilderij. Als u niet schilderen iets wilt, bedekken je met tape om het masker uit de verf. Maskeren bits werkt op een soortgelijke manier.
In plaats van de hele 8-bit nummer/byte schrijven en wijzigen van het hele register, kunt u logische bewerking en een speciaal nummer overschakelen van alleen de bit(s) die u wijzigen wilt.
Arduino is een web-pagina tutorial voor bits maskeren. http://www.Arduino.CC/en/tutorial/BitMask
De gemeenschappelijke operaties zijn en (&), of (|), links shift (<<), en rechts (>>). Ook handig zijn de niet/aanvulling (~), en de exclusieve of / XOR (^) exploitanten. Met deze operators kun je stukjes rond, spiegelen ze van 1 tot 0, combineren en/of aftrekken van hen. Aantal van deze op hetzelfde moment kunt u voor complexe bits wijzigingen.
Een typisch masker is een binair getal met 0s waar u niet wilt dat een verandering en 1s waar u een wijziging wilt. Een masker voor PB5 zou B00100000. Als we het masker met de waarde al in het register met de operator OR combineren, kunnen wij vervolgens op PB5 zonder het wijzigen van de status van de andere stukjes draaien.
Voorbeeldcode 3.
Wij zullen PBValue gebruiken als de variabele die in het bezit van de huidige inhoud van Port B.
de huidige waarde van PBValue = B01001100
PBValue = PBValue | B00100000; (resultaat is 01101100)
De operator OR kijkt elke bit. Als een of beide is een 1 dan is de combinatie is een 1. Als beide 0s zijn vervolgens is de combinatie 0. Met de operator OR we draaide op de bit die we wilden, en alles hetzelfde gebleven.
Poort B i/o | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 |
PBValue | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
PB5 masker | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
OR Resultaten | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |