AVR Assembler Tutorial 2 (2 / 4 stap)

Stap 2: Schrijven van de code van de vergadering


De volgende code in een tekstdossier genoemd pushbutton.asm schrijven en compileren met avra zoals je deed in Tutorial 1.

Merk op dat in deze code we tal van opmerkingen hebben. Elke keer de assembler een puntkomma het zal overslaan de rest van de regel en ga naar de volgende regel ziet. Het is goede praktijk (vooral in assembler!) programmering zwaar commentaar van uw code, zodat wanneer u naar het in de toekomst terugkeert zult u weten wat u aan het doen waren. I 'm gonna commentaar dingen hele hijs zootje in de eerste paar tutorials zodat wij weten precies wat er gaande is en waarom. Zodra we een beetje beter worden in vergadering coderen zal ik later dingen in een beetje minder detail ingaan.

 ;************************************ ; written by: 1o_o7 ; date: <2014|10|23> ; version: 1.0 ; file saved as: pushbutton.asm ; for AVR: atmega328p ; clock frequency: 16MHz ;************************************ 
 ; Program function:------------------------------ ; Turns on an led connected to PB0 (digital 0) ; when you push a button connected to PD0 ;----------------------------------------------- ; ; PB0 (normally 0V) -----> LED --> 220 Ohm ---> 5V ; ; PD0 (normally 5V) -----> Button ---> GND ; 
 .nolist .include "./m328Pdef.inc" .list 
 ;============== ; Declarations .def temp =r16 ; designate working register r16 as temp 
 ;================= ; Start of Program rjmp Init ; first line executed 
 ;============ Init: ser temp ; set all bits in temp to 1's. out DDRB,temp ; setting a bit as 1 on the Data Direction I/O ; register for PortB, which is DDRB, sets that ; pin as output, a 0 would set that pin as input ; so here, all PortB pins are outputs (set to 1) ldi temp,0b11111110 ; load the `immediate' number to the temp register ; if it were just ld then the second argument ; would have to be a memory location instead out DDRD,temp ; mv temp to DDRD, result is that PD0 is input ; and the rest are outputs clr temp ; all bits in temp are set to 0's out PortB,temp ; set all the bits (i.e. pins) in PortB to 0V ldi temp,0b00000001 ; load immediate number to temp out PortD,temp ; move temp to PortD. PD0 has a pull up resistor ; (i.e. set to 5V) since it has a 1 in that bit ; the rest are 0V since 0's. 
 ;====================== ; Main body of program: Main: in temp,PinD ; PinD holds the state of PortD, copy this to temp ; if the button is connected to PD0 this will be ; 0 when the button is pushed, 1 otherwise since ; PD0 has a pull up resistor it's normally at 5V out PortB,temp ; sends the 0's and 1's read above to PortB ; this means we want the LED connected to PB0, ; when PD0 is LOW, it sets PB0 to LOW and turn ; on the LED (since the other side of the LED is ; connected to 5V and this will set PB0 to 0V so ; current will flow) rjmp Main ; loops back to the start of Main 

Merk op dat deze keer we niet alleen veel meer reacties in onze code hebben, maar we ook een koptekstsectie die wat informatie hebben geeft over wie het schreef, toen het werd geschreven, wat voor soort controller het was geschreven voor, en ik heb zelfs een eenvoudige schakeling diagram om te laten zien hoe u de bouw van het circuit. De rest van de code is ook onderverdeeld in secties.

Nadat u de bovenstaande code hebben gecompileerd moet u laden op de microcontroller en zien dat het werkt. De LED moet inschakelen terwijl u de knop duwen en vervolgens zwenking vandoor opnieuw wanneer je loslaten. Ik heb laten zien hoe het eruit ziet in de afbeelding.

Gerelateerde Artikelen

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 1

AVR Assembler Tutorial 1

Ik heb besloten om een serie tutorials over hoe te schrijven van assembler programma's voor de Atmega328p die het gebruikt in de Arduino microcontroller is schrijven. Als mensen geïnteresseerd blijven blijft ik stak een een week of zo totdat ik oprak
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