INHOUDSOPGAWE:

AVR Assembler Tutoriaal 11: 5 stappe
AVR Assembler Tutoriaal 11: 5 stappe

Video: AVR Assembler Tutoriaal 11: 5 stappe

Video: AVR Assembler Tutoriaal 11: 5 stappe
Video: Power Lead Generator Review 🔥 DON'T BUY YET 🔥 Without My Case Study And Custom Bonuses 2024, November
Anonim
AVR -samestelling -tutoriaal 11
AVR -samestelling -tutoriaal 11
AVR -samestelling -tutoriaal 11
AVR -samestelling -tutoriaal 11
AVR -samestelling -tutoriaal 11
AVR -samestelling -tutoriaal 11

Welkom by Tutoriaal 11!

In hierdie kort tutoriaal gaan ons uiteindelik die eerste deel van ons finale projek bou.

Die eerste ding wat u moet doen, is om na die heel laaste stap van hierdie tutoriaal te gaan en na die video te kyk. Kom dan terug hiernatoe. [wag terwyl jy dit doen …] Goed. Gaan nou voort.

As u nog nie geraai het nie, bou ons 'n Craps -speletjie! Natuurlik, net omdat ek 'n craps -speletjie bou, beteken dit beslis nie dat u dit moet doen nie. Ek hoop dit spreek vanself. Dit is in elk geval nuttig om mikrobeheerders te gebruik om gesegmenteerde skerms, ens., Te beheer en om met mekaar te kommunikeer - dit is hoofsaaklik wat ons hier doen. U kan kode skryf om dit in elk geval te gebruik. Op die oomblik gaan ek hulle kodeer om craps te speel, hoewel ek later kan besluit om die gesegmenteerde skerms weer te beplan om iets anders te doen.

Die rede waarom ek dit bou, is omdat ek dink dat ek uiteindelik 'n volgrootte Vegas -tafel wil hê in my "man grot" in die kelder van my huis. Nie een van my vriende het egter die minste idee hoe om weddenskappe en rolle te hanteer, te behaal of uit te betaal nie. Dus het ek gedink dit sal gaaf wees as die tafel al die handelaars vir ons laat werk! As ons 'n weddenskap op die tafel plaas, kan ons ook 'n klein drukknoppie langs die vierkant druk waarop ons skyfies wys hoeveel daar geplaas word, dan kan die mikrobeheerder die uitbetaling vir die vierkant na die dobbelsteen rol bereken en dit vertoon. Ek is nog steeds nie heeltemal seker hoe ek hierdie aspek gaan organiseer nie. Een gedagte wat ek gedink het, was dat elke persoon gevra word om al sy weddenskappe om die beurt te plaas, sodat die kontroleerder kan aanteken waar elke persoon se geld is voordat hy die volgende speler opneem, ensovoorts. Na die rol kan die rekenaar die uitbetalings op elke vierkant wys en kan dit ook 'totale kontant' vir elke speler behou.

Vir een van die voorbladfoto's van hierdie tutoriaal moes ek net 'n prentjie gebruik van my wat ek hierdie somer 5 aas aan die poker tafel in Vegas trek. Heheh. Vergewe my.

Hier is 'n skakel na die volledige versameling van my tutoriale vir AVR-samestellers:

Stap 1: Craps

Craps!
Craps!
Craps!
Craps!
Craps!
Craps!

In hierdie tutoriaal bou ons slegs die eenvoudigste deel van die laaste Craps -spel. Dit word "The Pass Line" genoem en u kan daarop wed. U kan alles leer wat u moet weet oor die 'paslyn'-deel van die spel deur die kort instruksievideo van 2 minute wat ek by hierdie stap aangeheg het, te kyk.

Ons bou nog 'n 4-syfer-skerm wat die handelaar se kontant sal byhou op dieselfde manier as wat ons huidige 4-syfer-skerm die speler se geld byhou. Die handelaar begin met $ 20 en die speler begin met $ 20 (die totale moontlike geld in die spel is $ 9999-die maksimum van ons 4-syfer-uitstallings, maar ons benodig slegs $ 20 vir hierdie eerste stuk van die spel of andersins sou in die uiterste vervelig wees en moeilik wees om te wen of te verloor binne 'n ordentlike tyd). As die speler al die handelaar se geld neem, wen die speler. As die speler al sy geld verloor, wen die handelaar.

Hoe wen of verloor jy geld? Die van julle wat Craps gespeel het, mense in die straat sien skiet het of dit teen die casino in Vegas gesien het, sal dit alreeds weet. Vir die res van u, laat ek u 'n kort beskrywing gee van die 'paslyn' -deel van die spel wat ons vandag gaan kodeer.

