MicroSimon (6 / 7 stap)

Stap 6: Firmware ontwerp

Om het spel zo eenvoudig mogelijk te begrijpen en veranderen van de firmware is geschreven zuiver in C met behulp van de Hi-Tech C compiler De PIC12F683 heeft slechts 2K van programma flash, wat betekent dat je moet wel zo efficiënt mogelijk met de code om ervoor te zorgen dat het zal passen in het doelapparaat. De code bestaat uit modules die elk betrekking hebben op de verschillende hardwareonderdelen zodat het gemakkelijk kan worden begrepen en gewijzigd.

buttons.c:
Deze module is verantwoordelijk voor het lezen van de status van de knop via de ADC PICs. De ADC wordt gelezen en de ingedrukte drukknop is bepaald met behulp van een kleine reeks van mogelijke ingangsspanning voor elke knop. De code biedt ook knop ontdendering in- en uitschakelen om ervoor te zorgen dat de actie knop is 'positief' en lawaaierige schakelaars niet leiden tot valse lezingen (die niet zou leuk tijdens uw epos spel winnen!).

charlieplex.c :
Deze module biedt de charlieplexed LED controle waarin de foto's haven richtingen en macht output om de juiste LED licht.

Sleep.c:
Deze module bevat de opdrachten om de PIC in de energiebesparende slaapstand.

Sound.c:
Deze module bevat functies waardoor het geluid (met een opgegeven frequentie) worden ingeschakeld en uitgeschakeld. Het bevat ook de interrupt service aanvraag (ISR) functie die wordt aangeroepen met behulp van een gebaseerd timer1-interrupt en knevels de uitgang-pins in- en uitschakelen voor het genereren van het gewenste geluid.

Simon.c:
Deze module bevat van het spel staat-machine die is gepolst door de belangrijkste looping functie elke 10 milliseconden. Het spel is geïmplementeerd als een polled staat-machine om nauwkeurige timing van het spel terwijl vermijden met behulp van interrupts (die zou interfereren met de goede generatie sinds de PIC12F geen multi niveau prioritaire interrupts heeft). De polling techniek laat ook toe de PIC voortdurend lezen van het spel knoptoestanden en ontdendering uitvoeren zonder het wachten voor time-outs en input van de gebruiker tijdens het spel van het spel verhinderen.

Het spel zelf is gebaseerd op het originele spel 1 uit het spel MB elektronica Simon. Het spel uitgangen een steeds toenemend aantal kleuren in een reeks die u herhalen moet om te winnen. Het aantal kleuren in de winnende reeks wordt bepaald door het geselecteerde vaardigheidsniveau.

Main.c:
De module main.c vooruitgangsbalk de PIC klaar voor gebruik en vervolgens kan de gebruiker een vereiste vaardigheidsniveau selecteert voordat u begint het spel. Zodra de startknop heeft gedrukt jaagt de firmware' ' de LEDs om aan te geven dat is het wachten op vaardigheid niveau selectie. De gebruiker selecteert vaardigheidsniveau 1 tot en met 4 door op de blauwe knop voor niveau 1, de rode knop voor niveau 2, de groene knop voor niveau 3 of de blauwe knop voor niveau 4.

De belangrijkste module is ook verantwoordelijk voor het genereren van een willekeurig getal dat de volgende kleur in de reeks selecteert. Dit wordt gedaan met behulp van de eenvoudige techniek van een teller tussen 1 en 4 als de game poll lussen continu te verhogen. Aangezien het spel de teller gebaseerd leest op wanneer de gebruiker op een knop is het resultaat een willekeurig getal elke keer worden opgenomen. Aangezien de tijd tussen het indrukken van de reset-knop en de PIC wordt klaar constant is, wordt de eerste vaardigheid niveau selectie wordt gebruikt om de willekeurige eerste kleur voor het spel.

Gerelateerde Artikelen