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;
}

Se Steg
Relaterade Ämnen

Hur man programmerar en PIC 18F2550 eller 18f4550 med Arduino UNO

här är vår vår första tutorial på Instructable så vara eftergivna. Denna handledning visar metoden att använda en Arduino UNO ombord som PIC mikrokontroller programmerare. Denna metod har testats med PIC 18F2550 18f4550 men kan användas för att progr...

Hur man programmerar ATtiny85 med Arduino uno styrelsen

I denna tutorial använder vi en Arduino ombord som en ATtiny programmerare.För att göra detta kommer att vi använda en Arduino UNO styrelse som en ISP (programmerare) och en ATtiny85 mikro-controller.Vi kommer att använda Codebender - online Arduino...

Hur man programmerar Arduino Pro Mini använder Arduino Uno och ArduShield - utan kablar

Huvudsyftet med denna anvisning är att visa dig hur man programmerar i mest lätt sätt Arduino Mini eller Arduino Pro Mini med Arduino UNO och ArduShield – utan kablar.Steg för steg handledning, med några åtgärder för att hoppa av Awesome PCB.Steg 1 -...

Hur man programmerar ATtiny2313

Tjena gott folk!När jag först fick min ATtiny2313 tog det mig större delen av 4 timmar att äntligen få det programmerade. Jag gick igenom otaliga Självstudiekurser online som var gammal och omodern. Jag kunde aldrig få rätt filer från en webbplats. J...

Hur man programmerar en LilyPad utan FTDI Converter

Hej alla! I den här artikeln visar jag hur programmera Arduino LilyPad utan FTDI omvandlaren.Arduino LilyPad är en av många Arduino microcontroller familjen, men med en funktion som gör det unikt.LilyPad styrelsen, i själva verket kan vara sydda på t...

Hur man programmerar en kö med Martin M2PC

denna tutorial ska show dig hur man programmerar en stack-ikon för en show med en Martin ljus styrelse och M2PC.Steg 1: Steg 1. Att välja lampor Hjälp av M2PC programmet, Välj de lampor som du vill ska användas i stack-ikonen. Om lysdioderna ingår, s...

Hur man programmerar ATtiny85 med Raspberry Pi?

Länge sedan jag skrev "Hur man programmerar ATtiny85 med parallell port", men parallellporten är uteSå jag bestämde mig att göra en ny tutorital!Du behöver:-Hallon Pi(any)-Några startkablar (stift till bakbord)-en gpio pin (valfritt, men det gör...

Hur man programmerar en servo med arduino

Hej alla och först av allt vill jag säga att...Jag har en YouTube-kanal!Och min första video handlar om programmering servon (tror jag det är självklart). Ja detta är en mycket enkel projekt för arduino nybörjare (iallafall det är svårare än lysdiode...

Hur man programmerar Arduino marker under LPT med c ++ kod?

Hej igen!Idag Visa jag dig hur man programmerar Arduino chip(like ATtiny85) med c ++-koden (aka i Arduino IDE)Eftersom du inte kan använda BSD(aka LPT) programmerare med Arduino IDE, gjorde jag denna tutorital :)Obs: Denna tutorital beror på min en a...

Hur man programmerar en Arduino Uno till Blink

I detta instructable, jag kommer att lära dig hur man programmerar och Arduino Uno blinka. Detta projekt är inte mycket avancerade och är bra för nybörjare.Steg 1: komponenter-Arduino Uno-Lysdioden lyser (valfritt)-Motstånd (behöver inte vara samma s...

Hur man programmerar Attiny85/45 med parallellport?

Hi all! Idag ska jag Visa... bla bla bla xDDu behöver:6(reccomended) eller 10 bandkabelStrömkälla (behövs för programmering, eftersom makten inte kan erhållas från LPT)NB! Om spänningen är över 5v, du behöver spänningsregulator eller annan strömkälla...

Hur man väljer en mikrokontroller

det brukade vara så att antalet olika microcontroller marker tillgängliga för hobby var ganska begränsad. Du fick använda vad du skulle kunna köpa från postorder-chip dealer och som minskat ner valet att ett litet antal marker.Men tiderna har förändr...

Hur man programmerar en ATtiny 85 Digispark

Så, varför en annan "hur man" om den ATtiny 85?Främst för att klargöra undvika viktiga steg som kan hjälpa de problem som upplevs av så många, med fel så här:"avrdude: stk500_getsync(): inte i synk: resp = 0x00""avrdude: usbdev_op...

Hur man programmerar en klocka

Om du har någonsin viljat till skapa och kontrollera tid, är detta inte precis rätt ställe. Jag kan dock lära dig hur man skriver ett program för en klocka. Jag kommer att visa dig hur du använder anteckningar på en Windows-dator för att designa din...

Hur man programmerar använder MSW logotyp

uppdatering: ny AWESOME rutan fil. ÖVERSYN V2.9UPPDATERING juli 30,2009: AWESOME rutan FILVERSION 3.0 lagt tillUPDATE augusti 16,2009: lade till skärmdump av AWESOME BOX V3.0Detta instructable kommer att lära dig att använda logotypen för fast kommun...

Hur man programmerar en AVR (arduino) med en annan arduino

detta instructables är nyttigt om:* har du din arduino med atmega168 och du har köpt en atmega328 på dig lokala elektronikaffär. Det har inte en arduino bootloader* du vill göra ett projekt som inte använder arduino - bara en vanlig AVR chip (som USB...

Hur man programmerar en Arduino accelerometer för motion kontroller

Rörelsestyrning är alltid något som har nått sin kulmen mitt intresse. Detta är särskilt så nyligen när jag upptäckte hur enkelt Arduino gör dem till programmet. När uppsättningen upp ordentligt denna kan lätt bli en awesome dörr som öppnas upp så må...

Hur man enkelt testa en mikrokontroller med en logik Analyzer

Några av mina projekt tidigare har haft problem på grund av en dålig digital pin. Om det någonsin har hänt med dig, då vet du hur frustrerande det kan vara. De flesta människors första reaktion är att det är något fel med koden. Om du tar några minut...

Hur man programmerar Adafruit Gemma v2

I dag ska jag visa dig en mycket snabb metod att överföra programmet blinkande LED till Adafruit Gemma v2 (detta har fått micro USB-kontakt). Jag ville skriva här instruktioner eftersom jag anser vi som en ny utvecklare behöver en mycket snabb och ut...