Craps word al honderde jare lank gespeel en dateer uit die tyd van die kruistogte. Dit is gespeel deur troepe in die loopgrawe van die Tweede Wêreldoorlog, dit is op straat gespeel, dit is gespeel in casino's en dobbelhuise. Dit het net met die aangee begin en al die ander dinge is later bygevoeg. Ons sal dieselfde vordering volg.

Die manier waarop die paslyn werk, is dit. Jy plaas 'n weddenskap en gooi dan die dobbelsteen. Die eerste rol word die 'come-out roll' genoem. As jy 'n 2 (slangoog), 'n 3 (ace deuce) of 'n 12 (bokswaens) op die uitkomsrol kry, verloor jy jou weddenskap en word dit 'craps' genoem. As jy 'n 7 ('n natuurlike) of 'n 11 ('n jo, of 'n yo-lewe) rol, wen jy. As u 'n ander nommer rol, word hierdie nommer u 'punt'. Sodra 'n 'punt' vasgestel is, gaan jy voort met die dobbelsteen met die doel om die punt weer te slaan voordat jy 'n 7. gooi. As jy jou punt kry voordat 'n 7 gegooi word, wen jy selfs geld. So 'n dollar -weddenskap wen u 'n dollar van die handelaar. As u 'n 7 kry voordat u punt gerol word, word dit 'sewe uit' genoem en verloor u u weddenskap aan die handelaar.

Daarna begin jy weer. Plaas 'n weddenskap op die paslyn en gooi die dobbelsteen, 7 of 11 oorwinnings, 2, 3 of 12 verloor.

Daar is baie meer soorte weddenskappe: "moenie slaag nie", "slaagkans", "moenie slaag nie", "kom wed", "moenie kom nie", "veld", "horing", " moeilike maniere ", ens. ens. ens. U kan besonderhede hier vind:

en.wikipedia.org/wiki/Craps

Soos ek hierbo gesê het, sal ons vir eers slegs die paslyn -gedeelte van die spel kodeer, wat alles was wat hulle destyds gehad het toe kinders dobbelstene teen die muur gegooi het vir mekaar se middagete, en dit is waar ons sal begin.

Maar voordat ons begin met die kodering van goed, kan ons die kontantvertoning van die handelaar bou. Hiervoor wil ek een van die groter vier-syfer-skerms gebruik wat u by Sparkfun of elders kan kry. Van nou af gaan ek nie materiaal vir hierdie tutoriale lys nie. As u eintlik saam met my alles gebou het, weet u reeds waar u die materiaal moet kry en wat dit is. Dit is vir my nutteloos om dit te noem of hoeveel dit kos.

Laat ons dus een van ons prototipe-borde, 'n groot 4-syfer-skerm, nog 'n ATmega328p om die skerm te beheer, bou en bou soos ons met die dobbelsteenrol en die speler wat voorheen was. Ons sal ook opskrifte vir krag, programmering en TWI -kommunikasie heg, net soos die ander.

Stap 2: Handelaar se kontantvertoning

Handelaar se kontantvertoning
Handelaar se kontantvertoning
Handelaar se kontantvertoning
Handelaar se kontantvertoning
Handelaar se kontantvertoning
Handelaar se kontantvertoning

Ons bou die handelaarsvertoning op dieselfde manier as met die vier-syfer-skerm van die speler in die laaste tutoriaal. Die enigste verskille is dat dit groter is en dat dit minder penne het, so ons sal dit rangskik en anders bedraad.

Ek het 'n foto van die bedrading van hierdie skerm aangeheg. U kan sien dat dit groter is en minder penne het as ons speelkas -skerm. Die foto is van die sparkfun -bladsy waar ek die skerm gekry het, en dit wys watter penne die krag van elke syfer is en watter penne elkeen van die segmente in 'n syfer beheer.

Soos gewoonlik moet u die skerm in u prototipe broodbord aansluit en elke segment toets om seker te maak dat u verstaan hoe dit bedraad is. Dan moet u dit aan die penne van 'n AVR -mikrobeheerder op u broodbord koppel en dit van daar af laat loop totdat al ons kode in hierdie tutoriaal werk. Uiteindelik moet u die eksterne bord aan die einde bou en dit soldeer. As u die finale produk toets, sal u weet dat daar probleme is met u soldeer- en snywerk en nie die kode nie. Vergeet ook nie die bekende aksioma van timmerwerk "meet twee keer en sny een keer", of in die geval van die maak van stroombane: "sny twee keer, soldeer een keer." Soos u op die foto kan sien, breek ek uiteindelik af en koop die perfekte Dremel -aanhangsel vir hierdie soort werk. 'N "Diamantpuntstel". Dit het 5 dollar gekos, maar dit is baie minder as die koste van die Anger Managment Therapy, wat meebring dat ek te veel keer op 'n ry my snywerk moes beëindig.

