Manipulatie van de microcontroller Register (4 / 6 stap)

Stap 4: Arduino Microcontrollers met ATMEL chips

Zoals eerder vermeld, is de achtergrond vergadering talen gebruikt voor het programmeren van de PIC32 en ATMEL chips zijn verschillend. Als u vervolgens tot de conclusie springen dat het register namen verschillend zijn, je zou gelijk.

Ik zal niet gaan zoals diep in de uitleg van de logica hier, maar er zijn enkele belangrijke verschillen die je in gedachten moet houden. Terugverwijzen naar de vorige stap voor de grondige uitleg van de logica.

Ten eerste, het directionele register waarin de staat van de I/O van de pin heet DDRx, waar x het register aanwijst (pinMode() wordt ingesteld DDRx). Om de pincode instellen als uitgang, moet u een 1 schrijven naar de overeenkomende bit schriftelijk DDRx. een 0 tot DDRx zal de pincode instellen als input. Daarna is het PORTx-register, dat bepaalt of een PIN-code ingesteld als een vermogen hoog (1) en laag (0 is) (digitalWrite() wordt ingesteld PORTx). Laatst is PINx, waarmee u lezen gegevens presenteren op de pin is ingesteld als een input (digitalRead() leest PINx). Een '1' in het register van de PINx geeft aan dat er een signaal aanwezig is op dat pin.

Kijkend naar de Arduino UNO (Zie PDF hieronder, bron hier), heb ik besloten om het gebruik van 4 LEDs op pinnen 4→7 die worden toegewezen aan D, stukjes 4→7 registreren. Wij registreren D4→7 instellen als uitgangen door ORing met 0b1111 0000, die vier stukjes instellen als 1's. Ik heb 4 schakelaars op pinnen 8→11, die zijn toegewezen aan het registreren van B, bits 0→3. Wij registreren B0→3 instellen als ingangen door ANDing met 0b1111 0000, die vier stukjes instellen als 0's. De volgende code gaat in onze setup() verklaring:

DDRD = DDRD | 0xF0; 0b1111 0000

DDRB = DDRB & 0xF0; 0b1111 0000

Kijkend naar de register bits opnieuw, zien we dat de schakelopties worden toegewezen aan stukjes 0→3 en de LED's naar bits 4→7. Als we alleen de status van PINB direct aan PORTD toewijst, wij zal opzetten PORTD bits 0→3, niet 4 bits -> 7 en de LEDs niet zal oplichten. Wij bevestigen dit met een bitsgewijs verplaatsen naar links door vier ruimten. De code voor onze() van de lusinstructieziet er zo uit:

PORTD = PINB << 4;

Hier is de volledige code:

 // Arduino register manipulation with 4 switches // on pins 8-11, 4 LEDs and resistors on pins 4-7 void setup() { DDRD = DDRD | 0xF0; // digital pins 4-7 map to register D, // bits 4-7. 0xF0 = 0b1111 0000 where // a 1 defines the pin as output. Using // the bitwise OR (|) allows the remaining // bits to be unaffected and avoid // unwanted operation and only set // the 4 pins we want. You could write // DDRD = 0xnn, (where n is any hex digit) // but there is no way of knowing how // the other bits will be affected. // It may do nothing, it may not. DDRB = DDRB & 0xF0; // digital pins 8-11 map to register B0-3. // Using 0xF0 again, but now 0 is an input. // We use bitwise AND (&) to leave // the remaining bits in the register alone. } void loop() { PORTD = PINB << 4; // write the status of the switches on // PINB to the LEDs on PORTD, but bit // shifted left by 4 bits. So RB3-0 map // to RD7-4. } 

Weer 10 lijnen van code, en slechts 3 doen iets. Thats it.

Dit compileren met MPIDE neemt alleen 470 bytes van het geheugen, een vermindering van de 604 bytes van de kortere versie in stap 2, die kosten 1074 bytes en pinMode(), digitalWrite() en digitalRead()gebruikt.

Gerelateerde Artikelen

Begin Microcontrollers deel 11: Timers, tellers, en de klok van de Microcontroller

Begin Microcontrollers deel 11: Timers, tellers, en de klok van de Microcontroller

Timers en tellers zijn zo integraal dat ziet u de talrijke voorbeelden hen te betrekken in deze serie. Zoals de naam al zegt, worden timers gebruikt voor de tijd en tellen. Counting en timing kunt u sommige zeer nette dingen zoals controlerende LED b
Exploitatie van een Shift Register

Exploitatie van een Shift Register

In afwachting voor de 8 x 8 x 8 LED kubus Instructable (ik heb een 3 x 3 x 3 versie hier), 'm I gonna verklaren een belangrijk onderdeel van de exploitatie van de kubus die ik voel me niet zo mooi als het zou kunnen worden (maar aarzel niet om mij te
Zuivere sinus omvormer met behulp van pic-microcontroller

Zuivere sinus omvormer met behulp van pic-microcontroller

Zuivere sinus omvormer met behulp van pic microcontroller is gemaakt in dit project. Ferrietkern of chopper gebaseerd zuivere sinus omvormer is ontworpen in dit project. Er zijn twee voornaamste onderdelen van dit project1.push pull topolgy met behul
GSM gebaseerd veelzijdige Robotic voertuig met behulp van PIC Microcontroller

GSM gebaseerd veelzijdige Robotic voertuig met behulp van PIC Microcontroller

dit project is ontworpen als een robot voertuig dat kan worden gecontroleerd door een mobiele telefoons te ontwikkelen. DTMF opdrachten vanaf een telefoon verzenden naar een andere mobiele telefoon die is gemonteerd op de robotic voertuig. Deze opdra
De wereld aan de kant van de Microcontroller

De wereld aan de kant van de Microcontroller

Toekomstige elektronica heeft een breed scala van microcontrollers. Het is ontworpen om voor ingebedde toepassingen worden gebruikt. Microcontrollers (soms afgekort μc, uc of MCU ) zijn toegewijd een kleine en goedkope computers in de elektronica die
Hoe te rijden een heleboel LEDs uit een paar pennen van de microcontroller.

Hoe te rijden een heleboel LEDs uit een paar pennen van de microcontroller.

Met behulp van het feit dat vele pennen van de microcontroller drie staten hebben (+ V, GND, of"hoge impedence", je kunt rijden N*(N-1) LEDs van N pins. Dus het weinig 8PIN microcontroller zoals een PIC12Fxxx of een ATtiny11 kan rijden 20 LEDs o
Draadloze Radio frequentie Module met behulp van PIC Microcontroller.

Draadloze Radio frequentie Module met behulp van PIC Microcontroller.

Het is een Microcontroller gebaseerde elektronica DIY Project. Met de naam draadloze RF-Module met behulp van PIC Microcontroller. De RF-module is een kleine elektronische schakeling gebruikt voor het doorsturen, ontvangen of transceive radiogolven o
Sinusgolf frequentie meting met behulp van pic-microcontroller

Sinusgolf frequentie meting met behulp van pic-microcontroller

Sinusgolf frequentie meting project is ontworpen met behulp van pic microcontroller. Dit project meet de frequentie van de sinus. Nul kruising detectie-techniek wordt gebruikt voor het meten van de frequentie van sinus. Nul kruising detectie met behu
Hoe gemakkelijk het testen van een Microcontroller met een Logic Analyzer

Hoe gemakkelijk het testen van een Microcontroller met een Logic Analyzer

Enkele van mijn projecten in het verleden hebben problemen als gevolg van een slechte digitale pin. Als dit ooit aan u gebeurde heeft, dan weet je hoe frustrerend het kan zijn. De meeste mensen de eerste reactie is dat er iets mis is met de code. Als
RegisterWrite - verlenging van de uitgangen van Arduino/Microcontroller met shift registers

RegisterWrite - verlenging van de uitgangen van Arduino/Microcontroller met shift registers

Register schrijven is een voorbeeld van het programma uit te breiden van de uitgangen van de Arduino met behulp van een shift register.Ik schreef een eenvoudige schets die 3 uitgangen van de Arduino zal gebruiken om te rijden het shift register.Ik sc
Het gebruik van een Shift Register - Arduino tutorial Arduino Tutorial

Het gebruik van een Shift Register - Arduino tutorial Arduino Tutorial

In deze tutorial leert u hoe u een shift register (of serieel naar paralled controller). Het shift register zal geven je Arduino een extra 8 digitale uitgangen, met behulp van slechts 3 pinnen op je boardIn deze tutorial zal je de praktijk door bestu
Lange prestatiemetingsprogramma's met behulp van de Microcontroller

Lange prestatiemetingsprogramma's met behulp van de Microcontroller

Lang prestatiemetingsprogramma's kunt worden maken met behulp van de microcontroller. Hier maak ik een apparaat dat afstand tussen twee punten meten kan. Het concept van de raaklijn meting gebruikt. om de waarde van de hoek die gebruik ik potentiomet
Elementaire Robotics deel 2 - het toevoegen van de Microcontroller en de Motor Driver

Elementaire Robotics deel 2 - het toevoegen van de Microcontroller en de Motor Driver

Deze week onze studenten op lange Ridge School (http://www.longridgeschool.org) aangesloten de elektronica op de robot chassis dat werd voltooid in deel 1:.We vonden dat we vervangen de afstandhouders op de robot moesten omdat ze te kort waren voor h
Een zeer kosteneffectief ROBOT met behulp van de microcontroller 89c 51.

Een zeer kosteneffectief ROBOT met behulp van de microcontroller 89c 51.

Hey kerels dit is mijn eerste hardnekkig, dus neem Ga gemakkelijk op mij...Wat ik heb gebouwd in dit hardnekkige is een Robot. Ik noem het een spion Robot (cos als gebouwd klein en als een camera is toegevoegd het als een spion fungeren zal). Elke ma