Een LED dobbelsteen met behulp van een PIC 16F84 (of 16F88) (6 / 12 stap)

Stap 6: Onderbreekt om energie te besparen

Zoals eerder vermeld, zullen de microprocessor besteden het merendeel van zijn tijd in de slaapmodus staat. (Vooral wanneer het is zittend majestueus op de schoorsteenmantel!). In de slaapstand staat, de interne oscillator is gestopt, en het apparaat verbruikt in principe geen stroom.

Om te ontwaken uit de slaapstand, moeten we hebben een 'onderbreken' optreden. Interrupts kunnen uit allerlei bronnen worden veroorzaakt, maar ze altijd enkele externe verandering signaal.

De LED Dice-project dat we aan het opbouwen zijn heeft de drukknop verbonden met bit 1 van poort B (PB0). Deze pin is ook functies als input 'onderbreken'. Wanneer het spanningsniveau op deze pin verandert, wordt een interrupt gegenereerd, waardoor de PIC om te stoppen met wat het deed, en iets anders te doen. Het is deze interrupt die zorgt ervoor dat de PIC om uit zijn slaapstand wakker te worden.

Interrupts in de PIC kunnen 'globaal' in de natuur (Global Interrupt Enable [GIE] bit set), of plaatselijk zijn. In ons voorbeeld zouden we graag blijven uitvoeren van instructies onmiddellijk na de opdracht 'slaap', dus we moeten ervoor zorgen dat de GIE bit duidelijk is. Global interrupts veroorzaken de uitvoering van het programma naar tak naar locatie 4, die is handig voor een meer traditionele vectored interrupt-benadering die wij in later artikelen zullen behandelen.

Code om de interrupt-functionaliteit te implementeren zou uitzien;

MAINLOOP

MOVFW PortB; doen van een dummy lezen op poort B

MOVLW B '0010000'; Laat de GIE beetje off, en in staat stellen de

; PB0 onderbreken bits

MOVWF INTCON; en laad-up van het register van de control Interrupt

SLAAP; Wacht rustig op een interrupt...

MOVLW B "00000000"; interrupts uitschakelen.

MOVWF INTCON

