AVR Assembler Tutorial 1 (4 / 5 stap)

Stap 4: Hello.asm-per-regel

Tot slot van deze inleidende tutorial gaan we via de hello.asm programma-per-regel om te zien hoe het werkt.

Alles na een puntkomma wordt genegeerd door de assembler en vandaar deze eerste twee lijnen zijn gewoon "reacties" uit te leggen wat het programma doet.

Deze regel vertelt de assembler te nemen van het m328Pdef.inc-bestand dat u hebt gedownload. U kunt premieaffaires te ontvangen zulks in een directory van soortgelijke bestanden opnemen en verander dan de bovenstaande regel daarnaar verwijzen er.

LDI staat voor "load onmiddellijk" en vertelt de assembler te nemen een werkende register, r16 in dit geval, en in dit geval een binair getal in het, 0b00100000 laden. De 0b vooraan staat dat ons nummer in binaire. Als we wilden kunnen hebben wij besloten een andere basis, zoals hexadecimaal. In dat geval zou dat ons nummer 0x20 oftewel hexadecimaal voor 0b00100000 zijn geweest. Of we kunnen hebben gebruikt 32 die grondtal 10 decimaal voor hetzelfde nummer.

Oefening 1: Wijzig het getal in de bovenstaande regel naar hexadecimaal en vervolgens naar decimaal in uw code en controleer of het nog werkt in elk geval.

Met behulp van binaire eenvoudigste hoewel vanwege de manier poorten en Registers werken. Zullen we de poorten en registers van de atmega328p in meer detail in de toekomst tutorials maar voor nu zal ik enkel vermelden dat wij r16 als onze "werken registreren"-zin dat we zijn gewoon gaan om het te gebruiken gebruiken als een variabele die wij opslaan nummers. Een "register" is een set van 8 bits. Wat betekent 8 plekken die kunnen 0 of 1 ('uit' of 'aan'). Wanneer we het binaire getal 0b00100000 laadt in het register met behulp van de bovenstaande regel hebben we gewoon dat nummer opgeslagen in het register r16.

Deze regel vertelt de compiler om te kopiëren van de inhoud van het register r16 in het DDRB-register. DDRB staat voor "Data richting registreren B" en het stelt de "pinnen" op PortB. Op de kaart van de pinout voor de 328p die u kunt zien zijn er 8 pinnen label PB0, PB1,..., PB7. Deze pinnen vertegenwoordigen de "bits" van "PortB", en wanneer we het binaire getal 00100000 in het register van de DDRB dat wij zeggen laadt dat wij PB0, PB1, PB2, PB3, PB4, PB6 en PB7 instellen als ingang pinnen willen omdat ze 0 hebben is in hen, en PB5 is ingesteld als een OUTPUT-pin omdat wij een 1 in die plek.

Nu dat wij hebben bevestigd de richtingen van de pinnen kunnen we nu de spanningen ingesteld op hen. De bovenstaande regel kopieert het dezelfde binaire getal van onze opslag registreren r16 naar PortB. Hiermee worden alle van de pinnen op 0 volt behalve pin PB5 op hoog die 5 volt.

Oefening 2: Een digitale multimeter, plug de zwarte leiding nemen in grond (GND) en vervolgens getest elk van de pinnen PB0 via PB7 met de leiding van red. Zijn de spanningen op elk van de pennen precies die overeenkomen met het zetten van 0b00100000 in PortB? Als er die niet zijn, waarom doen denk je dat dat is? (Zie de kaart pin)

Ten slotte, de eerste regel hierboven is een "label" waarmee de labels van een plek in de code. In dit geval etikettering die plek als "Start". De tweede regel zegt "relatieve sprong naar het label Start." Het netto resultaat is dat de computer wordt geplaatst in een oneindige lus die gewoon terug naar Start fietsen houdt. We hebben eCall nodig omdat het programma alleen beëindigen, of vallen van een klif mag niet zo zijn, moet het programma gewoon blijven draaien om het licht te blijven branden.

Oefening 3: Verwijder de bovenstaande twee regels van uw code zodat het programma van een klif valt. Wat gebeurt er? Je moet iets ziet dat lijkt op het traditionele "blink" programma door Arduino gebruikt als hun 'hello world!'. Waarom denk je dat het werkt deze manier? (Denk over wat er moet gebeuren wanneer het programma van een klif valt...)

Gerelateerde Artikelen

AVR Assembler Tutorial 2

AVR Assembler Tutorial 2

Deze tutorial is een voortzetting van het "AVR Assembler Tutorial 1"Als je niet hebt doorlopen Tutorial 1 moet je nu stoppen en dat men eerst doen.In deze tutorial zullen we onze studie van assembly language programmering van de atmega328p in de
AVR Assembler Tutorial 11

AVR Assembler Tutorial 11

Welkom bij Tutorial 11!In deze korte tutorial, zijn we eindelijk het eerste deel van onze laatste project bouwen.Het eerste wat dat u moet doen is gaat u naar de allerlaatste stap van deze tutorial en Bekijk de video. Dan kom hier terug. [onderbreken
AVR Assembler Tutorial 6

AVR Assembler Tutorial 6

Welkom bij Tutorial 6!Today's tutorial zullen kort waar zullen we het ontwikkelen van een eenvoudige methode om gegevens tussen een atmega328p en een andere met twee poorten verbinden hen te delen. Wij zullen vervolgens nemen de dobbelstenen rol van
AVR Assembler Tutorial 8

AVR Assembler Tutorial 8

Welkom bij Tutorial 8!In deze korte tutorial gaan we een beetje een afleiding van de invoering van nieuwe aspecten van assembly language programmering te laten zien hoe onze prototyping componenten verplaatsen naar een aparte "gedrukt" printplaa
AVR Assembler Tutorial 9

AVR Assembler Tutorial 9

Welkom bij Tutorial 9.Vandaag zullen wij tonen hoe de controle van zowel een 7-segment display en een 4-cijferige weergave met behulp van onze ATmega328P en AVR assembler code. In de loop doen die we nemen van omleidingen moeten zal op how to use van
AVR Assembler Tutorial 7

AVR Assembler Tutorial 7

Welkom bij Tutorial 7!Vandaag gaan we naar eerste show hoe opruimen van een toetsenbord, en vervolgens laten zien hoe de analoge input poorten gebruiken om te communiceren met het toetsenblok.We zullen dit doen met behulp van interrupts en een enkele
AVR Assembler Tutorial 10

AVR Assembler Tutorial 10

Welkom bij Tutorial 10!Sorry dat het zo lang duurde om deze volgende aflevering eruit maar dit is een behoorlijk hectische tijd van het jaar. In ieder geval, is hier het!We hebben een lange weg afgelegd en u bent waarschijnlijk al bekwaam genoeg is o
AVR Assembler Tutorial 5

AVR Assembler Tutorial 5

Vandaag gaan we nemen een kijkje op de verschillende geheugenlocaties in de Atmega328p microcontroller en zien als we beter begrijpen kunnen hoe de dingen worden opgeslagen, waar ze worden opgeslagen en hoe de pointers en opzoektabellen werken.De tut
AVR Assembler Tutorial 4

AVR Assembler Tutorial 4

Welkom bij de handleiding voor nummer 4!In deze tutorial zullen we bouwen een circuit om te simuleren het rollen van twee dobbelstenen. Dan zullen we eerst een brute-force-programma welk doet naar de job schrijven. Dan zullen we dat programma op vers
AVR Assembler Tutorial 3

AVR Assembler Tutorial 3

Welkom op tutorial nummer 3!Voordat we beginnen wil ik een filosofische opmerking maken. Wees niet bang om te experimenteren met de circuits en de code die we proberen op te in deze tutorials bouwen. Draden rond wijzigen, nieuwe onderdelen toe te voe
Een geavanceerde benadering van programmering van Arduino & AVR

Een geavanceerde benadering van programmering van Arduino & AVR

Dit instructable is een must read voor iedereen die vertrouwd is met core AVR chips en Arduino.Nou, om meer specifieke, bij het lezen van de instructable, zal u zitten kundig voor:1) weten het juiste verschil tussen AVR en Arduino.2) programmering Ar
Programmeerbare LED

Programmeerbare LED

geïnspireerd door diverse LED Throwies, knipperende LEDs en soortgelijke instructables ik wilde doen van mijn versie van een LED aangestuurd door een microcontroller.Het idee is om de LED knipperende reeks Herprogrammeerbare. Deze herprogrammering ka
De generator van willekeurige golfvorm, voor ~ 20$

De generator van willekeurige golfvorm, voor ~ 20$

een willekeurige golfvorm generator (AWG) is een nuttige maar vaak duur stuk van testapparatuur (ebay voor lacht). Gebruiken om te bepalen component frequentiebereik, genereren van vervoerder signalen, als een LCR-meter als u een bereik, tune resonan
Star Trek deurbel Hack

Star Trek deurbel Hack

Ik heb altijd al een fan van de Star Treks en als zodanig ik was erg opgewonden toen mijn kamergenoot bracht het huis van een originele serie stijl Star Trek comm panel. Ik had nog nooit gezien een van deze, maar een snelle zoektocht nam ons mee naar