MicroController Register Manipulation (4 / 6 steg)

Steg 4: Arduino Microcontrollers med ATMEL marker

Som tidigare nämnts, är bakgrunden församlingen språk används för att programmera PIC32 och ATMEL marker olika. Om du sedan hoppa till slutsatsen att registrera namnen är annorlunda, du skulle vara rätt.

Jag kommer inte gå så djupt in i den logik förklaringen här, men det finns några viktiga skillnader som du måste hålla i minnet. Gå tillbaka till föregående steg för ingående förklaring av logiken.

Först riktade registret som anger I/O tillstånd av klämma fast kallas DDRx, där x designerar registret (pinMode() anger DDRx). Om du vill ange PIN-koden som en utgång, måste du skriva en 1 till motsvarande bit skriftligen DDRx. 0 till DDRx kommer att ange PIN-koden som indata. Nästa är PORTx registret, som avgör om ett stift in som en utgång är hög (1) eller låg (0) (digitalWrite() anger PORTx). Sist är PINx, där du kan läsa data presentera på pin det den är inställd som en ingång (digitalRead() läser PINx). En '1' i PINx registret anger att det finns en signal på det klämmer fast.

Titta på Arduino UNO (se PDF nedan, källa här), beslöt jag att använda 4 lysdioder på stift 4→7 som mappas till registrera D, bitar 4→7. Vi satt register D4→7 som utgångar av ORing med 0b1111 0000, att dessa fyra bitar som 1. Jag satte 4 växlar på stift 8→11, som kartan till registrera B, bitar 0→3. Vi satt register B0→3 som ingångar av ANDing med 0b1111 0000, att dessa fyra bitar som 0. Följande kod går i våra setup() uttalande:

DDRD = DDRD | 0xF0; 0b1111 0000

DDRB = DDRB & 0xF0; 0b1111 0000

De register bitarna igen ser, vi att växlarna är tilldelade till bitar 0→3 och ljusdioderna till bitar 4→7. Om vi bara tilldela tillståndet i PINB direkt till PORTD, vi kommer att sätta PORTD bitar 0→3, inte bitar 4 -> 7 och lysdioderna kommer inte att lysa upp. Vi fixa detta med en bitvis SKIFT till vänster, fyra områdena. Koden för våra loop() uttalande ser ut så här:

PORTD = PINB << 4.

Här är hela koden:

Arduino registrera manipulation med 4 växlar
på stift 8-11, 4 lysdioder och motstånd på stift 4-7

void setup()
{
DDRD = DDRD | 0xF0; Digital stift 4-7 karta för att registrera D,
BITS 4-7. 0xF0 = 0b1111 0000 var
en 1 definierar stiftet som utdata. Med hjälp av
Bitvis eller (|) tillåter de återstående
BITS vara opåverkad och undvika
oönskade drift och enda uppsättning
de 4 stift som vi vill. Du kan skriva
DDRD = 0xnn, (där n är ett hexadecimalt tal)
men det finns inget sätt att veta hur
de andra bitarna kommer att påverkas.
Det kanske inte gör något, det kan inte.

DDRB = DDRB & 0xF0; Digital stift 8-11 karta för att registrera B0-3.
Med 0xF0 igen, men nu 0 är en ingång.
Vi använder bitvis AND (och) att lämna
de återstående bitarna i registret ensam.
}
void loop()
{
PORTD = PINB << 4. skriva status av växlar på
PINB att lamporna på PORTD, men lite
skiftat vänster av 4 bitar. Så RB3-0 karta
RD7-4.
}

Igen 10 rader kod, och endast 3 göra något. Det var allt.

Sammanställningen av detta med MPIDE tar bara 470 byte minne, en minskning av 604 byte från den kortare versionen i steg 2 som kostar 1074 byte och använde pinMode(), digitalWrite() och digitalRead().

Se Steg
Relaterade Ämnen

Seg... pinne.

Gör det själv själv-balansera... saker... har funnits nästan lika länge som kommersiella självbalanserande saker. Uppenbarligen de hemlagade versionerna är inte som släta, tillförlitlig, eller felsäkra som äkta, men de är fortfarande ganska fängsland...

Atmel start 2: Microcontroller kretsar och säkringar

M. A. Parker c2015Kretsar och säkringar konstruerar en enkel men viktig krets på en experimenter's skärbräda som ska användas som grundläggande plattform för många microcontroller projekt och för att ange parametrarna mikrokontroller (dvs säkringar)....

BITS & Byte magic manipulation

Hej duSå att du påbörjat resan av programmering och känner lust att lära sig magi bits och Bytes. Väl se längre vilket jag hoppas att upplysa er i fungerar och, eller inte och flytta.Om du har arbetat med Arduino som du kanske vet lite om detta men j...

Multiplexering 7 Segment visar med Arduino och SKIFT register

