AVR Assembler Tutorial 6 (2 / 3 stap)

Stap 2: Communicatie subroutines

Het eerste wat dat we moeten doen is het aansluiten van de twee controllers. Dus neem een draad van PD6 enerzijds en aansluiten op PD7 anderzijds, en vice versa. Dan hen te initialiseren door PD7 te stellen op OUTPUT op zowel en PD6 op ingang van beide. Tot slot stelt ze allemaal op 0V. Met name het volgende toevoegen aan de Init, of sectie van de code op elk microcontroller resetten:

 sbi DDRD,7 ; PD7 set to output cbi PortD,7 ; PD7 initially 0V cbi DDRD,6 ; PD6 set to input cbi PortD,6 ; PD6 initially 0V clr total ; total on dice initially 0 

Nu laten we opzetten van de communicatie-subroutine op de dobbelstenen-roller-chip. Eerst definiëren een nieuwe variabele aan de top die zal slaan het totaalaantal op de paar dobbelstenen gerold en initialiseren op nul "totale" genoemd.

Schrijf dan een subroutine om te communiceren met de analyzer:

 communicate: cbi PortD,7 sbi PortD,7 ; Send ready signal wait: sbic PinD,6 ; read PinD and skip if 0V rjmp wait delay 8 ; delay to synchronize (found this experimentally) send: dec total delay 2 ; delay for each die count cpi total,0 ; 0 here means "total" number delays have been sent breq PC+2 rjmp send cbi PortD,7 ; PD7 to 0V clr total ; reset dice total to 0 ret 

In de analyzer toevoegen we een rcall uit de belangrijkste routine aan de subroutine communiceren:

 clr analyzer ; prepare for new number sbic PinD,6 ; check PD6 for a 5V signal rcall communicate ; if 5V go to communicate mov analyzer, total ; output to analyzer display rcall analyzer 

en vervolgens de subroutine communiceren als volgt schrijven:

 communicate: clr total ; reset total to 0 delay 10 ; delay to get rid of bounces sbi PortD,7 ; set PB7 to 5V to signal ready receive: delay 2 ; wait for next number inc total ; increment total sbic PinD,6 ; if PD6 goes back to 0V we're done rjmp receive; otherwise loop back up for more data cbi PortD,7 ; reset PD7 when done ret 

Daar ga je! Nu is elke microcontroller ingesteld om te communiceren het resultaat van de dobbelstenen rollen en vervolgens weer te geven over de analyzer.

We zullen een veel efficiëntere manier van communiceren later wanneer we moet overbrengen van de inhoud van een register tussen domeincontrollers in plaats van gewoon een dobbelsteen implementeren. In dat geval zullen we nog slechts twee draden aansluiten van hen gebruiken maar we 1,1 zal gebruiken om te betekenen "beginnen transmissie"; 0,1 betekenen "1"; 1,0 betekent "0"; en ten slotte 0,0 te betekenen "end transmission".

Oefening 1: zie als u kunt de betere methode implementeren en het gebruiken om te zetten de dobbelstenen rollen als een 8-bits binair getal.

Ik zal een video die mijne ingebruikzijn toont hechten.

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