Përmbajtje:

Tutoriali i AVR Assembler 11: 5 Hapa
Tutoriali i AVR Assembler 11: 5 Hapa

Video: Tutoriali i AVR Assembler 11: 5 Hapa

Video: Tutoriali i AVR Assembler 11: 5 Hapa
Video: Работа с программой AVR Studio 2024, Korrik
Anonim
Udhëzues AVR Assembler 11
Udhëzues AVR Assembler 11
Udhëzues AVR Assembler 11
Udhëzues AVR Assembler 11
Udhëzues AVR Assembler 11
Udhëzues AVR Assembler 11

Mirësevini në Tutorial 11!

Në këtë tutorial të shkurtër, ne më në fund do të ndërtojmë pjesën e parë të projektit tonë përfundimtar.

Gjëja e parë që duhet të bëni është të shkoni në hapin e fundit të këtij tutoriali dhe të shikoni videon. Pastaj kthehu këtu. [pauzë ndërsa e bëni këtë….] Mirë. Tani vazhdo.

Nëse nuk e keni menduar tashmë, ne po ndërtojmë një lojë Craps! Sigurisht, vetëm sepse po ndërtoj një lojë me craps sigurisht që nuk do të thotë që ju duhet. Shpresoj që të shkojë pa thënë. Isshtë e dobishme në çdo rast të përdorni mikrokontrollues për të kontrolluar ekranet e segmentuara, etj., Dhe për të komunikuar me njëri -tjetrin - kjo është kryesisht ajo që ne po bëjmë këtu. Ju mund të shkruani kod për t'i përdorur ato sipas dëshirës tuaj. Tani për tani unë do t'i kodoj për të luajtur craps edhe pse mund të vendos më vonë të ri-synoj ekranet e segmentuara për të bërë diçka tjetër.

Arsyeja pse po e ndërtoj këtë është sepse po mendoj se përfundimisht mund të dëshiroj një tryezë me kapele të madhësisë në Vegas në "shpellën time" në bodrumin e shtëpisë sime. Sidoqoftë, asnjë nga miqtë e mi nuk ka idenë më të vogël se si të merren, të shënojnë ose të paguajnë bastet dhe rrotullat. Kështu që unë kuptova se do të ishte mirë të kishim tryezën të bënte të gjithë punën e tregtarit për ne! Kur vendosim një bast në tryezë, ne gjithashtu mund të shtyjmë një buton të vogël pranë sheshit ku patatet tona janë duke treguar se sa është vendosur atje, atëherë mikrokontrolluesi mund të llogarisë pagesën për atë shesh pas hedhjes së zareve dhe ta shfaqë atë. Unë ende nuk jam plotësisht i sigurt se si do ta organizoj këtë aspekt. Një mendim që kisha ishte se secilit person do t'i kërkohet të vendosë të gjitha bastet e tij me radhë në mënyrë që kontrolluesi të regjistrojë se ku janë paratë e secilit person para se të regjistrojë lojtarin tjetër dhe kështu me radhë. Pastaj pas rrotullimit, kompjuteri mund të tregojë pagesat në secilin katror dhe gjithashtu mund të mbajë një "total cash" për secilin lojtar.

Për njërën nga fotot e kopertinës së këtij tutoriali, më duhej të përdor një fotografi ku unë tërhiqja 5 ace në tryezën e pokerit në Vegas këtë verë. Heheh. Më kënaq.

Këtu keni një lidhje me koleksionin e plotë të mësimeve të mia të montuesit AVR:

Hapi 1: Gëzime

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

Në këtë tutorial ne do të ndërtojmë vetëm pjesën më të thjeshtë të lojës përfundimtare Craps. Kjo quhet "Linja e Kalimit" dhe mund të bastosh mbi të. Ju mund të mësoni gjithçka që duhet të dini për pjesën "kaloni vijën" e lojës duke shikuar videon e shkurtër mësimore 2-minutëshe që i kam bashkangjitur këtij hapi.

Ne do të ndërtojmë një ekran tjetër me 4 shifra i cili do të mbajë gjurmët e Parave të Tregtarit në të njëjtën mënyrë që ekrani ynë aktual me 4 shifra mban gjurmët e Parave të Lojtarit. Tregtari do të fillojë me 20 dollarë dhe lojtari do të fillojë me 20 dollarë (paratë totale të mundshme në lojë janë 9999 dollarë-maksimumi i ekraneve tona 4-shifrore, por do të na duhen vetëm 20 dollarë për këtë pjesë të parë të lojës ose ndryshe do të ishte e lodhshme në ekstrem dhe e vështirë për të fituar ose humbur në një kohë të mirë). Nëse lojtari merr të gjitha paratë e tregtarit, lojtari fiton. Nëse lojtari humbet të gjitha paratë e tij, atëherë tregtari fiton.

Si fitoni ose humbni para? Epo, ata prej jush që keni luajtur Craps, keni parë njerëz që "gjuajnë zare" në rrugë, ose e keni parë atë të luhet kundër kazinosë në Vegas, tashmë do ta dini. Për ju të tjerët, më lejoni t'ju jap një përshkrim të shkurtër të pjesës "kalimi i vijës" të lojës që do të kodojmë sot.

Craps është luajtur për qindra vjet, që daton që nga koha e kryqëzatave. U luajt nga trupat në llogoret e Luftës së Dytë Botërore, u luajt në rrugë, u luajt në kazino dhe salla bixhozi. Filloi vetëm me vijën e kalimit dhe të gjitha gjërat e tjera iu shtuan më vonë. Ne do të ndjekim të njëjtin progres.

Mënyra se si funksionon linja e kalimit është kjo. Vendosni një bast dhe më pas hidhni zarin. Rrotulla e parë quhet "rrotull dalë". Nëse merrni një 2 (sy gjarpri), një 3 (ace deuce), ose një 12 (makina kuti) në listën e daljes, ju humbni bastin tuaj dhe quhet "craps". Nëse rrotulloni një 7 (një natyral) ose një 11 (një yo, ose yo-leven) fitoni. Nëse rrokullisni ndonjë numër tjetër, atëherë ky numër bëhet "pika" juaj. Pasi të vendoset një "pikë" ju vazhdoni të hidhni zarin me qëllimin për të goditur pikën përsëri para se të hidhni një 7. Nëse e merrni pikën tuaj para se të hidhet një 7 ju fitoni edhe para. Pra, një bast dollari ju fiton një dollar nga tregtari. Nëse merrni një 7 para se pika juaj të hidhet, kjo quhet "shtatë jashtë" dhe ju humbisni bastin tuaj ndaj tregtarit.

Pas kësaj ju filloni përsëri. Vendosni një bast në vijën e kalimit dhe hidhni zarin, 7 ose 11 fitore, 2, 3 ose 12 humbje.

Ka shumë lloje të tjera bastesh, "mos kalo", "koeficiente kalimi", "mos kalo koeficiente", "hajde bast", "mos vini bast", "fushë", "bri", " mënyra të vështira ", etj etj, etj. Ju mund të gjeni detaje këtu:

en.wikipedia.org/wiki/Craps

Siç thashë më lart, tani për tani, ne do të kodojmë vetëm pjesën e kalimit të lojës, e cila është gjithçka që ata kishin në ditën kur fëmijët po hidhnin zare në mur për paratë e drekës së njëri -tjetrit dhe kështu këtu do të fillojmë Me

Sidoqoftë, para se të fillojmë të kodojmë sende, le të ndërtojmë ekranin e parave të tregtarit. Për këtë, unë dua të përdor një nga ekranet më të mëdhenj 4-shifrorë që mund të merrni nga Sparkfun ose diku tjetër. Tani e tutje nuk do të rendis materiale për këto mësime. Nëse në fakt keni ndërtuar gjithçka së bashku me mua, atëherë tashmë e dini se ku t'i merrni materialet dhe cilat janë ato. Lessshtë e kotë për mua t’i rendis ato ose sa kushtojnë.

Pra, le të kapim një nga tabelat tona prototipuese, një ekran të madh 4 shifror, një tjetër ATmega328p për të kontrolluar atë ekran dhe për ta ndërtuar atë siç bëmë me rrotulluesin e zareve, dhe ekranin e lojtarëve më parë. Ne gjithashtu do të bashkojmë tituj për energjinë, programimin dhe komunikimet TWI ashtu si të tjerët.

Hapi 2: Shfaqja e parave të gatshme të tregtarit

Shfaqja e parave të gatshme të tregtarit
Shfaqja e parave të gatshme të tregtarit
Shfaqja e parave të gatshme të tregtarit
Shfaqja e parave të gatshme të tregtarit
Shfaqja e parave të gatshme të tregtarit
Shfaqja e parave të gatshme të tregtarit

