Hur man programmerar en PIC mikrokontroller & läsa en kodare (6 / 7 steg)
Steg 6: programmering
Vid denna punkt, kommer vi att arbeta uteslutande med MPLAB X IDE. Kom igång genom att märka panelen med titeln projekt på vänster sida av fönstret MPLAB IDE. Från denna panel skapa en kod:
Högerklicka på mappen "källa" nedan projektet > New > C Main File
Känn dig fri att nämna det som du önskar ("Main" är bra) kommer du nu se att MPLAB X har skapat en huvudfil, syns i panelen center.
Kod: Vid tillämpningen av denna tutorial kommer jag att ge den nödvändiga koden, som du kan kopiera och klistra in den center-fönstret (efter utplånande all annan text i filen) för att ge dig en uppfattning om vad koden gör, har jag inkluderat en kort översikt nedan samt kommentarer inom den faktiska koden själv (inklippt nedan)
Översikt: Det finns ett par olika delar av kod för att programmera en PIC mikrokontroller, som beskrivs nedan.
Definiera uttalanden: Definiera uttalanden tillåta programmerare att använda ord som kan betyda något annat på datorn. Vi kan till exempel definiera ordet OFF för att betyda en binär '0'. Således även om vi ser ordet av, vilket gör koden lättare att förstå, datorn läser en binär '0'.
Med satser: Inkluderar uttalanden berätta kompilatorn att inkludera olika header-filer. Dessa externa filer kan bestå av filer som definierar input/output funktioner (stdlib.h) eller en mängd standard C funktioner (stdio.h), etc.
Pragman: Pragman används för att ange konfigurationen bitar på mikrokontroller som kontrollerar aspekter som oscillator urval, kod skydd, etc. Känn dig fri att kolla in konfiguration bitar att välja Fönster > PIC minne visningar > konfiguration bitar
Funktioner: Funktioner är delar av programmet som utför specifika uppgifter. Den huvudsakliga funktionen är där programmet startar utförande.
Program:
/********************************************************************
Hur du programmerar en PIC & läsa ett kodningsprogram
Senast reviderad: 1/3/14
Författare: Carson Miller
Skriven för: PIC18F4525 (ström Version)
*********************************************************************/
#define ingång 1
#define utgång 0
#define _XTAL_FREQ 4000000 //Used av makrot XC8 delay_ms(x)
PIC18F25K22 bitars konfigurationsinställningar
#include < xc.h > //Includes PIC hårdvara kartläggning
#include "GenericTypeDefs.h" //Includes standard variabeltyper
#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.
CONFIG1H
#pragma config OSC = INTIO7 / / Oscillator urval bits (intern oscillator block, CLKOUT funktion på RA6, port funktion på RA7)
#pragma config FCMEN = OFF / / felsäker klocka bildskärmen aktiverar bitars (felsäkra klocka Monitor inaktiverad)
#pragma config IESO = OFF / / interna och externa Oscillator övergången bitars (Oscillator övergången läge inaktiveras)
CONFIG2L
#pragma config PWRT = OFF / / Power-up Timer aktivera bitars (PWRT inaktiverad)
#pragma config BOREN = SBORDIS / / Brown-out Reset aktivera bits (Brown-out Reset aktiverad i hårdvara bara (SBOREN är inaktiverad))
#pragma config BORV = 3 / / brun ut återställa spänning bits (Minimum inställning)
CONFIG2H
#pragma config WDT = OFF / / Watchdog Timer aktiverar bitars (WDT aktiverad)
#pragma config WDTPS = 32768 / / Watchdog Timer Postscale Välj bitar (1:32768)
CONFIG3H
#pragma config CCP2MX = PORTC / / CCP2 MUX bitars (CCP2/o är multiplexed med RC1)
#pragma config PBADEN = ON / / PORTB a/d aktiverar bitars (PORTB < 4:0 > pins är konfigurerade som analoga ingående kanaler på Reset)
#pragma config LPT1OSC = OFF / / Low-Power Timer1 Oscillator aktiverar bitars (Timer1 konfigurerats för högre effektdrift)
#pragma config MCLRE = ON / / MCLR Pin aktiverar bitars (MCLR stift aktiveras; RE3 ingångsstift inaktiverad)
CONFIG4L
#pragma config STVREN = ON / / Stack Full/underflödet återställa aktiverar bitars (Stack full/underflödet kommer att orsaka Reset)
#pragma config lägsta värdets princip = OFF / / Single-försörjning ICSP aktiverar bitars (Single-försörjning ICSP aktiverad)
#pragma config XINST = OFF / / Extended Instruction in aktiverar bitars (instruktionsuppsättningar förlängning och indexerad adressering läge inaktiveras (Legacy läge))
CONFIG5L
#pragma config CP0 = OFF / / kod skydd bit (Block 0 (000800-003FFFh) inte koden-skyddade)
#pragma config CP1 = OFF / / kod skydd bitars (Block 1 (004000-007FFFh) inte koden-skyddade)
#pragma config CP2 = OFF / / kod skydd bitars (Block 2 (008000-00BFFFh) inte koden-skyddade)
CONFIG5H
#pragma config CPB = OFF / / Boot Block kod skydd bitars (Boot block (000000-0007FFh) inte koden-skyddade)
#pragma config CPD = OFF / / datan EEPROM koden säkringen bitars (Data EEPROM inte koden-skyddade)
CONFIG6L
#pragma config WRT0 = OFF / / skriva skydd bit (Block 0 (000800-003FFFh) inte skrivskyddad)
#pragma config WRT1 = OFF / / skriva skydd bit (Block 1 (004000-007FFFh) inte skrivskyddad)
#pragma config WRT2 = OFF / / skriva skydd bit (Block 2 (008000-00BFFFh) inte skrivskyddad)
CONFIG6H
#pragma config WRTC = OFF / / konfigurationen Register skriva skydd bit (konfigurationen register (300000-3000FFh) inte skrivskyddad)
#pragma config WRTB = OFF / / Boot Block skriva skydd bit (Boot Block (000000-0007FFh) inte skrivskyddad)
#pragma config WRTD = OFF / / EEPROM-skriva dataskydd bitars (Data EEPROM inte skrivskyddad)
CONFIG7L
#pragma config EBTR0 = OFF / / tabell Läs skydd bit (Block 0 (000800-003FFFh) inte skyddas från tabell läser i andra block)
#pragma config EBTR1 = OFF / / tabell Läs skydd bit (Block 1 (004000-007FFFh) inte skyddas från tabell läser i andra block)
#pragma config EBTR2 = OFF / / tabell Läs skydd bit (Block 2 (008000-00BFFFh) inte skyddas från tabell läser i andra block)
CONFIG7H
#pragma config EBTRB = OFF / / Boot Block tabell Läs skydd bit (Boot Block (000000-0007FFh) inte skyddas från tabell läser i andra block)
Dummy variabelinställningar
UINT avstånd = 0;
CHAR riktning = 0;
CHAR fel = 0;
void configure(void)
{
ADC Setup
ADCON1bits.PCFG = 1111; Stänger av alla analoga ingångar (se datablad s. 224)
Oscillator Setup
OSCCONbits.IRCF = 110. Uppsättningar oscillator 4 MHz
Avbryta installationen
INTCONbits.GIE = 1; Aktiverar alla omaskerade eller hög prioritet avbryter (beroende på IPEN)
INTCONbits.PEIE = 1; Gör alla omaskerade perifera avbryter eller låg prioritet avbrott (beroende på IPEN)
INTCONbits.INT0IF = 0; Rensar avbrott 0 flagga bit (måste ske innan du aktiverar avbrott)
INTCONbits.INT0IE = 1; Möjliggör INT0 externa avbrottet
INTCON2bits.INTEDG0 = 1; Uppsättningar externa avbryta 0 att avbryta på stigande kanten
RCONbits.IPEN = 0; Inaktiverar prioritetsnivåer på avbrott
TRISBbits.TRISB0 = ingång; Uppsättningar INT0 som indata
TRISBbits.TRISB1 = ingång; Uppsättningar INT1 som indata
}
void main)
{
configure();
While(1)
{
Programmet Loop
}
}
Huvudsakliga avbrottstjänstens rutin (ISR)
void avbrott ISR()
{
Kontrollera om det är avbrott 0
om (INTCONbits.INT0IF == 1)
{
avståndet ++;
INTCONbits.INT0IF = 0; Clear avbryta flagga
}
annat
fel = 1;
}