Ek gebruik 330 ohm weerstande vir hierdie skerm. Die COM -penne gaan deur die weerstand na GND en die krag gaan na die segment wat u wil vertoon. Ek gaan PC0 tot en met PC3 gebruik vir die COM -penne en PB0, PB1, PB2, PB3, PB4, PD5, PD6 en PD7 vir die segmente.

Hier is die sleutel om u kanse om dit reg te kry, te maksimeer:

  1. die kaart in kaart te bring
  2. sny die kring
  3. kyk na u bedrading
  4. heg die weerstande, die pette en die kristal ossillator aan
  5. kyk weer na die aansluitings en bedrading
  6. maak die eksterne drade vas
  7. heg die mikrobeheerder aan
  8. kyk weer na die bedrading
  9. heg die 4-syfer-skerm aan
  10. kontroleer elke syfer met 'n paar drade van die broodbord
  11. sit dit opsy en skryf die kode in die wete dat u waarskynlik later dinge sal moet aanpas en hoop dat u nie 'n verbinding wat onderbreek moet word, bedek het nie.

Ek het 'n reeks foto's van my bedradingswerk gewys. Besef asseblief dat u die uwe vrylik kan bedraad soos u wil. Dit is baie waarskynlik dat u 'n beter kaart kan vind as ek, en u moet dit gebruik. Niks in hierdie tutoriale hang af van hoe u komponente bedraad is nie, solank hulle die regte uitvoerpoort het. Wat my herinner. Let op dat daar nou twee koptekste na SDA gaan en twee na SCL? Waarom dink jy het ons dit gedoen?

Soos u kan sien aan die aangehegte kode aan die einde van die tutoriaal, het ek die kode eenvoudig van die spelervertoning van die laaste tutoriaal na 'n nuwe lêer vir die handelaarsvertoning geknip en geplak. Toe gaan ek deur en verander die "segmente" soektafel sodat dit ooreenstem met die nuwe penkaart, en let op dat die "com" penne vir hierdie vertoning gemaal is en dat die segmentpenne 5V is eerder as andersom soos vir die ander skerm. Ek het ook die inisialisering van die poorte verander om die nuwe bedrading te weerspieël, ek het die adres van die kassa -skerm verander na 0b1000000 sodat die dobbelsteenrol met hom kan praat; ek het die "siklus" -program opgeneem sodat dit die PC0 tot en met PC3 "com" penne as dit 'n spesifieke segment wil dryf, en ek het die 'syfer' wat vertoon word verander, aangesien die nuwe bedrading die syfers in die teenoorgestelde volgorde het (as u dit soos dit was en 1234 probeer vertoon het) sou eerder as 4321 verskyn het).

Hier is die nuwe registerkaart:

(PD7, PD6, PD5, PB4, PB3, PB2, PB1, PB0) = (desimale punt, c, g, b, f, a, e, d)

waar 1 AAN is en 0 UIT.

Toets nou die skerm deur eers die geïnitialiseerde waarde van die skerm op verskillende nommers in te stel, sodat dit as dit aanskakel, dit wys. Dit sal u vertel of alles reg werk.

Wysig dan die kode van die diceroller sodat dit die nuwe adres vir die slaaf gebruik, haak dit saam en voer dit uit. Dit moet presies lyk soos wat ons in die vorige tutoriaal gedoen het, behalwe dat die dobbelstene nou op die nuwe skerm verskyn.

Puik! Nou is ons gereed om die nuwe dobbelsteenrolkode te skryf sodat dit kommunikeer met beide die spelervertoning en die handelaarsvertoning.

Stap 3: Programopset

Program uiteensetting
Program uiteensetting
Program uiteensetting
Program uiteensetting
Program uiteensetting
Program uiteensetting

Die manier waarop die kode vir ons spel gaan werk, is dat ons die dobbelsteenrol as die meester behou en die handelaarskerm as 'n ekstra slaaf byvoeg. Die dobbelsteenrol sal die spel beheer en dit sal die gevolglike veranderinge in kontant na die handelaar stuur en die speler vertoon na elke rol. Vir eers het ons net 'n wenlyn van $ 10 elke keer, sodat ons nie te ingewikkeld hoef te raak nie, maar die speler verander sy weddenskap. Later, sodra die meganika werk, voeg ons nog 'n kontroleerder by, wat 'n ekstra meester is wat die weddenskappe en die uitbetalings sal beheer, en ons dobbelsteenrol sal 'n meester bly, maar word slegs gebruik om die dobbelsteen te gooi. Dit sal ons toelaat om by TWI -arbitrasie, botsings en ander belangrike aspekte van seriële kommunikasie uit te kom as u verskeie meesters en slawe het. Ons sal ook 'n aantal enkele 7-syfer-skerms met drukknoppies daaronder byvoeg, wat ons in staat sal stel om op ander soorte rolle te wed, maar dit alles kom in toekomstige tutoriale. Vir eers wil ons net die dobbelsteenrol as meester hê, en die twee vertoon as slawe. As ons op die knoppie druk, sal die kode besluit of u 'n natural wil uitbetaal, geld van 'n craps wil neem, of na 'n "punt" -reeks rolletjies gaan, tot 'n oorwinning of 'n sewe-out.