Ne e ndërtojmë ekranin e shitësit në të njëjtën mënyrë siç bëmë me ekranin 4 shifror të lojtarit në mësimin e fundit. Dallimet e vetme janë se është më i madh dhe ka më pak kunja, kështu që ne do ta rregullojmë dhe instalojmë atë ndryshe.

Unë kam bashkangjitur një fotografi të instalimeve elektrike të këtij ekrani. Ju mund të shihni se është më i madh dhe ka më pak kunja sesa ekrani ynë i lojërave të lojërave. Fotografia është nga faqja sparkfun ku kam marrë ekranin dhe tregon se cilat kunja janë fuqi për secilën shifër dhe cilat kunja kontrollojnë secilin segment në një shifër.

Si zakonisht, duhet të filloni duke e lidhur ekranin në panelin tuaj të prototipit dhe të provoni secilin segment për t'u siguruar që e kuptoni se si është lidhur. Atëherë duhet ta lidhni me kunjat e një mikrokontrolluesi AVR në tabelën tuaj të bukës dhe ta drejtoni që andej derisa të kemi të gjithë kodin tonë që punon në këtë tutorial. Së fundi, në fund, ju duhet të ndërtoni tabelën e jashtme dhe ta lidhni atë. Pastaj kur testoni produktin përfundimtar do të dini që çdo problem vjen nga puna juaj e saldimit dhe prerjes dhe jo nga kodi. Gjithashtu, mos harroni aksiomën e mirënjohur nga zdrukthtaria "matni dy herë, dhe prerë një herë", ose në rastin e bërjes së tabelave të qarkut: "prerë dy herë, lidhni një herë". Siç mund ta shihni nga fotografia, unë më në fund u prish dhe bleva shtojcën perfekte të Dremel për këtë lloj pune. Një "Set Pikë Diamanti". Kushtoi 5 dollarë, por kjo është shumë më pak se kostoja e Terapisë së Menaxhimit të Zemërimit që vjen me përfundimin e punës sime të prerjes shumë herë me radhë.

Unë jam duke përdorur rezistorë 330 ohm për këtë ekran. Kunjat COM kalojnë përmes rezistencës në GND dhe fuqia shkon në cilindo segment që dëshironi të shfaqni. Unë do të përdor PC0 përmes PC3 për kunjat COM dhe PB0, PB1, PB2, PB3, PB4, PD5, PD6 dhe PD7 për segmentet.

Këtu është çelësi për të maksimizuar shanset tuaja për ta bërë atë të drejtë:

  1. hartoni qarkun
  2. prerë qarkun
  3. kontrolloni instalimet tuaja elektrike
  4. bashkoni rezistorët, kapakët dhe oshilatorin kristalor
  5. kontrolloni përsëri lidhjet dhe instalimet elektrike
  6. lidhni telat e jashtëm
  7. lidhni mikrokontrolluesin
  8. kontrolloni përsëri telat
  9. bashkëngjitni ekranin me 4 shifra
  10. kontrolloni secilën shifër me një palë tela nga dërrasa e bukës
  11. lëreni mënjanë dhe shkruani kodin, duke e ditur se ndoshta do t’ju duhet të ndryshoni gjërat më vonë dhe duke shpresuar se nuk e keni mbuluar një lidhje që duhet prerë.

Unë kam treguar një seri fotografish të punës sime në instalime elektrike. Ju lutemi kuptoni që ju jeni të lirë të lidhni telin tuaj në çfarëdo mënyre që ju pëlqen. Ka shumë të ngjarë që ju të gjeni një hartë më të mirë se unë dhe ju duhet ta përdorni atë. Asgjë në këto mësime nuk varet nga mënyra se si janë lidhur komponentët tuaj, për sa kohë që ata kanë portat e sakta të daljes. Që më kujton. Vini re se tani ka dy tituj që shkojnë në SDA dhe dy që shkojnë në SCL? Pse mendoni se ne e bëmë atë?

Tani, siç mund ta shihni nga kodi i bashkangjitur në fund të mësimit, unë thjesht preva dhe ngjita kodin nga shfaqja e lojtarit të mësimit të fundit në një skedar të ri për shfaqjen e tregtarit. Pastaj kalova dhe ndryshova tabelën e kërkimit të "segmenteve" për t'iu përgjigjur hartës së re të kunjave duke vënë në dukje se për këtë ekran kunjat "com" janë të tokëzuar dhe kunjat e segmentit janë 5V në vend të kundërt siç ishte për ekranin tjetër Me Unë gjithashtu ndryshova fillimin e porteve për të pasqyruar instalimet elektrike të reja, ndryshova adresën e ekranit të tregtarit në 0b1000000 në mënyrë që rrotulluesi i zareve të jetë në gjendje të flasë me të, ndryshova nënrutinën "cikli" në mënyrë që të fiket PC0 përmes PC3 "com" vendos kur dëshiron të fuqizojë një segment të veçantë dhe unë ndryshova "shifrën" që shfaqet pasi telat e rinj kanë shifrat në rendin e kundërt (nëse e lini ashtu siç ishte dhe u përpoqët ta shfaqnit 1234 atë do të ishte shfaqur si 4321 në vend).

Këtu është harta e re e regjistrit:

(PD7, PD6, PD5, PB4, PB3, PB2, PB1, PB0) = (pikë dhjetore, c, g, b, f, a, e, d)

ku 1 është ON dhe 0 është OFF.

Tani testoni ekranin duke vendosur së pari vlerën e inicializuar të ekranit në numra të ndryshëm në mënyrë që kur të ndizet t'i shfaqë ato. Kjo do t'ju tregojë nëse gjithçka po funksionon si duhet.

Pastaj modifikoni kodin diceroller në mënyrë që të përdorë adresën e re për skllavin, lidhini ato së bashku dhe drejtojeni atë. Ajo duhet të veprojë saktësisht si ajo që bëmë në tutorialin e fundit, me përjashtim të faktit se hedhja e zareve tani shfaqet në ekranin e ri.

Shkëlqyeshëm! Tani jemi gati të shkruajmë kodin e ri të zarfit në mënyrë që të komunikojë si me ekranin e luajtësit ashtu edhe me ekranin e shitësit.

Hapi 3: Skica e Programit

Skica e Programit
Skica e Programit
Skica e Programit
Skica e Programit
Skica e Programit
Skica e Programit

Mënyra se si kodi do të funksionojë për lojën tonë është që ne do të mbajmë rrotullimin e zareve si mjeshtër dhe do të shtojmë ekranin e tregtarit si një skllav shtesë. Roller zare do të kontrollojë lojën dhe do të dërgojë ndryshimet që rezultojnë në para tek tregtari dhe lojtari shfaqet pas çdo hedhjeje. Tani për tani ne do të kemi vetëm bastin e kalimit të jetë 10 dollarë çdo herë, kështu që ne nuk duhet të komplikohemi akoma me lojtarin që ndryshon bastin e tij. Më vonë, pasi të kemi punuar mekanikët, do të shtojmë një kontrollues tjetër i cili do të jetë një mjeshtër shtesë i cili do të kontrollojë bastet dhe pagesat dhe rrotulluesi ynë i zareve do të mbetet një mjeshtër por i përdorur vetëm për hedhjen e zareve. Kjo do të na lejojë të futemi në arbitrazh TWI, përplasje dhe aspekte të tjera të rëndësishme të komunikimit serik kur keni shumë zotërinj dhe skllevër. Ne gjithashtu do të shtojmë një numër ekranesh të vetme 7-shifrore me butona shtypi nën to që do të na lejojnë të bastojmë në lloje të tjera të rrotullave, por gjithçka që do të vijë në mësimet e ardhshme. Tani për tani, ne thjesht duam rrotulluesin e zareve si mjeshtër, dhe dy ekranet si skllevër. Kur shtypim butonin, kodi do të vendosë nëse do të paguajmë një produkt natyror, do të marrim para nga një lojë me craps ose do të marrim para në një seri rrotullimesh "pikë" deri në fitore ose shtatë-dalje.

Le të shkruajmë së pari rutinat e skllevërve. Këto janë të thjeshta në atë që të gjithë ata do të bëjnë është të shikojnë linjën SDA për adresën e tyre, nëse thirren ata do të lexojnë numrin e ri për ta shfaqur dhe shfaqur atë. Kjo është e gjitha! Ata as nuk duhet të flasin përsëri me masterin pasi mjeshtri do të mbajë gjurmët e totalit të tyre dhe do të bëjë të gjitha llogaritjet e pagesës para se t'i përditësojë ato. Në mësimet e ardhshme do të kemi skllevër që i shkruajnë masterit (për shembull kur kemi ekrane të vetme 7-shifrore me butona shtypi për shumën e basteve, ata do të duhet t'i tregojnë masterit sa është vënë bast në çdo ekran dhe kështu ne drejtojuni atyre me një adresë + lexoni thirrjen me masterin në "modalitetin e marrësit kryesor"), por ne do ta arrijmë atë në kohën e duhur.

Tani për tani gjithçka nxitet nga shtypja e butonit të zareve e ndjekur nga një llogaritje ose shtytje e butonit të mëtejshëm dhe në fund një mesazh për secilën nga ekranet me totalin e tyre të ri. Do të ketë një test pas çdo pagese për të përcaktuar nëse lojtari ka fituar ose ka humbur, me fjalë të tjera, nëse paratë e shitësit bëhen zero pas një rrotullimi, ose nëse paratë e lojtarit bëhen zero pas një rrotullimi (as tregtari ose lojtari mund të dalin negativ pasi ata do të lejohen të vënë bast vetëm 10 dollarë ose çfarëdo që të mbetet nëse është më pak se 10 dollarë).

Pra, kështu do të funksionojë. Le të marrim kodim.

Hapi 4: Kodi Master i Komunikimeve

Kodi Master i Komunikimeve
Kodi Master i Komunikimeve

Tani mund të shkruajmë rutinën e komunikimit të rrotulluesit të zareve. Alsoshtë gjithashtu pothuajse identike me atë që kemi shkruar herën e kaluar, përveç se ne do të komunikojmë me dy skllevër të ndryshëm dhe jo vetëm me një. Vini re se për secilin nga skllevërit ne përdorim një adresë të ndryshme. Ju duhet ta modifikoni vetë kodin dhe pastaj thjesht ta provoni me secilën adresë dhe të siguroheni që ai punon ashtu si mësimi i fundit, përveç me çdo ekran të veçantë.

Unë do të bashkëngjit kodin për secilin komponent i cili thjesht tregon rezultatin e rrotullimit në mënyrë që të mund të përdoret për të bërë që ekranet të funksionojnë siç duhet dhe të kontrolloni instalimet elektrike.

Kodimi i lojës nuk paraqet asgjë të re për sa i përket komandave të gjuhës së asamblesë ose përbërësve të mikrokontrolluesit AVR dhe kështu që nuk ndihem sikur kam nevojë ta kaloj atë rresht pas rreshti. Ju me siguri keni vënë re se kur prezantojmë diçka të re, unë kaloj në secilën rresht në detaje të vogla deri në pikën që ju zemëroj nëse nuk ju vë në gjumë. Nga ana tjetër, unë nuk do ta bëj atë nëse nuk ka asgjë të re të prezantuar. Kështu është sot. Kështu që unë mendoj se ju jeni gati deri tani për të luajtur me kodin, lexoni kodin, analizoni kodin, kuptoni kodin, kritikoni kodin, tallni kodin dhe qeshni me djalin që ka shkruar kodin. Kështu që unë do t'ju lejoj të shkoni përpara dhe ta bëni atë. Almostshtë pothuajse e sigurt që do të gjeni shumë vende që mund t'i përmirësoni ose të paktën t'i thjeshtoni ato që kam shkruar.

Unë, si zakonisht, i kam bashkangjitur versionin përfundimtar të kodit për dy ekranet dhe aparatin e tharjes në hapin tjetër, së bashku me një video ku unë testoj atë.

Hapi 5: Kodi Final dhe Video

Unë kam bashkangjitur videon dhe 3 programet. Ju do të vini re se mund të rregulloni bastin dhe tregtarin fillestar dhe paratë e lojtarit në krye të programit me deklarata.equ.

Në tutorialin tjetër ne do të shtojmë aftësinë për të vënë bast për gjëra të ndryshme të cilat do ta bëjnë lojën më emocionuese. Gjëja interesante në lidhje me Gaforret moderne është se ju keni shumë mënyra të ndryshme për të vënë bast dhe përpiquni të maksimizoni shanset tuaja. Në fakt, Craps është loja me shanset më të larta në Kazino! … N ISE dini si ta luani atë. Nga ana tjetër, nëse nuk dini si të luani atëherë bëhet një nga lojërat me shanse më të ulëta.

Pasi të kemi më shumë gjëra për të vënë bast paratë tona, atëherë unë do të rris shumën totale të parave në lojë.

Unë duhet të jem argëtues!

Shihemi heren tjeter!

Recommended: