Atmel opstarten 4: BLINKIE twee-Switches, Pull-Up weerstanden en bits Ops (3 / 11 stap)

Stap 3: Bitsgewijze bewerkingen

Poorten met vereisen gemengd ingangen en uitgangen, zoals in tabel 1, vaak maskeren operaties die bestaan uit een masker en een bitsgewijze bewerking [16]. Het maskeren wordt geselecteerd uit afzonderlijke bits of een subset van poort bits voor het testen. De bitsgewijze bewerkingen maken de maskerende operaties mogelijk. Op deze manier kunnen de ingangs- en uitgangssignaal bits van een IO-poort worden gescheiden en gemanipuleerd.

Overweeg een paar illustratieve voorbeelden waarmee met Blinky twee zal worden. Deze voorbeelden uitschrijven en manipuleren van de bits van een 8 bits variabele A gegeven door A = rstuvwxy waar de letters r, s, t,..., y zijn stukjes met de waarden 0 of 1. A = 10001000 betekent bijvoorbeeld dat r = 1 en v = 1 en de rest zijn nul. Echter, we zijn bezig met de algemene A en waarden niet hebt toegewezen aan r, s,..., y. In de C-achtige notatie kan men schrijven A = '0brstuvwxy' waar 0b vertelt dat de compiler het nummer is binair; Nochtans, werkt deze notatie niet in een programma.

1. bitsgewijze 'en' vertegenwoordigd door ampersand '&'

Overwegen de 8 bits variabele A = rstuvwxy. Stel dat we willen controleren van de waarde van bits #1 (niet beetje #0). Is x = 0 of is x = 1? Dus we masker definiëren = 00000010. Opmerking de waarde 1 in de bits #1-positie die overeenkomt met de positie van de bit in variabele A waarmee wij willen controleren. Het woord masker is bedoeld om te impliceren dat bepaalde stukjes uit overweging zal worden verwijderd en anderen bezwarende gemarkeerd. Bekijk nu het bit-voor-bit logische en operatie vertegenwoordigen door '&'. Overwegen

Test = A & masker.

Tabel 2 toont de bits van A, masker en het resultaat van een bit-voor-bit en aankondiging van de rechtse kolom van de tabel vertegenwoordigt bit #0, dat ook de minst significante is bits.

Tabel 2: Voorbeeld tonen van de bitgewijze en tussen twee 8 bit variabelen

Variabele A

r

s

t

u

v

w

x

y

Masker

0

0

0

0

0

0

1

0

Test = A & masker

0

0

0

0

0

0

x

0

De operator '&' is in wezen stukje-bij-beetje vermenigvuldiging met de volgende definities 1 & 1 = 1, 0 1 = 0, 1 0 = 0, 0 & 0 = 0, die kan worden gezien gelijkwaardig aan de Booleaanse Algebra of Aristoteliaanse logica met 1 = True en 0 = False. De eerste twee van de producten (specifiek, 1 = 1, 0, 1 & 1 = 0) bevat de redencode x & 1 = x in tabel 2. Dit is de eigenschap die we nodig hebben voor maskeren met de '&' sinds alle bits in de 'variabele' zal worden toegewezen tot nul behalve voor diegenen waar het masker is een 1. Zie referentie [16] voor meer informatie over bitsgewijze bewerkingen. We kunnen nu vragen of 'Test' gelijk aan nul is. Als Test = 0 dan is x moet nul zijn.

2. bitsgewijze OR vertegenwoordigd door de verticale streep "|"

Nogmaals, overwegen de variabele A = rstuvwxy waar zijn,..., y vertegenwoordigen stukjes met de waarden 0 of 1. Stel dat ditmaal willen wij ervoor zorgen dat bits hebben #0 en #4 de waarde 1 zonder wisseling ieder van naar de anderen in A. Dat wil zeggen we willen instellen van y = 1 en u = 1. Om dit te doen, kunt u overwegen een masker met alle nul bits met uitzondering van #0 en #4.

Mask2 = 00010001

De operatie maskeren in dit geval zullen de bit-voor-bit OR-bewerking weergegeven door de verticale lijn |. De OR heeft het volgende effect op bits: 1 | 1 = 1, 0 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0. De OR zijn vergelijkbaar met de OR kan worden gezien in de Aristoteliaanse logica systeem met 1 = True en 0 = False. Tabel 3 toont de OR-bewerking voor A | Mask2.

