AVR Assembler Tutorial 4 (4 / 9 stap)

Stap 4: Subroutines


Iets dat u onmiddellijk over de manier waarop ik schrijf code kan worden gezien opmerken zult door te kijken naar het gedeelte achter het label "belangrijkste:"

Merk op dat alles is opgenomen tussen het label "belangrijkste:" bij de bovenkant en de "rjmp belangrijkste" onderaan. Dit betekent dat er zit niet vlucht uit deze sectie anders dan via de verklaringen van de "rcall" binnen. Neem nu een kijkje op een van de verklaringen van de rcall, "rcall button_push" dit ons springt naar de sectie onder het label "button_push"

U ziet dat deze sectie ook deel tussen een label uitmaakt en een 'ret' zodat de PC ook in hier ook gevangen is. Deze sectie van code heet een "subroutine" aangezien ik noem het uit het belangrijkste blok, wordt een taak uitgevoerd en vervolgens het "terug" naar belangrijkste op de plaats waar hij werd genoemd. Dus met behulp van subroutines uitzien, kunt u afdekken van de code in brokken die bepaalde taken uitvoeren en vervolgens terugkeren naar waar zij werden genoemd. De voordelen van deze manier codering zijn als volgt:

  1. u als u merkt dat u dezelfde taak uitvoert meerdere malen kunt gewoon de subroutine plaats hebben dezelfde set opdrachten herhaald over en voorbij. Het resultaat is een korter programma dat het zelfde ding doet.
  2. het is veel gemakkelijker te lezen van het programma en erachter te komen wat het doet in tegenstelling tot de "spaghetti-code" dat sommige mensen waar alles is één lang stuk dat springt schrijven rond heen en weer, heen en weer, overal tot een persoon nodig een kruik van whiskey zit naast hem heeft, bij het lezen van het te wenden uit de krankzinnigheid.
  3. het is manier makkelijker te debuggen! Als uw programma niet werkt en je geen idee waarom hebt (wat meestal het geval bij het schrijven in assembler) kunt u gemakkelijk doen sommige speurwerk en isoleren van de aangooi naar één van de subroutines en vervolgens het uitzoeken vanaf daar. Het resultaat is uren van tijd bewaard.

Zo zult u zien dat ik gebruik subroutines "routinematig" in mijn programma's ;)

Oefening 1: onderzoeken van de subroutine die ik gebruik de waarden wilt weergeven op de dobbelstenen door verlichting van verschillende LEDs. U zult zien dat ik ben eigenlijk flipping heen en weer vanaf één dobbelsteen naar de andere. Als u de vertragingen in de subroutine "weergeven" ziet u deze flikkeren. Het feit dat het oog niet zien flikkert die te snel kan ik aan de macht van twee LED's van de dezelfde draad en gewoon flip heen en weer echt snel, zodat het oog ze ziet zowel als op de hele tijd. Op die manier in plaats van een uitvoerpoort nodig voor elke LED (dus een totaal van 16 inclusief de 0V en de 5V-poorten) hoeven we alleen 9. Kun je denken aan een betere manier om dit te doen zodat we niet hoeven te 7 van onze havens voor het aandrijven van deze dobbelstenen gebruiken? Hoe zit het met "Charlieplexing the LEDs" zoals ik deed in mijn "instructable" over Charlieplexing? ( Dat zou de moeite waard op de lange termijn met slechts 14 LEDs?

Het volgende wat dat we gaan gebruiken is "Macro's".

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 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 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