LEDDE landning ljus för Experimental Aircraft (3 / 7 steg)
Steg 3: PIC programmering
PIC programmet är enkel nog att även en novis som jag kunde få det gjort (med betydande plagiarization från Peter Shabino och andra - tack, Pete!)
Observera... Jag är inte en programmerare. Som programmerare säger vän ofta till mig "programmerare program - ingenjörer bara skriva koden"...
Först, här är den inkluderar:
/******************************************************************************/
/* Main Files to Include */ /******************************************************************************
/ PIC12F1501 Bit konfigurationsinställningar
"C" källa linjen config uttalanden
#include
#pragma config uttalanden bör föregå project-filen innehåller. Använda projektet uppräkningar i stället för #define för ON och OFF.
CONFIG1
#pragma config FOSC = INTOSC / / Oscillator urval bitar (INTOSC oscillator:-funktionen på CLKIN stift) #pragma config WDTE = OFF / av / Watchdog Timer (WDT inaktiverad)
#pragma config PWRTE = OFF / / Power-up Timer aktivera (PWRT inaktiverad)
#pragma config MCLRE = ON / / MCLR Pin funktion Välj (MCLR/VPP pin funktion är MCLR) #pragma config CP = OFF / / Flash Program kod minnesskydd (programminne kod skydd är inaktiverat)
#pragma config BOREN = OFF / av / Brown-out Reset (Brown-out Reset inaktiverad)
#pragma config CLKOUTEN = OFF / / klocka ut aktivera (CLKOUT funktionen är avaktiverad. I/o eller oscillator funktion på CLKOUT stift)
CONFIG2
#pragma config WRT = OFF / / Flash minne själv skriva skydd (skriva ut)
#pragma config STVREN = ON / / Stack Overflow/underflödet återställa aktiverar (Stack Overflow eller underflödet kommer att orsaka en återställning)
#pragma config BORV = LO / / Brown-out Reset spänning urval (Brown-out återställa spänning (Vbor), låg resa punkt markerad.)
#pragma config LPBOR = OFF / / lågenergi-brun ut återställa (lågenergi-BOR är inaktiverat)
#pragma config lägsta värdets princip = OFF / / Low-Voltage Programming aktiverar (hög spänning på MCLR/VPP måste användas för programmering)
OK, nästa, är här den "main.c":
/******************************************************************************/
/* Files to Include */ /******************************************************************************/
#if defined(__XC)
#include / * XC8 General inkluderingsfil * /
#elif defined(HI_TECH_C)
#include / * HiTech General inkluderingsfil * /
#endif "
#include / * uint8_t definition * /
#include / * sant/falskt definition * /
#include "system.h" / * System funkt/params, som osc/extrautrustning config * /
#include "user.h" / * användaren funkt/params, som InitApp *
******************************************************************************/
/ * Användaren globala variabeldeklaration * / / ***
* dvs uint8_t; *
******************************************************************************/
/* Main Program */ /******************************************************************************/
int loop;
void main(void)
{
/ * Konfigurera oscillator för enheten * /
ConfigureOscillator();
/ * Initiera I/O och kringutrustning för ansökan * /
InitApp();
TRISAbits.TRISA2 = 0; ställa in RA2 som en utgång
TRISAbits.TRISA4 = 1; ställa in RA4 som indata
ANSELAbits.ANSA4 = 0; att RA4 som en digital pin
While(1) {om (PORTAbits.RA4 == 1) / / är växla öppet?
{för (loop = 0; slinga < = 5; slinga = slinga + 1)
{
LATAbits.LATA2 = 0; Aktivera LED
wait_ms(3); vänta 100 ms
LATAbits.LATA2 = 1; stänga av det tillbaka
wait_ms(3); vänta 100 ms
}
wait_ms(50);
loop = 0;
}
annat
{
LATAbits.LATA2 = 0; Aktivera LED
}
}
}