i detta instructable, jag kommer att lära grunderna i multiplexing 7 segmenterar skärmar med en Arduino och ett par av SKIFT register. Detta projekt är väl lämpad för att Visa numeriska information eller om du vill styra en massa lysdioder. För nybör...

Ledde matrisen projektet använder SKIFT register och pic16f628a mikro

detta är aproject att flytta orden på led matrisdisplayVi använder1-pic16f628a som mikrokontroller: billiga, programminnet 2k, har interna oscillatror, två portar A, B och en massa saker.2-ledde matrisen 8 * 8 rader gemensam anod och kolumner gemensa...

Hur man gränssnitt 16 X 2 LCD med AVR Microcontroller

här är Kopplingsschemat hos gränssnitt 16 X 2 LCD till AVR Microcontroller. I denna krets, att kristalloscillator ge klockan till mikrokontroller. Kondensatorerna ansluten till crystal ska fungera som filter och hjälpa kristallen att genljuda och svä...

Att få mer I/O pins på ATTiny med Skift register

Om du tidigare arbetat (eller arbetar) med små 8-bitars mikrokontroller, som ATTiny eller PIC12, du har förmodligen inträffat ett grundläggande problem för att inte ha tillräckligt GPIO pins för dina behov eller projektets krav.Uppgradera till en stö...

LEDDE matrisen med hjälp av SKIFT register

detta instructable är tänkt att vara en mer fullständig förklaring än andra tillgängliga online. Detta kommer bland annat ge mer hårdvara förklaring än finns i LED markeringsramen instructable av led555.MålDetta instructable presenterar begreppen med...

Hela världen microcontroller länk för under $20

kontrollera termostaten hem från jobbet. Slå på en sprinkler från någonstans i världen genom att snärta en switch. Detta Instructable visar hur du länkar två eller flera $4 mikrokontroller med ryggraden i internet och några enkla VB.Net-kod.Detta byg...

Arduino powered 7 seg LED-skärm med hjälp av SKIFT register - jag gjorde det på TechShop

sju segmenterade skärmar är bra. De är ganska enkla, inte ta mycket ström och har en stor flexibilitet när det gäller att Visa nummer. Men bortsett från 14 stift bara för att köra det är sådan smärta. Om bara det fanns ett sätt att använda dem utan a...

4 x 4 x 4 LED cube uppgradering med Skift register (74hc595)

projektet började med en påse med lysdioder som jag hade tagit bort från ficklampor, konvertera till UV ficklampor. Jag visste att jag skulle hitta något roligt för att använda dem med, men det var månader innan jag listade ut vad med dem att göra. N...

3D tryckt Microcontroller Dice Roller

Detta är ett bara-på-skoj projekt jag gjorde i Digilent MakerSpace. Oftast när jag spelar brädspel använder jag en tärning-rullande smartphone app eftersom tärningarna är så lätt att förlora. Jag tänkte jag skulle prova att göra min egen Hårdvaruvers...

5 skäl varför du är inte kompetent att programmet A Microcontroller

när börjar med microcontrollers du sannolikt att möta några problem i programmering din microcontroller och det finns inget mer frustrerande än slösa timmar att hitta problemet och stilla inte kunna. Jag har arbetat med olika typer av mikrokontroller...

Aleph 1,0 - Internet kontrollerad Mikroskop Roboten Manipulator

Aleph 1.0 är en avlägsen kontrollerade robotic manipulator för biologiska eller kemiska sonder. Idén kom från det faktum att forskare behöver ett säkert sätt att manipulera och analysera bioriskavfall eller giftiga ämnen eller att helt enkelt Observe...

Arduino Microcontroller och dess olika tillämpningar

Arduino microcontroller och dess olika tillämpningarSteg 1:...

Mångsidiga mobila Manipulator Mk 1

Kort beskrivning:Bygga din egen DIY giant robot som spelar piano, ritar bilder, förbereder mat, vatten växter, bedriver ljussabel dueller och mer. Den mångsidiga mobil Manipulator är en avancerad öppen källkod mänskliga-size mobil robotik plattform f...

Hur du ändrar fuse bitar av AVR Atmega328p - 8 bitars microcontroller med Arduino

I detta instructable du lära dig att ändra fuse bitar av Atmega328p mikrokontroller. Jag använder Arduino mega som programmerare till program Atmega328P-PU på bakbord. Den levereras med en standard 1MHz inre kalibrerad oscillator frekvens. Jag vill ä...

Använda allmänt tillgängliga program för att manipulera bilder

professionella grafiska designers använder dyra program som Photoshop och Illustrator för att arbeta med bildfiler. Det finns fria alternativ som Gimp och Inkscape, de är underbara, men det finns fortfarande en brant inlärningskurva och de är verklig...

Hur man använder en 74HC595 SKIFT Register med en AVR ATtiny13

om du har spelat med mikrokontroller och elektronik så du har förmodligen sett LED dot matrix-displayer och andra projekt som använder SKIFT register som 7-segment visar och mer. Detta instructable går över en snabb intro till 74HC595 8-bitars serail...