; Blijven tot uitvoering van code (waar we wachten op de knop worden vrijgegeven...

;

;

;

; eventueel, we goto MAINLOOP, waar we het doen allemaal weer...

Een ding om op te merken is dat zodra we een interrupt hebben ontvangen, we wakker en onmiddellijk verdere interrupts uitschakelen. Alleen met ons mensen is er niets meer irritant dat wordt onderbroken terwijl u hebben onderbroken. Meerdere niveaus van interrupts kunnen leiden tot onverwachte programmafouten, dus we verdere interrupts voorkomen stoppen.

Nu dat we hebben onderzocht hoe de uitvoering van de input-, output-, willekeurig nummer generatie- en interrupts, kunnen we dit alles samen te binden, en produceren van de code die de dobbelstenen daadwerkelijk wordt uitgevoerd.

Er is een kleine hoeveelheid 'lijm' rond deze functies om werkelijke lopende code te produceren. Ik adviseer dat u verkrijgen van de programma-aanbiedingen, en ze te voor meer informatie bestuderen.

Als je de aanbiedingen studie, kan je zijn er sneller, elegantere manieren om te doen wat er is gedaan. Vergeet niet dat er commerciële realiteit dat de tijd doorgebracht op het produceren van een bepaalde oplossing, en dat sommige tijden, iets doen de 'no brain", lange weg is eigenlijk sneller te ontwikkelen. Dit is een embedded systeem, en een eenvoudig systeem als dit, de nadruk ligt op het produceren van een resultaat, niet op het produceren van de meest elegante code beschikbaar. (Heb je eigenlijk gekeken de code in uw magnetron-controller...)

Gerelateerde Artikelen

LED kerstkaarten met behulp van PIC 10F200

LED kerstkaarten met behulp van PIC 10F200

dit is een instructable over het bouwen van een LED Kerstkaart met behulp van de PIC 10F200 microcontroller.Aangezien deze PIC zes pinnen heeft en de grootte van een SMD-transistor is, het is ideaal voor low-profile toepassingen en kan gemakkelijk wo
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

Dit instructable is een eenvoudige tutorial uitleggen hoe de controle van één LED met Android's Bluetooth.U moet:Arduino UNOWeerstanden 300Ω (3 x)Weerstand 150ΩLEDJumpers;Bluetooth-Module (HC-06/andere);Android telefoon;SPP Bluetooth Apk (unWired Lit
Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Ik wilde voor de afgelopen paar maanden die ik aan een project kinect gewerkt heb gemaakt van een led outfit dat gereageerd op de bewegingen van de drager. Ik heb tot nu toe alleen de armen gedaan, en er zijn enkele problemen die moeten worden uitgew
RGB LED Tutorial (met behulp van een Arduino) (RGBL)

RGB LED Tutorial (met behulp van een Arduino) (RGBL)

LED's zijn geweldig. Maar er een punt waar het opvlammen eenvoudigweg niet voldoende is bij elk project komt. Voor deze gevallen een RGB (rood, groen, blauw) is LED het antwoord.Elke kleur gloed met een RGB LED zult u kunnen tot uw hartje begeert.Bij
Bouwen van een Bluespec LED controller met behulp van Connectal Build

Bouwen van een Bluespec LED controller met behulp van Connectal Build

Deze tutorial wordt uitgelegd hoe u de dienst van het publiek Connectal te bouwen om te bouwen en simuleren van een toepassing met hardware en software componenten die zijn geschreven in BSV en C++ met behulp van het Connectal-kader.Wij gaan ervan ui
Een LED Menorah met behulp van Chibitronics Circuit Stickers

Een LED Menorah met behulp van Chibitronics Circuit Stickers

Gehost in December onze hackerspace, Crash ruimte in Culver City, een Instructables bouwen nacht met Chibitronics Circuit Stickers. Met Channukah om de hoek, ik dacht dat een LED menora zou een perfect project om te zien wat ik kon maken met de zelfk
Een high-power LED zaklamp met behulp van een enkele AA-batterij

Een high-power LED zaklamp met behulp van een enkele AA-batterij

dit ontwerp hoogrenderende kan power LEDs op 100mA stroom en is niet veel groter dan de batterij die bevoegdheden. Het unieke circuit gebruikt 2 algemeen beschikbare transistoren (BC327 en BC337) in een oscillator te stimuleren de 1,2 of 1,5 volt uit
Multi-Color LED Lamp met behulp van een 8-kanaals LED Controller v.3

Multi-Color LED Lamp met behulp van een 8-kanaals LED Controller v.3

ik wilde om te experimenteren met het gebruik van verschillende kleuren LEDs, dan de standaard RGB, Multi-Color om effecten te creëren in een functionele lamp.Deze lamp maakt gebruik van cyaan, Magenta, geel, roze, Aqua-groen, en blauw 5mm LED's same
3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

3 x 3 x 3 led kubus met behulp van een 555 timer en een scala van 4020 shift IC - geen programmering (voor de complete beginner zoals ikzelf)

zien van een video van een 8 x 8 x 8 led kubus op you-tube, leidde me naar de instructables website voor de eerste keer, nu ik ben verslaafd. Echter had ik of moet ik zeggen hebben een fundamenteel probleem absoluut geen ervaring of kennis van elektr
1.5V LED Flasher met behulp van een oude klok

1.5V LED Flasher met behulp van een oude klok

Hi... Dit is mijn eerste instructable! Ik had al knutselen met elektronica sinds mijn kindertijd... Ik ben nu een arts, maar ik nog steeds liefde gebouw en verkennen van schakelingen en leren hoe het spul werkt...LEDs oplichten niet in 1.5V meestal a
Apple-stijl LED pulserende met behulp van een MCU $1,30

Apple-stijl LED pulserende met behulp van een MCU $1,30

de Atmel ATTiny85 chip is een 8-pins MCU dat is helemaal geweldig.  Als je hebt geprogrammeerd met de grotere jongens (de ATMega serie), dit een leuk avontuur zijn - u bent beperkt in het aantal output pinnen, maar een creatief ontwerp geeft ons een
Multifunctionele LED spel met behulp van een ATmega32 Microcontroller

Multifunctionele LED spel met behulp van een ATmega32 Microcontroller

Ten eerste zijn mijn antwoorden op de Make-To-Learn wedstrijd:Wat heeft u te maken?Ik maakte een multifunctionele LED matrix-programma, zoals mijn vorige met Arduino UNO, maar dit keer maakte ik het met een ATmega32 microcontroller. Ik gebruikte rege