Hur man använder datorn registrerar - lektion 1 - bitars grunderna, maskering, logik verksamhet (5 / 7 steg)
Steg 5: Maskering gör det lätt
Hur kan du ändra bara attributet du vill utan att ändra resten av attributet i registret? Du använder vad som kallas en mask. Tänk på det som målning. Om du inte vill måla något, täcker du det med tejp för att dölja det från färgen. Maskering bit fungerar på ett liknande sätt.
Istället för att skriva hela 8-bitars nummer/byte och ändra hela registret, använder du logiska operation och ett speciellt nummer för att byta bara den attributet som du vill ha ändrade.
Arduino har en webbsida handledning för lite maskering. http://www.Arduino.cc/en/tutorial/BitMask
Den gemensamma verksamheten och (&), eller (|), vänster SKIFT (<<), och höger Skift (>>). Också användbart är inte/komplement (~) och exklusivt eller / XOR (^) operatörer. Med dessa operatörer kan du flytta bitar runt, vända dem från 1 till 0, kombinera och/eller subtrahera dem. Du kan använda flera av dessa samtidigt för komplexa lite förändringar.
En typisk mask är ett binärt tal med 0s där du inte vill att en förändring och 1s där du vill ha en förändring. En mask för PB5 skulle vara B00100000. Om vi kombinerar masken med värdet redan i kassan med hjälp av operatorn OR, kan vi vända på PB5 utan att ändra status för de andra bitarna.
Exempel på kod 3.
Vi kommer att använda PBValue som den variabel som innehåller det aktuella innehållet i Port B.
det aktuella värdet av PBValue = B01001100
PBValue = PBValue | B00100000; (resultatet är 01101100)
Operatorn eller tittar på varje bit. Om en eller båda är en 1 då är kombinationen en 1. Om båda är 0s sedan är kombinationen 0. Använder operatorn OR vi vände på den lite som vi ville, och allt annat förblivit densamma.
Port B I/O | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 |
PBValue | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
Pb5 Mask | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
ELLER Resultat | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |