DEVCC Hej världen (1 / 1 steg)
Steg 1: BluBerry / DEVCC Hej världen
Hårdvara första
Vid tillämpningen av egennytta ska jag anta att du har samlat på ProtoShield. Som visas i bilderna, ingår skölden två lysdioder som kan anslutas till de berörda hamnarna.
Infoga den DEVCC Proto-skölden DEVCC V18Connect RB1 till 4Connect RB0 till 2
Kod för "Hello World"
Hej världen projektet är vanligtvis ett blinkande led, intervallet är inställd så att en timer används för att växla på / av-läget för led. Det finns ett antal sätt att ställa in och rensa LED och de diskuteras nedan.
Det enklaste är att utgången på så att lampan tänds, starta timern och vänta på timern att räkna. Rensa utdata och sedan vänta på timern springa igen och när timern löpt starta om processen.
Tanken är att producera en fyrkantig utdata våg av 50% intermittens, så att du har en enhetlig på / av staten. Det andra sättet som kräver lite mer programmering vet hur är att XOR (uteslutande eller) produktionen så att den växlar. Fördelen här är färre rader kod, vilket gör det mer intuitivt och lättare att läsa
LED kommer att ha två stater antingen på eller av 0 eller 1. När lampan är 0 XOR med 1, sedan ändrar LED tillstånd till 1 eller på. När lampan är på eller 1 XOR med 1 det växlar till 0.
I koden skulle du ha följande:
Flash() {
PORTB. B0 = PORTB. B0 ~ 1;
Delay_MS(500); 1 andra puls, dvs en halv sekund på och hälften andra off
}
While(1) {
Flash();
}
Med andra ord [New LED stat] = [nuvarande LED stat] XOR 1. Verksamheten skriver automatiskt värdet tillbaka till stiftet.
Du kommer att märka att den proto skölden har två lysdioder, så vårt nästa steg är att få dem att växla växelvis. Vi kommer att ändra koden som anges ovan till att omfatta en andra utgång. Jag har valt PORTB. B1 som andra utdata, men detta är satt till 1 dvs det är på när PIC startar upp medan PORTB. B0 är avstängd. När koden cykler kommer att två lysdioderna vara upplyst växelvis.
Växlar lysdioder
Flash() {
PORTB. B0 = PORTB. B0 ~ 1;
PORTB. B1 = PORTB. B1 ~ 1;
Delay_MS(500); 1 andra puls, dvs en halv sekund på och hälften andra off
}
Sätter upp enheten
Startup() {
ANSELB = 0X00; Anger alla ingångar till Digital
TRISB = 0XFC; Uppsättningar
PORTB = 0X0; Rensar alla utgångar på '0'
PORTB. B1 = 1; Uppsättningar bit 1 till hög
}
Huvudprogrammet
Void main () {
Startup();
While(1) {
Flash();
}
}
Analys och egenheter
Den information som presenteras är att bistå i trubbel skytte och förstå hur saker fungerar.
Analoga ingångar
Nyare bilder har multiplexed många funktioner med samma PIN. En av de enklaste av dessa är där en digital PIN delar samma plats som en analog ingång. Som standard när PIC startar, analoga perifera funktionalitet delade med PIN-koden är som standard tillgängligt och har företräde framför de digitala funktionerna. På grund av detta om du har ingen användning för de analoga ingångarna, måste de därför att inaktiveras. Detta görs genom att skriva till registret över ANSELX. Ersätt X för porten till exempel PORT B som är ANSELB.
Såvida inte ANSELB eller ANSELX registren har konfigurerats, i förekommande fall uppstà ¥ resultat där porten inte svarar som förväntat. Se till att register som ANSELx har konfigurerats korrekt.
Avrundning av
Projektet beskrivs här visar ett alternativt sätt för "test" att din PCB fungerar. Det är en bra tutorial typ projekt att komma tillrätta med några aspekterna av att använda bilder. Kodexemplen kan användas flash en enstaka eller flera lysdioder som projektet expanderar, bara lägga till eller ta bort stiften från din kod.
[E]