Stap 1: BluBerry / DEVCC Hallo wereld
Hardware eerste
Voor de toepassing van expedience 'm I gonna veronderstellen dat u het ProtoShield hebben samengesteld. Zoals aangetoond in de beelden, omvat het schild twee LED's die kunnen worden aangesloten op de relevante poorten.
Invoegen van de DEVCC Proto-Shield de RB1 V18Connect DEVCC te 4Connect RB0 2
Code voor 'Hallo wereld'
Het hello world project is meestal een knipperend led, het interval is ingesteld zodat een timer wordt gebruikt om te schakelen van de aan / uit staat van de led. Er zijn een aantal manieren instellen en schakelt u de LED en ze worden hieronder besproken.
Het eenvoudigste is om de output op zodat de LED verlicht, start de timer en wachten op de timer af te tellen. Schakel de output en wacht u tot de timer opnieuw uitvoeren en het proces opnieuw starten wanneer de timer is verstreken.
Het idee is het produceren van een vierkante uitvoer Golf van taakcyclus van 50%, zodat u een uniform on / off staat hoeft. De tweede manier, die een beetje meer programmering nodig weet hoe XOR (exclusieve of) de output zodat het knevels. Het voordeel hier is minder coderegels geplaatst, waardoor het intuïtiever en gemakkelijker te lezen
De LED zal twee staten hebben in of uit 0 of 1. Als de LED 0 XOR met 1 is, dan verandert de LED staat op 1 of op. Wanneer de LED brandt of 1 XOR met 1 het knevels op 0.
In code zou hebt u het volgende:
Flash() {}
PORTB. B0 = PORTB. B0 ~ 1;
Delay_MS(500); 1 tweede puls, d.w.z. halve seconde op en halve seconde af
}
while(1) {}
Flash();
}
Met andere woorden [New LED State] = [huidige LED State] XOR 1. De bewerking schrijft automatisch de waarde terug naar de pin.
U zult merken dat het proto-Schild beschikt over twee LED's, dus onze volgende stap is om ze afwisselend in-of uitschakelen. We zullen de code hierboven op te nemen van een tweede uitgang aanpassen. Ik heb PORTB geselecteerd. B1 als de tweede uitgang, maar dit is ingesteld op 1, dat wil zeggen het brandt als de PIC wordt opgestart terwijl PORTB. B0 is uitgeschakeld. Wanneer de code cycli zal de twee LEDs afwisselend verlicht worden.
Knevels LEDs
Flash() {}
PORTB. B0 = PORTB. B0 ~ 1;
PORTB. B1 = PORTB. B1 ~ 1;
Delay_MS(500); 1 tweede puls, d.w.z. halve seconde op en halve seconde af
}
Zet apparaat
Startup() {}
ANSELB = 0X00; Hiermee stelt u alle ingangen naar digitaal
TRISB = 0XFC; Sets
PORTB = 0X0; Hiermee wist u alle uitgangen op '0'
PORTB. B1 = 1; Sets bit 1 op hoog
}
Hoofdprogramma
Void main() {}
Startup();
while(1) {}
Flash();
}
}
Analyse en eigenaardigheden
De gepresenteerde informatie is te helpen bij problemen schieten en inzicht in hoe dingen werken.
Analoge ingangen
De nieuwere foto's hebben vele functies met dezelfde pincode multiplexed. Een van de eenvoudigste van dit is waar een digital PIN deelt dezelfde locatie als een analoge ingang. Standaard, wanneer de PIC wordt gestart, de analoge perifere functionaliteit gedeeld met de pincode is standaard beschikbaar en heeft voorrang op de digitale functionaliteit. Vanwege dit als u geen de analoge ingangen hebben, moeten ze worden uitgeschakeld. Dit wordt gedaan door te schrijven naar het register van de ANSELX. Vervang de X voor de poort bijvoorbeeld poort B die ANSELB is.
Tenzij de ANSELB of ANSELX registers zijn geconfigureerd, in voorkomend geval treedt resultaten waar de poort niet reageert zoals verwacht. Ervoor zorgen dat de registers van de ANSELx correct zijn geconfigureerd.
Worden afgerond
De hier beschreven project toont een alternatieve manier van 'testen' dat uw PCB werkt. Het is een geweldige tutorial type project om te komen tot aanpakken een paar aspecten van het gebruik van foto's. De codevoorbeelden kunnen een enkelvoudige of meervoudige LEDs flash als uw project zich uitbreidt, gewoon toevoegen of verwijderen van pinnen uit uw code worden gebruikt.
[E]