Stap 3: PIC Programmeren
De PIC programma is eenvoudig genoeg dat zelfs een neofiet als ik kon krijgen het gedaan (met belangrijke plagiarization van Peter Shabino e.a. -Bedankt, Pete!)
Let op:... Ik ben geen programmeur. Als een programmeur vertelt vriend vaak me, "programmeurs program - ingenieurs alleen code schrijven"...
Eerst, hier zijn de omvat:
/******************************************************************************/
/* Main Files to Include */ /******************************************************************************
/ PIC12F1501 configuratie-bits instellingen
'C' assembleertaalinstructies lijn config
#include
#pragma config verklaringen moeten voorafgaan aan projectbestand bevat. #define project enums gebruiken voor ON en OFF.
CONFIG1
#pragma config FOSC = INTOSC / / Oscillator selectie Bits (INTOSC oscillator: I/O functie op CLKIN pin) #pragma config WDTE = OFF / / Watchdog-Timer Enable (WDT uitgeschakeld)
#pragma config PWRTE = OFF / / Power-up Timer Enable (PWRT uitgeschakeld)
#pragma config MCLRE = ON / / Picssoftware Pin functie selecteren (Picssoftware/VPP pin functie is Picssoftware) #pragma config CP = OFF / / Flash programma geheugen Code bescherming (programmageheugen code bescherming is uitgeschakeld)
#pragma config BOREN = OFF / / Brown-out Reset Enable (Brown-out Reset uitgeschakeld)
#pragma config CLKOUTEN = OFF / / klok uit inschakelen (CLKOUT functie is uitgeschakeld. I/o- of oscillator functie op de CLKOUT-pin)
CONFIG2
#pragma config WRT = OFF / / Flash geheugen zelf schrijven bescherming (schrijven uit)
#pragma config STVREN = ON / / Stack Overflow/Underflow opnieuw inschakelen (Stack overloop of Underflow zal veroorzaken een Reset)
#pragma config BORV = LO / / Reset van de Brown-out Voltage selectie (Brown-out Reset spanning (Vbor), lage reis-punt geselecteerd.)
#pragma config LPBOR = OFF / / Low-Power Brown Out Reset (Low-Power BOR is uitgeschakeld)
#pragma config LVP = OFF / / Low-Voltage Programming inschakelen (hoog-voltage op Picssoftware/VPP moet worden gebruikt voor het programmeren)
OK, volgende, is hier de "main.c":
/******************************************************************************/
/* Files to Include */ /******************************************************************************/
#if defined(__XC)
#include / * XC8 generaal Include-bestand * /
#elif defined(HI_TECH_C)
#include / * HiTech Include-bestand voor algemene * /
#endif '
#include / * voor uint8_t definitie * /
#include / * voor waar/onwaar definitie * /
#include "system.h" / * systeem funct/params, net als osc/randapparaat config * /
#include "user.h" / * gebruiker funct/params, zoals InitApp *
******************************************************************************/
/ * Gebruiker globale variabelen declareren * / / ***
* d.w.z. uint8_t; *
******************************************************************************/
/* Main Program */ /******************************************************************************/
int de lus;
void main(void)
{
/ * De oscillator voor het apparaat configureren * /
ConfigureOscillator();
/ * I/o en randapparatuur voor toepassing initialiseren * /
InitApp();
TRISAbits.TRISA2 = 0; RA2 instellen als uitgang
TRISAbits.TRISA4 = 1; RA4 instellen als input
ANSELAbits.ANSA4 = 0; RA4 instellen als een digital pin
while(1) {als (PORTAbits.RA4 == 1) / / Is schakelaar open?
{voor (lus = 0; lus < = 5; lus = lus + 1)
{
LATAbits.LATA2 = 0; LED inschakelen
wait_ms(3); wachten 100 ms
LATAbits.LATA2 = 1; het terug uitschakelen
wait_ms(3); wachten 100 ms
}
wait_ms(50);
lus = 0;
}
anders
{
LATAbits.LATA2 = 0; LED inschakelen
}
}
}