En LED Tärning med en PIC 16F84 (eller 16F88) (6 / 12 steg)

Steg 6: Avbryter för att spara energi

Som tidigare nämnts, kommer mikroprocessor att spendera större delen av sin tid i viloläge. (Speciellt när det sitter majestätiskt på spiselkransen!). En intern oscillator stoppas i viloläge, och enheten förbrukar i princip ingen ström.

För att vakna upp från sova sätt, måste vi ha ett avbrott inträffar. Avbrott kan orsakas från olika källor, men de signalera alltid några yttre förändring.

LED Tärning projektet som vi bygger har tryckknapp ansluten till stycke 1 av Port B (PB0). Detta stift är också funktioner som "avbryta" indata. När spänningsnivån på detta stift ändras, skapas ett avbrott, orsakar PIC att stoppa vad det gjorde, och göra något annat. Det är detta avbrott som orsakar PIC att vakna upp från sova sätt.

Avbrott i PIC kan vara "globala" i naturen (Global Interrupt Enable [GIE] lite set) eller lokal. I vårt exempel vill vi fortsätta köra instruktioner direkt efter kommandot "sleep", så vi måste se till att GIE lite är tydlig. Globala avbryter orsaka programkörningen till gren till plats 4, som är användbart för en mer traditionell vektoriserade avbrott strategi som vi kommer att täcka i senare artiklar.

Kod för att implementera funktionen avbrott skulle se ut;

MAINLOOP

MOVFW PortB; göra en dummy läsa på port B

MOVLW B '0010000'; Lämna den GIE lite off, och aktiverar den

; PB0 avbryta bit

MOVWF INTCON; och ladda upp registret avbryta kontroll

SÖMN; vänta lugnt för ett avbrott...

MOVLW B '00000000'; Inaktivera avbrott.

MOVWF INTCON

; Fortsätta kodkörningen (där vi vänta på knappen att släppas...

;

;

;

; eventualy, vi goto MAINLOOP, där vi gör det igen...

En sak att notera är att när vi har fått ett avbrott, vi vakna, och omedelbart inaktivera eventuella ytterligare avbrott. Bara med oss människor finns det inget mer irriterande att avbryts medan du har avbrutits. Flera nivåer av avbrott kan orsaka oväntade programfel, så vi stannar någon ytterligare avbrott inträffar.

Nu när vi har undersökt hur man genomför input, output, Slumptalsgenerering och avbrott, kan vi knyta allt detta tillsammans, och producera den kod som faktiskt kör tärningarna.

Det finns en liten mängd "lim" runt dessa funktioner för att producera faktiska kör kod. Jag rekommenderar att du skaffar programtablåer, och studera dem för mer information.

Om du studera listor, kan du finna att det finns snabbare, mer elegant sätt att göra det som har gjorts. Kom ihåg att det finns kommersiella realiteter om den tid på att producera en särskild lösning, och att några gånger, gör något "ingen hjärnan", långt är faktiskt snabbare att utveckla. Detta är ett inbyggt system, och i ett enkelt system som detta, är betoningen på att producera ett resultat, inte på att producera de mest eleganta koden tillgänglig. (Har du faktiskt tittat på koden i din mikrovågsugn controller...)

Se Steg
Relaterade Ämnen

ATtiny85 LED Tärning

Idag ska jag visa dig mitt nya projekt - LED Tärning med en ATtiny85.När du trycker på knappen, det genererar ett antal slumpmässigt och visar den som en dö.Steg 1: material Delar:ATtiny85 (du kan också använda ATtiny45 och ATtiny25)DIP8 uttag7 gröna...

En CharliePlexed RGB LED Tärning

detta Instructable kommer att visa hur man gör en färgstark tärning med hjälp av charlieplexing med RGB-lysdioder.Projektet använder 7 RGB lysdioder ordnade i form av tärningarna. Varje RGB LED har tre separata lysdioder inuti så som gör totalt 21 ly...

CHR'S 8 X 8 X 8 LED Cube Revisited med förbättringar!

Se steg 17 för mer information angående musik inmatningsläge för icke-RAMP brädor.Det finns nu 7 musik lägen i bokförda koden, och jag söker fler idéer för animeringar eller musik utlöste effekter!HOPPA direkt till steg 1 om du bara vill få till de f...

555 RGB Rainbow LED Driver (inte med en 4029)

| A_Teacher |OK, är så såvitt jag kan säga, detta ett unikt varumärke NEW design.Ringer alla rymdkadetter: Som ett sätt att motivera folk att göra projektet, för närvarande ger jag bort en 3 månaders Instructables Pro medlemskap till den första perso...

ATtiny85/45/25 LED Tärning (Super enkelt och billigt!)

Om du har tittat på min 5 LED ATtiny85 POV display, vi programmerade ATtiny med Arduino. (Om du inte har sett det, klicka här) Vi kommer att göra samma sak för detta LED Tärning projekt.Totalt delar kostnaden för projektet är om $5-$10. (Inte inklusi...

Bluetooth kontrollerad LED bärbar med Intel Edison

Har du någonsin föreställt en värld där du kan ändra mönster av en klänning med ett tryck på knappen? Eller en till kunna ändra höjd på en fåll med en känga av du finger? Tekniken möjliggör kontroll och anpassning på platser där du inte brukar. Telef...

Hur man gör en elektronisk tärning med ARDUINO

Hey guys vi är tillbaka med en annan cool Arduino projekt för dig. I detta Instructable kommer jag visa dig hur man gör en elektronisk tärning med Arduino. Jag vet att du kommer att gilla den. Titta på videon.Steg 1: komponenter1. LED (7)2. IC 4017 (...

Ghettofabulous LED spårning bord på en Budget

någonsin vill återskapa en Albrecht Dürer, Davinci eller spåra några av dina favorit bilder, botanik pressningar eller ursprungliga konstverk?Ja, då är Ghettofabulous LED spåra tabellen på en Budget för dig!Jag ville skapa en kopia av en av mina favo...

RGB LED Mood taklampa med hackad IR-fjärrkontroll

detta instructable dokument utformning och konstruktion av en gigantisk RGB LED taklampa, kontrolleras av en hacka GE fjärrkontroll.Efter att bygga ett par mindre RGB lampor, bestämde jag mig för jag ville se hur långt jag kunde ta konceptet. Kontrol...

Elektronisk tärning med Attiny84

Detta projekt är en elektronisk tärning med hjälp av ett Attiny84 chip. Attiny84 fungerar som en Arduino utom det en 14 pin chip och är har mindre minne och det finns ingen inbyggd programmerare. Jag kommer att visa hur man lägger upp ett program med...

GÖRA en ALTOIDS liten USB LED testare / minne (med justerbar spänning)

jag har alltid velat göra något med en alotids liten väska men jag kunde aldrig lista ut vad tills nyligen! Detta täcker hur man gör en LED testare (med spänning urval) / flash-enhet. Den använder usb som kraftkälla (5 volt) och det finns två alterna...

Arduino: Elektronisk tärning (med slumptal)

detta instructable visar dig hur man gör en elektronisk tärning med minimal erfarenhet med hjälp av 7 lysdioder, motstånd, hoppare ledningar, och naturligtvis den arduino (eller arduino klon). Jag skrev detta instructable för alla att enkelt följa me...

LED Strip styrenhet med LED Amp + Arduino

Glöm DIY LED drivers med mosfet transistorer! Det är extremt enkelt att köra hög driv LED-strips med Arduino till låg kostnad utan att gå in för mycket kretsar. Hemligheten är billigt mini LED förstärkare.Detta instructable är bara om körning LED str...

Designa för Ponoko laserskärning med SketchUp och Inkscape (en studie i kuber)

detta Instructable kommer att diskutera praktiska frågor av de mönster som presenteras i SketchUp, Inkscape och Ponoko laserskärning. Du kommer att visas framgångar och misslyckanden (det är ingen mening i att göra mitt misstag - jag kan göra tillräc...

24 Watt LED Grow Light med ljusstyrka

mat växer är en av mina favorit hobbies eftersom jag är ett stort fan av ekologiska livsmedel och sunda matvanor. Detta Instructable visar dig hur man bygger en LED grow light med röd/blå ljusstyrka kontroller efter växande behov och tillåta dig att...

Bluetooth trådlös spänning Meter med Wiimote + Pic Chip + AutoIt

i denna tutorial jag ska visa dig hur du kan skicka spänningsvärden till datorn med en Pic chip, Wiimote, och Autoit3 skriptspråk. Processen fungerar genom att binda en pic chip till knappen kuddar av en wiimote. Sedan använda pic marker Analog till...

LED Steampunk lampa med gamla glödlampor

I detta instructable jag ska visa dig hur man gör en LED Steampunk lampa med gamla glödlampor.Jag ville göra en Steampunk lampa av gamla glödlampor för en lång tid men jag var alltid upptagen med andra projekt. Nyligen fick jag slutligen till det gen...

8 x 40 LED matris klocka med kalender med fjärrkontrollen

Idag ska jag visa hur man gör rullning och animerade LED matris klocka med kalender för arduino. Detta projekt har följande funktionerVad är nytt i Version 2.0Extra IR-fjärr baserade justera tid/datumSmidig animationMånga buggfixar i programvaraVersi...

Ren binär LED väggklocka med Arduino

Min binära Väggklocka är inspirerad från många binära klockor jag hittade på InstructablesLänkar:Lilypad Arduino klocka:Binär klocka:Plus några andra binär klocka instructables.Men...Vad jag fann saknas i dem var omfattningen och storleken på display...