Laat ons eers die slawe -roetines skryf. Dit is eenvoudig omdat hulle net die SDA -reël vir hul adres sal sien; as hulle gebel word, sal hulle die nuwe nommer lees om dit te vertoon en te vertoon. Dit is al! Hulle hoef nie eers met die meester terug te praat nie, aangesien die meester hul totale sal byhou en al die uitbetalingsberekenings sal doen voordat hulle dit bywerk. In toekomstige tutoriale sal ons slawe aan die meester laat terugskryf (byvoorbeeld, as ons 'n enkele 7-syfer-skerm met drukknoppies vir die verbintenisbedrag het, moet hulle die meester vertel hoeveel daar op elke skerm gewed word, en daarom sal ons spreek hulle aan met 'n adres + leesoproep met die meester in 'hoofontvanger -modus'), maar ons sal dit betyds bereik.

Alles word tans aangevuur deur die druk op die dobbelsteen -knoppie, gevolg deur 'n berekening of verdere knoppies en uiteindelik 'n boodskap aan elk van die skerms met hul nuwe totale. Daar sal 'n toets na elke uitbetaling wees om te bepaal of die speler gewen het of verloor het, met ander woorde, as die handelaar se kontant nul word na 'n rol, of die kontant van die speler nul word na 'n rol (nie die handelaar of die speler nie) kan negatief raak, aangesien hulle slegs $ 10 kan wed of wat ook al oorbly as dit minder as $ 10 is).

So dit is hoe dit gaan werk. Kom ons kry kodering.

Stap 4: Hoofkommunikasiekode

Hoofkommunikasiekode
Hoofkommunikasiekode

Ons kan nou die kommunikasie -roetine van die dobbelsteenrol skryf. Dit is ook amper identies aan die een wat ons laas geskryf het, behalwe dat ons met twee verskillende slawe sal kommunikeer eerder as slegs een. Let daarop dat ons vir elkeen van die slawe 'n ander adres gebruik. U moet die kode self verander en dit dan met elke adres toets en seker maak dat dit net soos die vorige handleiding werk, behalwe met elke aparte skerm.

Ek heg die kode vir elke komponent wat bloot die resultaat van die rol vertoon, sodat dit gebruik kan word om die skerms reg te laat werk en die bedrading na te gaan.

Met die kodering van die spel word niks nuuts bekend gemaak met betrekking tot die samestellingstaalopdragte of AVR-mikrobeheerderkomponente nie, en ek voel dus nie dat ek dit reël-vir-lyn moet deurmaak nie. U het waarskynlik opgemerk dat as ons iets nuuts voorstel, ek deur elke reël in klein besonderhede gaan, sodat ek u kan kwaad maak as u nie aan die slaap raak nie. Aan die ander kant sal ek dit nie doen as daar niks nuuts is nie. Dit is vandag die geval. So ek dink dat u nou gereed is om met die kode te speel, die kode deur te lees, die kode te ontleed, die kode te verstaan, die kode te kritiseer, die kode te bespot en te lag vir die ou wat die kode geskryf het. Ek sal u dus laat gaan en dit doen. Dit is amper seker dat u baie plekke sal vind wat u kan verbeter of ten minste kan vereenvoudig wat ek geskryf het.

Ek het, soos gewoonlik, die finale weergawe van die kode vir die twee skerms en die onderstel in die volgende stap aangeheg, saam met 'n video van my wat die ding toets.

Stap 5: Finale kode en video

Ek het die video en die 3 programme aangeheg. U sal sien dat u die weddenskap en die beginhandelaar en die speler se kontant aan die bokant van die program kan regmaak met.equ -state.

In die volgende tutoriaal voeg ons die moontlikheid by om op verskillende dinge te wed, wat die spel opwindender sal maak. Die interessante ding van moderne Craps is dat u baie verskillende maniere het om te wed en u kans te probeer maksimeer. Trouens, Craps is die hoogste kansspel in die casino! … AS jy weet hoe om dit te speel. Aan die ander kant, as u nie weet hoe om te speel nie, word dit een van die laagste kansspeletjies.

Sodra ons meer dinge het om ons geld op te wed, sal ek die totale hoeveelheid geld in die spel verhoog.

Ek behoort pret te wees!

Sien jou volgende keer!

Aanbeveel: