Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

PIC18 Microcontroller Programmeren in C: Stap-voor-stap Handleiding

PIC18 Microcontroller Programmeren in C – Stap-voor-stap Tutorial

Microcontroller Programmeren: Wat Houdt Het In?

Microcontroller programmeren = code schrijven (meestal C of assembly) in een IDE, compileren naar een .hex bestand (machinecode), en deze programmeren ("branden") in het flashgeheugen van de MCU via een hardwareprogrammeerder (bijv. PICkit, ICD, Snap).

PIC Families Overzicht

Doelcontroller: PIC18F452

  • 8-bit, 40 pinnen (PDIP/TQFP)
  • 32 KB Flash programma-geheugen
  • Max 40 MHz kristal (10 MIPS)
  • 1.5 KB RAM, 256 B EEPROM
  • I/O: PORT A (6), B (8), C (8), D (8), E (3) – TTL/ST buffers
  • 25 mA sink/source per pin → directe LED aansturing mogelijk
  • 3 externe interrupts, 2× 16-bit timers, 1× 8-bit timer
  • Capture/Compare/PWM (CCP) modules
  • 10-bit ADC (8 kanalen)
  • Communicatie: USART (RS-232), I²C, SPI, Parallel Slave Port

Ontwikkelomgeving: MPLAB X IDE + XC8 Compiler (Gratis & Aanbevolen)

Let op: De oorspronkelijke tutorial gebruikte MikroC (commercieel). Microchip's MPLAB X IDE met XC8 compiler is gratis, industriestandaard, en biedt uitgebreide bibliotheken (MCC - MPLAB Code Configurator). We tonen de workflow in MPLAB X.

Stap 1: Installeren

  1. Download MPLAB X IDE (Java-based, werkt op Win/Mac/Linux).
  2. Download XC8 Compiler (gratis licentie).
  3. Installeer beide. Start MPLAB X.

Stap 2: Nieuw Project Aanmaken

  1. File → New Project
  2. Kies Standalone Project → Next.
  3. Device: PIC18F452 → Next.
  4. Supported Debug Header: None (tenzij debugger) → Next.
  5. Tool: PICkit4 / ICD4 / Snap (of simulator) → Next.
  6. Compiler: XC8 (v2.xx) → Next.
  7. Project Name: PIC18F452_Blink, locatie kiezen → Finish.

Stap 3: Configuratie Bits Instellen (Cruciaal!)

Gebruik MCC (MPLAB Code Configurator) of handmatig in config.h / mcc_generated_files/system/config_bits.c:


// Voorbeeld configuratie bits voor PIC18F452 met 20 MHz kristal
#pragma config OSC = HS       // High-speed oscillator
#pragma config WDT = OFF      // Watchdog timer uit
#pragma config LVP = OFF      // Low-voltage programming uit
#pragma config PWRT = ON      // Power-up timer aan
#pragma config BOR = ON       // Brown-out reset aan
#pragma config DEBUG = OFF    // Debug mode uit

Stap 4: Code Schrijven – LED Knipperen op PORTB


#include 
#define _XTAL_FREQ 20000000  // 20 MHz voor __delay_ms()

void main(void) {
    // PORTB als output (alle pinnen)
    TRISB = 0x00;      // 0 = output, 1 = input
    PORTB = 0x00;      // Initieel laag

    while (1) {
        PORTB = 0xFF;  // Alle pinnen hoog (LEDs aan)
        __delay_ms(500);
        PORTB = 0x00;  // Alle pinnen laag (LEDs uit)
        __delay_ms(500);
    }
}

Uitleg Belangrijke Concepten

FamilieBitsSeries
Baseline8-bitPIC10, PIC12, PIC16 (oude kern)
Mid-range8-bitPIC16Fxxx (verbeterde kern)
High-end 8-bit8-bitPIC18Fxxxx
16-bit16-bitPIC24, dsPIC30, dsPIC33
32-bit32-bitPIC32 (MIPS M4K)
ConceptUitleg
TRISx RegisterData Direction Register. 0 = Output, 1 = Input. Per pin instelbaar (bijv. TRISB = 0b00001001 → RB0 & RB3 input, rest output).
PORTx RegisterData Register. Schrijven: stelt uitgangsniveau. Lezen: leest pininstand (input) of latch (output).
LATx RegisterLatch Register (aanbevolen voor schrijven naar outputs, voorkomt read-modify-write issues).
__delay_ms()Intrinsische delay functie (vereist _XTAL_FREQ define). Geen timer setup nodig.

Stap 5: Compileren (Build)

Klik Clean and Build (hamer icoon) of Run → Build Project. Bij succes: BUILD SUCCESSFUL en dist/default/production/PIC18F452_Blink.X.production.hex gegenereerd.

Stap 6: Programmeren (Burnen)

  1. Sluit programmeerder aan (PICkit4: ICSP header: VPP/MCLR, VDD, GND, PGD, PGC).
  2. Zorg dat target gevoed wordt (3,3V of 5V).
  3. Klik Make and Program Device (pijl-naar-chip icoon) of Run → Program Device.
  4. Output toont: Programming/Verify complete.

Simuleren Zonder Hardware: Proteus

Laad het .hex bestand in een PIC18F452 component in Proteus ISIS. Voeg LED's + weerstanden toe aan PORTB. Simuleer → LEDs knipperen.

Vergelijking: MikroC vs MPLAB X + XC8

KenmerkMikroC for PICMPLAB X + XC8
KostenBetaald (gratis demo met code limiet)Gratis
BibliothekenRijk, ingebouwd (LCD, UART, etc.)MCC genereert code, periferie libraries
DebuggingBeperktVolledig (breakpoints, watches, UART output)
IndustriestandaardNeeJa
Ondersteuning nieuwe chipsVertraagdDirect bij release

Verder Leren

  • Interrupts (timer, extern, ADC, UART)
  • ADC configuratie & lezen
  • PWM genereren met CCP module
  • I²C / SPI / UART communicatie
  • Low-power modes (Sleep, Idle)
  • Bootloader implementeren

Industriële technologie

  1. Een Robuust Elektrisch Onderhoudsprogramma Ontwikkelen: Een Praktische Gids
  2. Een betrouwbaarheidsprogramma lanceren: een bewezen roadmap
  3. Een Succesvol Productie Leerlingprogramma Lanceren: Een Praktische Gids
  4. Hoe een Robuust Apparatuuronderhoudsprogramma Op Te Bouwen Om Downtime Te Verminderen
  5. Aluminiumlassen onder de knie krijgen: een uitgebreide expertgids
  6. Expertgids voor het Lassen van Gietijzer: Bewijste Technieken voor Sterke, Duurzame Lassen
  7. Aluminium Solderen: Expert Technieken & Stap-voor-stap Handleiding
  8. Aluminium Hardsolderen Beheersen: Expert Technieken & Praktische Gids
  9. Expertgids voor het Lassen van Koper: Technieken, Tips & Best Practices
  10. Een betrouwbaar elektrisch onderhoudsprogramma ontwerpen voor veiligheid & productie
  11. De mechanica van koppelingen: uitgebreide industriële gids