Tabel 3: Voorbeeld tonen de bitsgewijze OR tussen twee getallen van 8 bit

8 bits variabele A

r

s

t

u

v

w

x

y

Mask2

0

0

0

1

0

0

0

1

A | Mask2

r

s

t

1

v

w

x

1

De twee definities van de OR van 1 | 0 = 1, 0 | 0 = 0 (dat wil zeggen, op gelijkwaardige wijze x | 0 = x) laten zien dat deze masker bits in tabel 3 die nul Wijzig niet de bijbehorende bits in de variabele (Zie bits r-t, v-x) bij de berekening van Variable| Mask2 in de onderste rij. Maar de bitsgewijze OR zeker produceert een 1 in de resultaat-bit waar het masker een 1 zoals voor u is en y in de tabel.

Eindelijk dan, als we het resultaat van toewijzen ' A | Mask2' terug naar een (met behulp van de C/C++ toewijzingsoperator voor '='), oftewel A = A | Mask2, dan kunnen we komen tot het gewenste resultaat van instelling bits 0 en 4 de waarde één.

3. bitsgewijze ontkenning vertegenwoordigen door Twiddle ~

Nogmaals, overwegen de variabele A = rstuvwxy waar zijn,..., y vertegenwoordigen stukjes met de waarden 0 of 1. Stel dat ditmaal willen wij ervoor zorgen dat bits hebben #0 en #4 de waarde 0 zonder wisseling ieder van naar de anderen in A. Dat wil zeggen we willen instellen van y = 0 en u = 0. Om dit te doen, kunt u overwegen een masker met alle nul bits met uitzondering van #0 en #4.

Mask3 = 00010001

die gunstig gebeurt hetzelfde als Mask2 in het vorige voorbeeld. Misschien lijkt het gemakkelijkste om te kijken naar tabel 4 om te zien wat er moet gebeuren.

Tabel 4: Voorbeeld tonen van de bitgewijze en tussen twee getallen van 8 bit

8 bits variabele

r

s

t

u

v

w

x

y

Mask3

0

0

0

1

0

0

0

1

~ Mask3

1

1

1

0

1

1

1

0

Variabele & ~ Mask3

r

s

t

0

v

w

x

0

We weten uit de vorige voorbeelden die OR kan worden gebruikt om te veranderen een beetje op een 1 en die en kan worden gebruikt om te veranderen een beetje op een nul. Dus het lijkt erop dat we de AND. moeten Zoals blijkt uit tabel 4, heeft Mask3 een 1 op deze locaties heeft het resultaat een 0. Als u wilt combineren de Mask3 met de en, we hebben een hersenen storm en beseffen dat we gewoon moeten spiegelen van de bits in Mask3 en past u vervolgens de AND.

De logische niet of ontkenning heeft de volgende definitie ~ 0 = 1, ~ 1 = 0. Dus nu de bit posities in ~ Mask3 (zie tabel 4) met een 0 zijn de posities van de variabele A die moet worden ingesteld op nul. Gebruik van de resultaten voor het eerste voorbeeld en het feit dat y & 0 = 0 (enz) komen we bij de onderste regel van tabel 4. Als we het resultaat terug in variabele A volgens opslaan

A = A & ~ Mask3

vervolgens hebben we afgesloten onze taak van instelling bit #0 en #4 tot nul in het originele nummer. Hier zijn met behulp van de '=' als een C/C++-toewijzing.

Gerelateerde Artikelen

Atmel opstarten 5: Levenslijn

Atmel opstarten 5: Levenslijn

M. A. Parker c2015De levenslijn is een eenvoudige schakeling op basis van de Atmel ATTiny2313A microcontroller eenheid (MCU) die functioneert als een plaatsvervanger klokbron voor een doel MCU uitgevallen gesmolten door klok ten onrechte instellen ze
Atmel opstarten 1: Atmel Studio en programmeur

Atmel opstarten 1: Atmel Studio en programmeur

M. A. Parker c2015Installeren Atmel Studio (AS) en een programmeur belichamen de eerste stappen [0] op het pad aan het gebruik van een afzonderlijke eenheid voor Atmel AVR Microcontroller MCU [1] in tegenstelling tot de MCU-on-a-board zoals Arduino [
Atmel opstarten 2: Microcontroller-schakelingen en zekeringen

Atmel opstarten 2: Microcontroller-schakelingen en zekeringen

M. A. Parker c2015Circuits en zekeringen construeert een eenvoudige maar belangrijke circuit op de experimentator breadboard die zal worden gebruikt als het fundamentele platform voor vele microcontroller projecten en voor het instellen van de parame
Atmel opstarten 3: Binky een-poort, PIN, DDR en LED

Atmel opstarten 3: Binky een-poort, PIN, DDR en LED

M. A. Parker c2015Blinky, de knipperende LED, laat zien hoe met de taal C/C++ in Atmel Studio (AS) om te controleren de Atmel MCU poorten voor input en output (dat wil zeggen, IO) en het 'geheim' leven van de Atmel poort, PIN en DDR registers blijkt.
Draadloze Wii Nunchuck gecontroleerd Arduino

Draadloze Wii Nunchuck gecontroleerd Arduino

Gebruik een volledig ongewijzigde draadloze Wii Nunchuck als een controlesysteem voor elke Arduino gebaseerd project. Geen toegevoegde radio zender/ontvanger paren enz.Dit instructable aanvaardt enige ervaring met de Arduino microcontroller.De radio-
De Fibonacci-klok

De Fibonacci-klok

UPDATE: dit project heeft met succes gefinancierd op Kickstarter en is nu beschikbaar voor verkoop op http://Store.basbrun.com Bedankt aan al degenen die mijn campagne gesteund!Presenteer ik u de Fibonacci-klok, een klok voor nerds met stijl. Mooie e
MINI Si7021 temperatuur en luchtvochtigheid Sensor

MINI Si7021 temperatuur en luchtvochtigheid Sensor

Synopsis: ± 0,3% nauwkeurigheid (temp en vochtigheid) is de Mini-Si7021 een zeer nauwkeurige sensor voor accumuleren gegevens van temperatuur en vochtigheid. De I2C busarchitectuur biedt snelle data-acquisitie, foutdetectie en ondersteuning voor cont
Lezing Switches met ATtiny2313

Lezing Switches met ATtiny2313

zijn er verschillende Instructables omgaan met uitgangen van de ATtiny2313 en soortgelijke AVR apparaten. Bijvoorbeeld,. Bezig met de nieuwste versie van de echte Elliot, waaruit hoe de controle van de stappenmotoren blijkt, vond ik dat het zou echt
Eind Stop / Switch problemen beperken

Eind Stop / Switch problemen beperken

Grenzen schakelaars of 'einde stopt' kan zoals ze zijn genoemd naar de 3D printen Gemeenschap worden lastig voor Hobby CNC en 3D print opstellingen. Vele forums discussie hebben over hoe om te stoppen met de valse triggers en allermeest naar het schi
Arduino gecontroleerd SIP & PUFF Switch

Arduino gecontroleerd SIP & PUFF Switch

The Arduino serie van micro-controllers opent een enorme wereld van mogelijkheden voor beginnende programmeurs en hobbyisten! Met vrij beschikbare ontwikkelingssystemen tutorials en een uitgebreid scala aan bibliotheekfuncties en monster schetsen, ka
R/C Controlled Switch voor Drones

R/C Controlled Switch voor Drones

Hoewel er veel goede circuits beschikbaar op het internet voor soortgelijke projecten zijn, had ik een specifiek probleem op te lossen. Allermeest naar de circuits beschikbaar schakelt hun uitgangen op mid stick positie (50%). Mijn alle drones gebrui
Wat zit er in een pull snoer schakelaar

Wat zit er in een pull snoer schakelaar

pull snaar schakelt zoals deze zijn gemeenschappelijk in badkamers in het Verenigd Koninkrijk zij voorkomen natte vingers krijgen dicht bij netspanningen. In mijn badkamer begon te spelen dus ik het nooit te missen een opertunity nam ik het appart om
Hoe maak je een pull schakelen.

Hoe maak je een pull schakelen.

Een tijdje geleden kreeg ik een pooltafel in mijn schuur, en mij wilden voor zitten kundig voor zien van alle ballen, dus ik zette de verlichting erboven. Ik wilde een pull-schakelaar op de lichten, maar toen ik keek naar het kopen van een, zij waren
Vakantiewoningen Toy Switch aanpassing

Vakantiewoningen Toy Switch aanpassing

Voor veel kinderen met een lichamelijke handicap is spelen met off-the-shelf speelgoed niet mogelijk. Afhankelijk van hun unieke vaardigheden, kan het voorkomen dat speelgoed niet meer toegankelijk.Als een kind hun voet, hoofd, arm, mond of elk ander