PIC-Mikrocontroller Blink LED

Der erste Schritt beim Einsatz eines Mikrocontrollers ist bei mir immer die blinkende LED. Einfacher kann Hardware nicht aufgebaut werden und das nötige Programm ist auch minimal. Trotzdem gibt die blinkende LED viele Informationen:

  • die Hardware wurde richtig verdrahtet
  • die Stromversorgung ist ok
  • die Taktung funktioniert und hat die richtige Frequenz
  • IDE, Programmer und PIC sind richtig verbunden
  • der richtige PIC-Typ wurde gewählt
  • das Programm ist ok

Man kann sagen, der Grundstein ist gelegt. Danach kann die Hardware und die Software erweitert werden bis das Gerät fertig entwickelt und aufgebaut ist.

 

Stückliste:

  1. ein Steckbrett
  2. ein Mikrocontroller PIC16F688
  3. eine LED
  4. ein Widerstand 300 Ohm
  5. eine Stiftleiste 6-polig (oder von längerer Leiste was abkneifen)

Hier das Schaltbild:

und die Verdrahtung:

PIC16F688:   Ansicht von oben – Pin 1 ist links unten

PICKit-Connector:  „1“ entspricht der Spitze des Dreiecks auf dem Gehäuse

und das C-Programm für MPLABX:

 

#include <xc.h> // wegen MPLABX
#pragma config FOSC = INTOSCCLK // Oscillator Selection bits
//(INTOSC oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit
//(WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit
//(PWRT disabled)
#pragma config MCLRE = ON // MCLR Pin Function Select bit
//(MCLR pin function is MCLR)
#pragma config CP = OFF // Code Protection bit
//(Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit
//(Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Detect
//(BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit
//(Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit //(Fail-Safe Clock Monitor is disabled)
#define _XTAL_FREQ 4000000 // to calibrate __delay_us() and __delay_ms()

void main(void)
{
ANSEL = 0; // alle Pins mit analog Option gehen so auf i/o
TRISC = 0b00000000;// port directions: 1=input, 0=output
PORTC = 0;
while (1){
RC3 = 1;
__delay_ms(600);
RC3 = 0;
__delay_ms(600);
}
}

 

zurück

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert