MicroSimon (6 / 7 steg)

Steg 6: Firmware design

För att göra spelet så enkelt som möjligt att förstå och förändra firmware är skriven rent i C med Hi-Tech C kompilatorn. PIC12F683 har bara 2K av programmet flash vilket innebär att du måste vara så effektiv som möjligt med koden så det passar i målenheten. Koden är uppdelad i moduler som varje behandlar olika maskinvarukomponenter för att den ska vara lätt förstod och ändras.

buttons.c:
Denna modul är ansvarig för att läsa knappen staten via bilder ADC. ADC läses och knappen intryckt bestäms med hjälp av ett litet antal möjliga inspänning för varje knapp. Koden ger också knappen debounce och se till att knappen är "positiv" och bullriga växlar inte resulterar i felaktiga avläsningar (som inte skulle vara roligt under din epic vinna spelet!).

charlieplex.c :
Modulen tillhandahåller charlieplexed LED kontroll som sätter PIC'S port riktningar och effekt för att att tända den korrekta lampan.

Sleep.c:
Den här modulen innehåller kommandon för att sätta bilden i lågenergi / viloläge.

Sound.c:
Denna modul innehåller funktioner som gör att ljudet ska vara aktiverat (vid en viss frekvens) och avstängd. Den innehåller också avbryta tjänsten begäran (ISR) funktionen som kallas med en timer1 baserade avbryta och växlar mellan utgångsstiftet på och av för att generera krävs ljudet.

Simon.c:
Den här modulen innehåller spelets tillståndsdator som avsöks av den huvudsakliga looping fungera varje 10 millisekunder. Spelet är implementerat som en tillfrågade tillståndsdator att tillåta exakt timing av spelet samtidigt som att undvika att använda avbrott (som skulle störa med ljud generation eftersom PIC12F inte har multi level prioriterade avbrott). Polling tekniken gör också PIC att ständigt läsa spelets knapplägen och utföra debounce utan att förhindra spelet från väntar frånslagningstider och användardata under spelet.

Själva spelet är baserat på det ursprungliga spelet 1 från MB elektronik Simon spelet. Spelet ger en ständigt ökande antalet färger i en sekvens som du upprepar för att vinna. Antalet färger i vinnande ordning bestäms av den valda kompetensnivå.

Main.c:
Modulen main.c initialises PIC klar för användning och sedan tillåter användaren att välja en krävs skicklighetsnivå innan du startar spelet. När start-knappen har tryckts jagar firmware"" lysdioderna för att indikera det väntar skicklighet nivå urval. Användaren väljer skicklighetsnivå 1-4 genom att trycka på den blå knappen för nivå 1, den röda knappen för nivå 2, den gröna knappen för nivå 3 eller den blå knappen för nivå 4.

Den viktigaste modulen ansvarar också för att generera ett slumptal som väljer nästa färg i sekvensen. Detta görs med hjälp av enkel teknik för kontinuerligt öka en räknare för mellan 1 och 4 som spelet poll öglor. Efter spelet läser räknaren när användaren trycker på en knapp är resultatet ett slumptal att plockas varje gång. Eftersom tiden mellan att trycka på reset-knappen och PIC att vara redo är konstant, används det ursprungliga skicklighet nivå urvalet att få slumpmässiga första färgen för spelet.

Se Steg
Relaterade Ämnen