Manipulatie van de microcontroller Register (2 / 6 stap)

Stap 2: Het maken van code korter de gemakkelijke manier...

Laten we beginnen met een eenvoudige schets controleert de status van een van de 4 knoppen en banden die waarde aan één van de 4 LEDs. Druk op een knop (pen), de bijbehorende LED(s) oplichten.

Ik heb ook pin-toewijzing voor de 5 verschillende planken die hier is afgebeeld, de chipKIT Max32, DP32, Uno32, Uc32 en CMOD platen en de Arduino UNO:


Nu, toen ik begon het schrijven van code, het was altijd de langste code die ik bedenken kon van omdat ik niet beter wist. Ik stel dat zou hebben leek het iets als dit:

 /* This a long, pin-by-pin version of mapping 4 switches to 4 LEDs*/ //pins for Uno32/uC32 : Max32 : DP32 : CMOD : UNO int led_1 = 26; // : 34 : 5 : 20 : 4 int led_2 = 27; // : 35 : 6 : 21 : 5 int led_3 = 28; // : 36 : 7 : 22 : 6 int led_4 = 29; // : 37 : 8 : 23 : 7 int btn_1 = 30; // : 30 : 0 : 35 : 8 int btn_2 = 31; // : 31 : 1 : 36 : 9 int btn_3 = 32; // : 32 : 2 : 37 : 10 int btn_4 = 33; // : 33 : 3 : 38 : 11 void setup() { pinMode(led_1, OUTPUT); pinMode(led_2, OUTPUT); pinMode(led_3, OUTPUT); pinMode(led_4, OUTPUT); pinMode(btn_1, INPUT); pinMode(btn_2, INPUT); pinMode(btn_3, INPUT); pinMode(btn_4, INPUT); } void loop() { if ((digitalRead(btn_1) == HIGH) && (digitalRead(btn_2) == LOW) && (digitalRead(btn_3) == LOW) && (digitalRead(btn_4) == LOW)) { digitalWrite(led_1, HIGH); digitalWrite(led_2, LOW); digitalWrite(led_3, LOW); digitalWrite(led_4, LOW); } else if ((digitalRead(btn_1) == LOW) && (digitalRead(btn_2) == HIGH) && (digitalRead(btn_3) == LOW) && (digitalRead(btn_4) == LOW)) { digitalWrite(led_1, LOW); digitalWrite(led_2, HIGH); digitalWrite(led_3, LOW); digitalWrite(led_4, LOW); } else if ((digitalRead(btn_1) == LOW) && (digitalRead(btn_2) == LOW) && (digitalRead(btn_3) == HIGH) && (digitalRead(btn_2) == LOW)) { digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); digitalWrite(led_3, HIGH); digitalWrite(led_4, LOW); } else if ((digitalRead(btn_1) == LOW) && (digitalRead(btn_2) == LOW) && (digitalRead(btn_3) == LOW) && (digitalRead(btn_4) == HIGH)) { digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); digitalWrite(led_3, LOW); digitalWrite(led_4, HIGH); } else { digitalWrite(led_1, LOW); digitalWrite(led_2, LOW); digitalWrite(led_3, LOW); digitalWrite(led_4, LOW); } } 

(U kunt dit met enkel een paar veranderingen in de pin-toewijzingen gebruiken. Kopieer en commentaar/uncomment zo nodig. Deze pinnen werden gekozen omdat het het gemakkelijker maken zal om de registers later bewerken. Meer code zullen toegevoegd worden later voor elk van deze borden.)

Boven naar beneden, deze schets is 73 lijnen (niet meegerekend opmerkingen), en met behulp van MPIDE vergt 6664 bytes van het geheugen voor de chipKIT Uno32 en 1402 bytes voor de Arduino UNO.

Nu, laten we eens kijken naar een gewijzigde versie, deze keer met behulp van enkele lussen voor() te doen van de repetitieve spullen, en sommige geneste digitalRead() en digitalWrite() -opdrachten pin-Staten toewijzen.

 /* This is a more concise version of mapping 4 switches to 4 LEDs*/ //pins for Uno32/uC32 int led[] = {26,27,28,29}; //Max32 : {34,35,36,37}; //DP32 : {5,6,7,8}; //CMOD : {20,21,22,23}; //UNO : {4,5,6,7}; int btn[] = {30,31,32,33}; //Max32 : {30,31,32,33}; //DP32 : {0,1,2,3}; //CMOD : {35,36,37,38}; //UNO : {8,9,10,11}; void setup() { for (int i = 0; i < 4; i++) { pinMode(led[i], OUTPUT); pinMode(btn[i], INPUT); } } void loop() { for (int i = 0; i < 4; i++) { digitalWrite(led[i], digitalRead(btn[i])); } } 

Deze sketch is aanzienlijk korter. In feite, is het minder dan een derde op 20 lijnen w/o opmerkingen. Het vergt wel een beetje minder ruimte in het geheugen (6324 bytes voor chipKIT, 1074 bytes voor Arduino), maar het enige echte voordeel is dat de schets minder lijnen neemt. De instructie set in het geheugen is ongeveer hetzelfde. De compiler heeft nog steeds zoeken en laden van de pinMode(), digitalRead() en digitalWrite() commando's uit de bibliotheek achtergrondbestanden. Deze zijn vooraf ingesteld in grootte, zodat als je ze zelfs een keer gebruiken de geconverteerde montage-instructies in de chip-geheugen moeten worden geladen.

Dus zelfs als we de code verkorten, het is duidelijk dat het niet veel ruimte op de chip kan besparen. Laten we dat te bevestigen.

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