Norbert Moch, Hannover, www.NorbertMoch.de mail@NorbertMoch.de © Copyright 2010
 PIC Mikrocontroller, µC, C18, MCC18, PIC18F45K20, C Code

Der PIC-Controller ist in vielfältigen Varianten (auch hier , offline hier) beginnt bei ca. 60 ct Endkundenpreis (z.B. bei Reichelt.de) erhältlich.
Es gibt 8, 16 und 24 Bitvarianten. Für den Hobbyanwender reicht meistens eine PIC18F-8-Bit-Variante (beginnend bei ca. 2,- Euro) aus.
Nötige Entwicklungssoftware (z.B. C Compiler mit Software-Debugger von Microchip , nur kostenlose Registrierung nötig) gibt es kostenlos und Entwicklungsboard (z.B. PICkit3 Debug Express,
enthält Entwicklungsboard mit PIC18F45K20) sind preisgünstigerhältlich.
Beim Hersteller microchip, kann direkt bestellt werden, microchipdirect.com/default.aspx , z.T. in deutsch.
Produkt selector, microchip.com/productselector/MCUProductSelector.html
und hier microchip.com/TechDocByProduct.aspx
und hier microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2661
Application Notes microchip.com/stellent/idcplg/function/?IdcService=SS_GET_PAGE&nodeId=1469&ln=en

und C Code (MCC18) Beispiele microchip.com/CodeExamplesByFunc.aspx

Allgemeine Infos gibt es auch auf der Wikipediaseite de.wikipedia.org/wiki/PICmicro und  de.wikipedia.org/wiki/Mikrocontroller

Weitere Links unten

C Programme
Alle aufgeführten Programme sind mit dem kostenlosen MPLAB C18 C-Compiler erstellt worden
und wurden auf dem PIC18F45K20 * getestet (PICkit3).


Sonstiges

Blinklicht, Verzögerung durch  Delay1KTCYx(250) ohne while-Schleife    
Blinklicht, Verzögerung durch  Delay1KTCYx(250)
Links
Blinklicht, Verzögerung durch Sinusberechnung

PICkit3
8 LED-Zeile mit induviduellen Blink-Muster
Fotos von PIC-Controllern
Zu- und abnehmender LED-Balken
Stromverbrauch, PIC18F26K80, ca. 200µA bis 6 mA            
Interne Taktfrequenzumschaltung

Function delay_ms

Function Taster, entprellen

Function spiegeln    
10h-Timer

* 40PIN PIC18F43K20, PIC18F44K20, PIC18F45K20 und PIC18F46K20 sind PIN-kompatibel, sie unterscheiden sich nur in der Speichergröße
  28PIN PIC18F23K20, PIC18F24K20, PIC18F25K20 und PIC18F26K20 haben haben nur weniger IO und AD-Ports

News:

Neue Version von MPLAB IDE (MPLAB X) erschienen, die jetzt erstmalig auch unter Linux und Mac OS läuft. Info: MPLAB X und hier, Download: hier

Sehr interessante PIC-Mikrocontroller Familien mit 12 Bit Analog-Digital-Wandler in 28 oder 40 (SP-)DIP-Gehäuse
PIC18F66K80 Family ohne USB (u.a. PIC18F25k80, PIC18F26k80, PIC18F45k80, PIC18F46k80)
PIC18F47J53 Family mit USB (u.a. PIC18F26J53, PIC18F27J53, PIC18LF26J53, PIC18LF27J53) nur 28 SPDIP

z.B. hier erhältlich auch für Endverbraucher: tme.eu

Lernpaket PIC-Mikrocontroller, Franzis, 99,- €, Platine mit PIC18F23K22-Mikrocontroller, USB-Controller

Neu entdeckt:

Interessante PIC-Mikrocontroller mit 5 Bit (32 Stufen) Digital-Analog-Wandler-Ausgang in 28 oder 40 (SP-)DIP-Gehäuse

u.a. PIC18F26K22, PIC18F46K22


2 Beispielfotos von PIC-Controllern, weitere unten



12F675



18F14K50

 Blinklicht, Verzögerung durch Delay1KTCYx(250), ohne while-Schleife

/** C O N F I G U R A T I O N B I T S ******************************/
#pragma config FOSC = INTIO67
#pragma config WDTEN = OFF, LVP = OFF, MCLRE = OFF


/** I N C L U D E S **************************************************/
#include "p18f45k20.h"
#include "delays.h"

/** D E C L A R A T I O N S ******************************************/

void main (void)                     // Hauptprogramm
{
  TRISD = 0b00000000;       // PORTD bit 7 to output (0); bits 6:0 are inputs (1)
  

  LATD = 0b01010101;         // Muster des PORTs D
  Delay1KTCYx(250);             // Verzögerung 250 x 1000 = 250.000 Zyklen; 1000ms bei 1MHz

  LATD = 0b10101010;
  Delay1KTCYx(250);             // Verzögerung 250 x 1000 = 250.000 Zyklen; 1000ms bei 1MHz
}



 Blinklicht, Verzögerung durch Delay1KTCYx(250)
---


//             Blinklicht
//
// Sofern nichts anderes angegeben wird beträgt die default-Frequenz
// des internen Taktgebers 1 MHz. Bei dieser Frequenz ergibt sich eine
// ein Blinkfrequenz von ca. 1/2 Hz = 1 Sekunde leuchten, eine dunkel.

#include "p18F45k20.h"
#include "delays.h"

unsigned char x;             // Variablendeklaration/-definition
long s;

void main (void)             // Hauptprogramm
{        
    TRISD = 0b00000000;      // Alle 8 Ausgänge von PORTD werden als Ausgänge geschaltet
   
    while (1)                // Endlodschleife
    {
        LATD = 0b01010101;   // Muster des PORTs D        
        Delay1KTCYx(250);    // Verzögerung 250 x 1000 = 250.000 Zyklen; 1000ms bei 1MHz
        LATD = 0b10101010;
        Delay1KTCYx(250);    // Verzögerung 250 x 1000 = 250.000 Zyklen; 1000ms bei 1MHz
    }
}



 Blinklicht, Verzögerung durch Sinusberechnung
---


//             Blinklicht
//
//  Sofern nichts anderes angegeben wird beträgt die default-Frequenz
//  des internen Taktgebers 1 MHz. Bei dieser Frequenz ergibt sich eine
//  ein Blinkfrequenz von ca. 1/2 Hz = 1 Sekunde leuchten, eine dunkel.

#include "p18F45k20.h"
#include "math.h"

unsigned char x;                           // Variablendeklaration/-definition
long s;

void main (void)                           // Hauptprogramm
{        
    TRISD = 0b00000000;           // Alle 8 Ausgänge von PORTD werden als Ausgänge geschaltet
   
    while (1)                                   // Endlodschleife
    {
        LATD = 0b01010101;        // Muster des PORTs D        
        for (x=0;x<50;x=x+1)           // for-Schleife, zählt von 0 bis 50, x wird jeweils um 1 erhöht
            s=sin(x);                           // Sinuswert wird von x berechnet und in die Variable s geschrieben
                                                     // Achtung: Es wird mit RAD und nicht mit GRAD gerechnet, hier nicht relevant
        LATD = 0b10101010;
        for (x=0;x<50;++x)              // for-Schleife, zählt von 0 bis 50, x wird jeweils um 1 erhöht, inkrementieren (++x)
            s=sin(x);                          // http://de.wikipedia.org/wiki/Inkrement_und_Dekrement
    }
}


 8 LED-Zeile mit induviduellen Blink-Muster
---

#pragma romdata Lesson3_Table = 0x180                     // declare constant data in program memory starting at address 0x180
                                                                                               // Erstellung eine eindimensionalen Arrays, jeder binäre Zahlenwert ist das jeweilige LED-Balkenmuster
const rom unsigned char LED_LookupTable[32]=
{
                                                0b00000001,

                                                0b00000010,
                                                0b00000100,
                                                0b00001000,
                                                0b00010000,
                                                0b00100000,
                                                0b01000000,
                                                0b10000000,
                                                0b11111111,
                                                0b11111111,
                                                0b10101010,
                                                0b10101010,
                                                0b01010101,
                                                0b01010101,
                                                0b11111111,
                                                0b11111111,
                                                0b10000000,
                                                0b01000000,
                                                0b00100000,
                                                0b00010000,
                                                0b00001000,
                                                0b00000100,
                                                0b00000010,
                                                0b00000001,
                                                0b11111111,
                                                0b11111111,
                                                0b10101010,
                                                0b10101010,
                                                0b01010101,
                                                0b01010101,
                                                0b11111111,
                                                0b11111111
};


#pragma code                                                                    // declare executable instructions

void main (void)

{
    LED_Number = 0;                                                          // LED_Number wird mit 0 beschrieben
    TRISD = 0b00000000;                                                  // PORTD Bits 7 bis 0 alle als Ausgang
    while (1)
    {
        LATD = LED_LookupTable[LED_Number];          // LED_LookupTable
        LED_Number++;                                                       // rotate display by 1
        if (LED_Number == 32)
            LED_Number = 0;                                                 // Zurück nach LED0.
        Delay1KTCYx(300);                                                  // Verzögerung 300 x 1000 = 300.000 Zyklen; 200ms bei 1MHz
    }
}

#pragma DIRECTIVE, #pragma code, Page 95
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Getting_Started_51295f.pdf



 Zu- und abnehmender LED-Balken

/** I N C L U D E S **************************************************/
#include "p18f45k20.h"
#include "delays.h"

/** D E C L A R A T I O N S *******************************************/
#define LED0 LATDbits.LATD0                              // Präprozessoranweisung
#define LED1 LATDbits.LATD1
#define LED2 LATDbits.LATD2
#define LED3 LATDbits.LATD3
#define LED4 LATDbits.LATD4
#define LED5 LATDbits.LATD5
#define LED6 LATDbits.LATD6
#define LED7 LATDbits.LATD7

unsigned char LED_Array[8]={0,0,0,0,0,0,0,0};     // Array wird mit Nullen beschrieben
unsigned int z = 0;
unsigned int i = 0;
int zeit=100;                                                                // Verzögerung in ms

void delay_ms (int);
void LED (void);

void main (void)
{
    TRISD = 0;                                                             // PORTD bit 0 bis 7 werden auf Ausgang geschaltet
    LATD=0;                                                                // Alle Ausgänge des PORTD werden auf LOW geschaltet

    while (1)
    {
        for (i=0; i<8;i=i++)                                             // for Schleife
        {
            LED_Array[i] = ~LED_Array[i];                    // ~ = toggeln (Umschalten von High auf Low bzw. von Low auf High)
            LED ();                                                            // Aufruf der LED-Funktion
        }
    }
}

void LED (void)                                                        // LED-Funktion, Die Werte vom Array werden LED0 bis LED7 zugewiesen
{           
    LED0 = LED_Array[0];
    LED1 = LED_Array[1];
    LED2 = LED_Array[2];
    LED3 = LED_Array[3];
    LED4 = LED_Array[4];   
    LED5 = LED_Array[5];
    LED6 = LED_Array[6];
    LED7 = LED_Array[7];
    delay_ms(i*zeit);                                                // Aufruf der delay_ms-Funktion mit Parameterübergabe
}

void delay_ms(int ms)                                          // Verzögerung-Funktion
{
    for (z=1; z<ms; z++)                       
    {
        Delay10TCYx(25);                                        // Verzögerung 250 000 Zyklen (25 x 10000)
    }                                                                           // 10T = 10.000
}



Der LED-Balken wird aufgebaut

Arrays (Felder) hier eindimensionales Feld
netzmafia.de/skripten/ad/thomas-c/arrays.html
www-ti.informatik.tu-cottbus.de/Studium/06ZgEinfProg/Skript/P9.pdf


 Interne Taktfrequenzumschaltung
---



#include "p18f45k20.h"
#include "delays.h"


// Hier werden du die möglichen Frequenzen festgelegt
#define OSC_0250_kHz 0b100111111                              // Niedrige Freq. 0b00011111
#define OSC_8000_kHz 0b111011111                              // Hohe       Freq. 0b00100000
#define Switch_Pin PORTBbits.RB0                                   // Taster (Switch)

void main (void)
{
                                                                                                // Einstellungen für Taster
    INTCON2bits.RBPU = 0;                                                  // INTCON2: INTERRUPT CONTROL 2 REGISTER,
                                                                                                // RBPU:  PORTB Pull-up Enable bit
                                                                                                // PORTB pull-up-Widerstände werden in Verbindung mit WPUP aktiviert
    WPUB = 0b11111111;                                                    // aktiviert Pullup-Widerstände on RB
    ANSELH = 0b00001111;                                                // AN8-12 are digital inputs (AN12 on RB0)
    TRISB = 0b00000001;                                                     // PORTB bit 0 (connected to switch) is input (1)

                                                                                                // Einstellungen für die LEDs
    TRISD = 0b00000000;                                                     // PORTD bit 0 bis 7 werden als Ausgang aktiviert
    LATD = 0;                                                                          // Alle PORTD-Ausgänge LOW
   
    while (1)                                                                             // While-Schleife wird nie verlassen da die Bedingung Wahr immer erfüllt ist
    {
        if (Switch_Pin == 0)                                                     // Wenn Taster nicht betätigt Inter Oszillatorfrequenz 8000kHz
         OSCCON = OSC_8000_kHz;                                  // OSCCON = Oscillator Control Register,
        else                                                                               // Wenn Taster nicht betätigt Inter Oszillatorfrequenz 02500kHz
         OSCCON = OSC_0250_kHz;
        LATD = ~LATD;                                                         // toggle LATD, Alle Ausgänge LOW gehen auf HIGH und umgekehrt
        Delay1KTCYx(100);                                                   // Delay 100 x 1000 = 100 000 Cycles; 400ms @ 1MHz
    }
}


Programm als TXT-Datei (hierbei bleibt beim Kopieren die Formatierung erhalten)

RBPU: PORTB Pull-up Enable bit
0 = Interner Pull-Up-Widerstand aktiviert
Siehe auch Datensheet PIC18F45K20, Seite 110
ww1.microchip.com/downloads/en/devicedoc/41303g.pdf

OSCCON Register
IRCF2 bis IRF0 (OSCCON-Register-Bit 4 bis Bit 6)
Interner Oscillator Frequenz Auswahl-Bits
111 = 16 MHz
110 =   8 MHz
101 =   4 MHz
100 =   2 MHz
011 =   1 MHz
010 =     500 kHz
001 =     250 kHz
000 =     031 kHz









IDLEN
IRCF2
IRCF1
IRCF0
OSTS
IOFS
SCS1
SCS0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0


Siehe auch Datensheet PIC18F45K20, Seite 029
ww1.microchip.com/downloads/en/devicedoc/41303g.pdf

ANSELH, Analog Select Register 2

-
-
-
ANS12
ANS11
ANS10
ANS09
ANS09


RB7
RB6
RB5
RB4
RB3
RB2
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0

1 = Digital Input Buffer ist deaktiviert
0 = Digital Input Buffer ist aktiviert

ANSELH = 0b00011111;

Siehe auch Datensheet PIC18F45K20, Seite 126 und 137
ww1.microchip.com/downloads/en/devicedoc/41303g.pdf

I/O Ports
mikroe.com/eng/chapters/view/4/chapter-3-i-o-ports/

Taktversorgung des PIC
sprut.de/electronic/pic/osc/index.htm

 

 Function delay_ms
 

Die Funktion delay_ms ermöglicht eine Verzögerung in Millisekunden (ms). Max. 32767 ms



void delay_ms(int ms)
{
     for (z=1; z<ms; z++)
     {     
            Delay10TCYx(25);
     }
}


Delay10TCYx(25), bedeutet 25 x 10 000 = 250 000 Cyclen entspricht 1 ms,
hängt aber von der Taktfrequenz des µC ab.


Delay-Berechnung

4 Takt = 1 Zyklen

      Osillatorfrequenz      Zyklen pro Sekunde    Verzögerung
       4 Mhz                        1. 000.000                   1000 ms       

Zyklen = ( Verzögerung x Osillatorfrequenz ) / 4



1 MHz (Default after Reset) bei PIC18F45K20


Funktion als TXT-Datei (hierbei bleibt beim Kopieren die Formatierung erhalten)

Die Funktion wird mit
"delay_ms(1000);" aufgerufen.
1000 steht für einen Wert von 0 bis max. 32767, der entsprechend eingetragen werden kann.


for-Schleife
c-howto.de/tutorial-schleifen-for.html
peacesoftware.de/ckurs9.html

Funktionen in C
c-howto.de/tutorial-funktionen.html
uni-forst.gwdg.de/~wkurth/cb/html/alp_funktion.pdf

 

 Function Taster, entprellen
 

Die Funktion Taster entprellt (debounce) den Taster

void Taster (void)
{
         Switch_Count = 5;
         do
         {
                   if (Switch_Pin == 0) Switch_Count++;
                   else Switch_Count = 0;
                   Delay10TCYx(25); // delay 250 cycles or 1ms.
         } while (Switch_Count < DetectsInARow);
}

Funktion als TXT-Datei (hierbei bleibt beim Kopieren die Formatierung erhalten)

Die Funktion wird mit "Taster();" aufgerufen.

A Guide to Debouncing
eng.utah.edu/~cs5780/debouncing.pdf

Entprellung, AVR
mikrocontroller.net/articles/Entprellung

 

 Function spiegeln


Folgende Funktion spiegelt (dreht) die Bitreihenfolge im Byte (LED_Display).

In C gibt es dafür kein Befehl.

aus z.B. 0b1111000
wird       0b00001111

oder      0b10101010
wird       0b01010101

void spiegeln (void)
{
          unsigned char ze = 0;
          unsigned char shift = 0;
          for (shift=0; shift<8; ++shift)
          {
                  ze = ze + ((LED_Display<<shift & 0b10000000)>>7-shift);
          }
          LED_Display = ze;
}

Funktion als TXT-Datei (hierbei bleibt beim Kopieren die Formatierung erhalten)

Die Funktion wird mit "spiegeln();" aufgerufen.

Bitoperationen
oreilly.de/catalog/cplus2ger/chapter/ch11.pdf

en.wikipedia.org/wiki/Bitwise_operation

jumk.de/bit/index.shtml

cpp-tutor.de/cpp/le03/bit_schiebe.html

Video: Bitweise Manipulation,
et-tutorials.de/1908/bitweise-manipulation/



  Links
 
PIC


Allgemein

PIC-Microchip-Controller
sprut.de/electronic/pic/index.htm

PIC-Turorial
http://pic-projekte.de/pic_tutorial.html

PIC18, Grundlagen
http://www.fernando-heitor.de/index.php/wiki/doku.php/id,mikrocontroller;pic18/

Forum: 16-Bit Core (instructions, reset, WDT, specifications...) PIC17Cxx, PIC18Fxxx
http://www.microchip.com/forums/f7.aspx

PIC Microcontrollers, english
mikroe.com/eng/chapters/view/1/introduction-world-of-microcontrollers/

Code Examples, fast alle C Code MCC18, Micochip C, (PIC18 auswählen, 3. Button)
http://www.microchip.com/CodeExamplesByFunc.aspx

Messen, Steuern und Regeln mit PIC-Mikrocontrollern

tinyurl.com/2wyzc9p
freebooksearcher.info/downloadbook.php?id=16337
tinyurl.com/34wjakb

Programming & Customizing the Pic Microcontroller
freebooksearcher.info/downloadbook.php?id=14291

Microprocessor-Microcontroller PIC Books Collection Book
freebooksearcher.info/downloadbook.php?id=13065

Microcontrollers: Fundamentals and Applications with PIC Book
freebooksearcher.info/downloadbook.php?id=11475

The PIC Microcontroller: Your Personal Introductory Course, 3 Ed Book
freebooksearcher.info/downloadbook.php?id=21033

8-bit PIC® Microcontrollers - Microchip
ww1.microchip.com/downloads/en/DeviceDoc/39630g.pdf

8-bit PIC® Microcontroller Solutions - Microchip
ww1.microchip.com/downloads/en/DeviceDoc/39630C.pdf

PIC18 Microcontroller Family
/lis.epfl.ch/contest/flying07/docs/resources/PIC 18XXXX.pdf

Mid-Range MCU Family
ww1.microchip.com/downloads/en/devicedoc/33023a.pdf

Hardware Techniques for PICmicro Microcontrollers
ww1.microchip.com/downloads/en/AppNotes/00234a.pdf

Mikrocontroller für Einsteiger, PIC, Assembler
http://tinyurl.com/34ccpfs

PIC microcontroller: an introduction to software and hardware interfacing, C Code
tinyurl.com/344nltf

The quintessential PIC microcontroller, Assembler
tinyurl.com/3xt5odp

Advanced PIC microcontroller projects in C: from USB to RTOS with the PIC18F, mikroC
tinyurl.com/2f5a42t

Das grosse PIC-Mikro-Handbuch, Assembler
tinyurl.com/37vz27v

Steuern mit PIC Mikrocontrollern: Grundlehrgang mit dem PIC 16F84A, Assembler
tinyurl.com/3yxbnzr

PICs für Einsteiger Tipps und Tricks rund um das PICkit 1 Flash Starter Kit, Leseprobe
tinyurl.com/2ffxu9c

PIC-Bücher bei Amazon
http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C5M%C5Z%D5%D1&url=search-alias%3Daps&field-keywords=pic+mikrocontroller&x=0&y=0


PIC based MIDI synthesizer, CC5X
donkey.vernier.se/~yann/synth.pdf

RS232 Interfaces, PIC18F252 USART, C Code
mosaic.cnfolio.com/FilemanagerHP/files.xml?action=download&file=B222L_S1_2009_10_Pic18F252_RS232_Lectures.pdf

Digital to Analogue Converters, C Code
mosaic.cnfolio.com/FilemanagerHP/files.xml?action=download&file=B222L_S1_2009_10_Pic18F252_DAC_lectures.pdf


ADC, Analog-Digitalwandlung

Analogue to Digital Converters, PIC18F252, C18 Code
mosaic.cnfolio.com/FilemanagerHP/files.xml?action=download&file=B222L_S1_2009_10_Pic18F252_ADC_lectures.pdf

The following program demonstrates a simple ADC conversion, C18
rocklore.com/3v0/tutorials/UnderstandingSensors.pdf

A/D-Wandlung und die Ansteuerung von einer LED, Mitte der Seite, C18 Code
pic-mikrocontroller.de/index.php/forum/index.php/topic,4444.msg22899/

Understanding  and minimising ADC conversion errors
st.com/stonline/books/pdf/docs/9593.pdf

Analog-to-Digital Conversion and Simple Filtering
gooligum.com.au/tutorials/baseline/PIC_Base_C_6.pdf

A/D Converter Funktions, C18
websupport1.citytech.cuny.edu/Faculty/fzia/projects/c_micro/c18_lib/ADC FUNCTIONS.pdf

A/D Converter Functions
pathsim2.ece.vt.edu/classes/ECE4534_Fall08/Group2/ProjectTree/FinalProject/Reference/PIC_Library_documentation/AD Converter.htm

AD Converter Functions
http://w3.id.tue.nl/fileadmin/id/objects/E-Atelier/doc/Tutorials/ADC_FUNCTIONS_18F4550.pdf

 

Timer, PWM
(durch einen Tiefpass(RC) = Analoger Ausgang)

Pulse-Width Modulation Functions, 2.7 page 44
ww1.microchip.com/downloads/en/devicedoc/mplab_c18_libraries_51297f.pdf

Influence of PWM Schemes and Commutation Methods
mikrocontroller.net/attachment/6216/PWM_20schemes_20for_20BLDC.pdf

Motor control, A reference guide
st.com/stonline/products/promlit/pdf/brmotor-0503.pdf

D/A Conversion Using PWM and R-2R Ladders to Generate Sine and DTMF Waveforms
ww1.microchip.com/downloads/en/AppNotes/00655a.pdf

8-bit Digital to Analog converter(DAC)
ikalogic.com/dac08.php

AD- und DA-Umsetzer, 158 Seiten

www3.tu-ilmenau.de/fakia/fileadmin/template/startIA/mhe/lehre/itechnik/V_ADgesamt_n.pdf

Analog-Digital- und Digital-Analog-Wandler
groups.uni-paderborn.de/physik/studieninfos/praktika/versuche_anleitungen/messmethoden/mta_kapd.pdf

DAC R2R Netzwerkberechnung
brischalle.de/JDAC/DAC_R2R_network_calculation.html
brischalle.de/JDAC/JDAC.zip

R/2R Ladder Networks
http://www.irctt.com/pdf/laddernetworks.pdf

Source code for 8-bit, PIC16F627, sine.c, C Code
http://www.eece.maine.edu/vlsi/2007/Beaulieu/report.pdf

R/2R Networks
http://www.ehobbycorner.com/pages/article_r2r.html

Digital-to-Analog Converter, TI
lte.e-technik.uni-erlangen.de/download/AUD/lesson15.pdf

Pulsweitenmodulation
mikrocontroller.net/articles/Pulsweitenmodulation
rn-wissen.de/index.php/Pulsweitenmodulation
de.wikipedia.org/wiki/Pulsweitenmodulation


Using PWM to Generate Analog Output, microchip
ww1.microchip.com/downloads/en/AppNotes/00538c.pdf

PIC PWM Calculator & Code Generator
http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html

Die Nutzung des 10-Bit PWM
sprut.de/electronic/pic/grund/pwm.htm

PIC Timer Calculator
pictimer.picbingo.com/

PIC Timer Code Wizard, C Code
eng-serve.com/pic/pic_timer.html

PIC PWM Register Calculator
eng-serve.com/pic/pic_pwm.html

PIC PWM Frequency Functions, C Code
eng-serve.com/pic/pwm_functions.html

PIC Interrupt Code Generator, C Code
eng-serve.com/pic/pic_interrupts.html

PIC Wizard Project Page, C Code
eng-serve.com/pic/wizard_project.html

Microchip C18 PWM (PIC18F4550), C18 Code, unten
mikrocontroller.net/topic/143036

Control with PWM Signals using the PIC18F4520
http://www.egr.msu.edu/classes/ece480/capstone/spring08/group05/docs/PIC_Pwm_Controller.pdf

Programming a Pulse Width Modulation on a PIC18F4520, C18 Code
egr.msu.edu/classes/ece480/capstone/fall09/group01/Documents/ApplicationNoteMerav.pdf

Pulse Width Modulation (PWM), C18 Code
kwantlen.bc.ca/science/physics/faculty/mcoombes/APSC1299_Notes/Lectures/PWM.pdf

PWM Function, C18 Code
w3.id.tue.nl/fileadmin/id/objects/E-Atelier/doc/Tutorials/PWM_FUNCTIONS_18F4550.pdf

Pulse-Width Modulation Functions
pathsim2.ece.vt.edu/classes/ECE4534_Fall08/Group2/ProjectTree/FinalProject/Reference/PIC_Library_documentation/PWM.htm

Pulse Width Modulation
laurtec.it/italiano/tutorial/pwm_pulse_width_modulation/AN4006-IT_pwm_pulse_width_modulation.pdf

Pulse Width Modulation, PIC18F252, C Code
mosaic.cnfolio.com/FilemanagerHP/files.xml?action=download&file=B222L_S1_2009_10_Pic18F252_PWM_lectures.pdf

PICmicro®, DC Motor Control, Tips‘n Tricks, 36 Seiten
http://ww1.microchip.com/downloads/en/devicedoc/41233A.pdf

Timer Interrupt Usage in 16bit PIC Microcontrollers
egr.msu.edu/classes/ece480/capstone/spring/group12/documents/application_notes/Omar_Bennani_Application_Note.pdf


LCD


Ansteuerung HD44780 LCD Displays
pic-projekte.de/Download/HD44780.pdf
C Programm, ntmb.de/hit/8191 ZIP-Datei

Ansteuern eines kompatiblen HD44780 LCD Display, C18
http://pic-projekte.de/Download/HD44780.pdf

Controlling a LCD with a PIC, C Code
egr.msu.edu/classes/ece480/capstone/spring/group12/documents/application_notes/Adam_Young_Application_Note.pdf

PIC18F1320 LCD Demo, C18
add.ece.ufl.edu/4924/docs/PIC18F1320 LCD C18 Demo.pdf

Library Routine for External LCD module, C18
jimfranklin.info/microchipdatasheets/xlcdc.readme.pdf


USB


EasyUSB, PIC18F4550, C18 Code, 38 Seiten
laurtec.it/italiano/progetti/EasyUSB/PJ7008-IT_EasyUSB.pdf
laurtec.it/italiano/progetti/EasyUSB/Hello_World_Bootloader_Example.zip
 

PIC und C

Kostenloser C Compiler von microchip, siehe unten MPLAB C for PIC18 vX.XX in LITE mode
microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014

Kleiner C Kurs für PIC Mikrocontroller
http://pic-projekte.de/pic_c.html

PIC-C-Compiler
sprut.de/electronic/pic/c/c.html

Installation von MPLab- 7.40 und C18 C Compiler
munz-udo.de/FTE1/install.pdf

Microchip MPLAB IDE 6.5, Microchip C-Compiler MCC18 2.30
cs.hs-rm.de/~linn/vpdv04/invPendel/IDE_CCompiler.htm

MPLAB C18 C Compiler Libraries
ww1.microchip.com/downloads/en/devicedoc/mplab_c18_libraries_51297f.pdf

Praktische Beispiele in C für'n PIC inkl. mcp etc., Crashkurs, PIC18F452
fernando-heitor.de/index.php/forum/index.php/action,dlattach/topic,3949.0/attach,1469/

PIC-Turorial
pic-projekte.de/pic_tutorial.html

C18 Step by Step, Imparare a programmare i PIC 18, 264 Seiten
laurtec.it/italiano/tutorial/c18_step_by_step/BK001-IT_c18_step_by_step.pdf
C18 Code, laurtec.it/italiano/tutorial/c18_step_by_step/esempi_C18.zip

How to use MPLAB IDE with MPLAB C18 Complier
embeddedcraft.org/mplabuse.html

MPLAB MCC18 C-Pprogramming Tutorial
w3.id.tue.nl/fileadmin/id/objects/E-Atelier/doc/Manuals/MPLAB_MCC18_C_tutorial_EN.pdf

Introduction to Programming and Programmable Devices, PIC, MCC18
http://data.bolton.ac.uk/staff/ks3/ECE1011/

An introduction to programming, The Microchip PIC in CCS C

scribd.com/doc/886920/PICmicro-MCU-C-An-Introduction-to-Programming-the-Microchip-PIC-in-CCS-C#fullscreen:on

Microchip PICs, Most code on this page was written using the CCS compiler
hades.mech.northwestern.edu/index.php/Microchip_PICs

Baseline PIC C Programming Tutorials
gooligum.com.au/tut_baseline_C.html
Libreria C18 LaurTec, laurtec.it/italiano/tutorial/c18_step_by_step/LaurTec_c18_libraries.zip

Das Inverse Pendel, PIC18F452, C18
cs.hs-rm.de/~linn/vpdv0708/invPendel2/html/start.html
cs.hs-rm.de/~linn/vpdv0708/invPendel2/stuff/InversesPendelWS07_08.pdf

Das "Inverse Pendel", PIC18F452, C 18
cs.hs-rm.de/~linn/vpdv05/jopp_et_al/index.html

Das Inverse Pendel, PIC18F452, C 18
http://www.cs.hs-rm.de/~linn/vpdv05/leimbert_rohrbach/index.html

Aufzugssteuerung per PIC18F452, C18
cs.hs-rm.de/~linn/vpdv06/aufzug/documentation.pdf

Aufzugsteuerung, PIC18f4550, C18
cs.hs-rm.de/~linn/vpdv05/aufzug/programmierung.html

Propeller-Uhr, C 18
cs.hs-rm.de/~linn/vpdv05/propclock/index.html
C Quellcode, cs.hs-rm.de/~linn/vpdv05/propclock/images/main.c

PIC Mikrocontroller Forum, Programmiersprache C
http://www.fernando-heitor.de/index.php/forum/index.php/board,2.0/

PIC Micro Controller  C  Routine Library

http://www.piclist.com/techref/microchip/language/c/index.htm

MPLAB C18 Config Settings, u.a, PIC45K20, Page 212

ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Config_Settengs_51537a.pdf

Benutzung von MPLAB IDE
http://pic-projekte.de/index.php/benutzung-mplab-ide.html

Konfiguration eines PIC18‐Mikrocontrollers
munz-udo.de/pic/KonfigPIC.pdf


Ansteuern von LCD-Displays, C18
http://www.munz-udo.de/pic/Arbeitsauftrag1_LCD.pdf

Temperatur- und Feuchte-Sensor, PIC18F2550, C18
technik.ba-ravensburg.de/~lau/wetterstation.html
technik.ba-ravensburg.de/~lau/temperatur-feuchte-quelltext.pdf

mikroC Users Manual,C Compiler, 427 pages
mikroe.com/pdf/mikroc/mikroc_manual.pdf

mikroC PRO for PIC, 634 pages
mikroe.com/eng/downloads/get/30/mikroc_pic_pro_manual_v100.pdf

mikroC making it simple
eduardobotelho.com.br/eletronica/microcontrolador/PIC_03.pdf

DCF-77 PIC LED clock , 4 x 7 segments LED display, mikroC
http://www.micro-examples.com/public/microex-navig/doc/100-p16f84-led-dcf-clock.html
http://www.micro-examples.com/public/microex-navig/doc/100-dcf77-led-clock-source-code

DTMF Tongenerator, CC5x, PIC16F876
fernando-heitor.de/index.php/forum/index.php/action,dlattach/topic,4323.0/attach,1685/
Mehrfrequenzwahlverfahren, de.wikipedia.org/wiki/Mehrfrequenzwahlverfahren

PIC Sound Generator, C18, PIC18F1320
electro-tech-online.com/microcontrollers/111304-pic-sound-generator.html

The Design of Aurora's Sound Generator, Hi-TECH C, PIC16C73A
ece.ubc.ca/~edc/aurora/#Hardwar

1Hz Clock Generator using PIC12F675, mikroC
picnote.blogspot.com/2009/02/1hz-clock-generator-using-pic12f675.htm

Programmation en C des PIC, oft C18
aix-mrs.iufm.fr/formations/filieres/ge/data/PIC/PICC/indexPIC_C.htm

Jouez aux Echecs avec un PIC18, Schach mit PIC, PC als Terminal
aix-mrs.iufm.fr/formations/filieres/ge/data/PIC/PICC/echecs.zip

Cours langage C18
aix-mrs.iufm.fr/formations/filieres/ge/data/PIC/PICC/cours Cmini PIC.pdf

Super Scrabble Timer and Scorekeeper, PIC18F452, C18
cs.columbia.edu/~sedwards/classes/2005/4840/reports/Scrabble.pdf

Elektrische Waage, PIC18F4520, C18, 54 Seiten
virtualuniversity.ch/elektronik/projekte/Elektronische_Waage_PIC18F4520.pdf

Designing Embedded Systems with PIC Microcontrollers, C18
http://www.abramovbenjamin.net/orcad/Designing_Embedded_Systems_with_PIC.pdf

SalvoTM Real Time Operating System, RTOS, PIC, Salvo Lite kostenlos
download-it.org/free_files/filePages from 19 The SalvoTM Real Time Operating System.pdf

RM-PICC18 Salvo Compiler Reference Manual – HI-TECH PICC-18
pumpkininc.com/content/doc/manual/rm-picc18.pdf

Die Seite enthält einige PIC-Projekte mit C18
pathsim2.ece.vt.edu/classes/

DVM (DigitalVoltMeter) is based on PIC18F46K20
dientuvn.com/home/images/stories/docman/eme_resources/projects/DVM.pdf

DS1820 1-Wire Temperature Sensor, C18
members.aon.at/electronics/pic/projects/ds1820/ds1820.html

RFM12 - Wireless Transceiver Module Demo, C18
members.aon.at/electronics/pic/projects/rfm12/rfm12.html

PIC C Compiler Overview
http://members.aon.at/electronics/pic/picpgm/compiler.html
nicht aufgeführt: mikroe.com/eng/products/view/7/mikroc-pro-for-pic/

HI-TECH C for PIC18 MCU Family , Lite kostenlos
microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en542861

HI-TECH C Compiler for PIC18 MCUs - Lite mode v9.65
tinyurl.com/3ywsb8w

HI-TECH C Tools for the PIC18
tinyurl.com/3ywsb8w

Mikrocontroller, PIC18F4450, C18
delphi.uni-wuppertal.de/~kind/ep11_10.pdf
    
C sample code for PIC micros and Hi-Tech C
microchipc.com/sourcecode/#interface

Pegasus Robot Motion Controller Project, dsPIC30F4011
multiaxismotion.com/Projects/O.1000/P.18/Docs_20080626.zip
multiaxismotion.com/Projects/O.1000/P.18/Docs_20080626.files

Microcontrollers Project Examples , u.a PIC, u.a. C
micro-examples.com/public/microex-navig/doc/200-pic-microcontroller-examples.html

PIC-gestützter manipulationsgeschützter Datenlogger mit Bediengerät, PIC18F452, C18
jufo-hermannsburg.de/pdfs/2009-datenlogger.pdf


Mikrocontroller allgemein

Mikrocontroller, u.a. auch C, auch mit Videos
et-tutorials.de/mikrocontroller/

ADC without ADC
josepino.com/microcontroller/adc_wout_adc

C allgemein

C (Programmiersprache), Wikipedia
de.wikipedia.org/wiki/C_(Programmiersprache)

C, Master index
home.fhtw-berlin.de/~junghans/cref/master_index.html

Übersicht über die C Standard-Bibliothek
www2.hs-fulda.de/~klingebiel/c-stdlib/index.htm

C Reference Card (ANSI)
refcards.com/docs/silvermanj/ansi-c/ansi-c-refcard-a4.pdf

C-Befehle
sven-wambsganss.de/download/c_befehle_version2.3.pdf

Linksammlung C, english
lysator.liu.se/c/

C von A bis Z von Jürgen Wolf, komplettes Buch mit 1116 Seiten als kostenloser download
download.galileo-press.de/openbook/c_von_a_bis_z/galileocomputing_c_von_a_bis_z.zip
oder online:
hs-augsburg.de/~sandman/c_von_a_bis_z/

Einführung in C
eggdrop.ch/texts/c/index.htm

Programmierung in “C” beim Microcontroller, 13 Seiten
(Link bitte in Browser kopieren, Läst sich scheinbar durch die Leerzeichen nicht verlinken, funktioniert auch nicht mit http://tinyurl.com)
http://141.69.160.32/~krausg/ATMEL_ATM1_Board/CD_Atmelboard ATM1/Alles fuer die Programmierung und Bedienung/Unterricht_Manuskript_C   für Microcontroller/Microsoft Word - C-MICRO1.pdf

Grundlagen der C/C++-Programmierung
mut.de/books/3827264537/Grundlagen der C++-Programmierung.htm

PIC-Microcontroller: Programmierung in Assembler und C
tinyurl.com/3ad4r82 (books.goggle)

C als erste Programmiersprache: Vom Einsteiger zum Profi
tinyurl.com/2wyvwje (books.goggle)

ANSI-C vom Einsteiger zum Profi, 341 Seiten
et.hs-mannheim.de/dit/Scripten_LV/DV1_2_Skript.pdf

Tutorial / Einsteigerkurs in das Programmieren mit ANSI C, 295 Seiten
upload.wikimedia.org/wikibooks/de/8/8d/CProgrammierung.pdf

Einführung in die Programmiersprache C, 97 Seiten
krucker.ch/Skripten-Uebungen/Inf1/C_Kurs(11-11-2003).pdf

Programmieren in C, Eine Einführung, 81 Seiten
uni-giessen.de/hrz/software/programmiersprachen/C/c_alles.pdf

ANSI-C Programmierung
ba-dresden.de/~engelhardt/Lehrunterlagen/ANSI-C_Folien_2007_Dez_10.pdf

ANSI-C im Überblick, 98 Seiten
iks.hs-merseburg.de/~uschroet/Literatur/C_Lit/ansi-c.pdf

ANSI-C im Überblick, 93 Seiten
info.baeumle-courth.eu/ansic.html

Programmieren in C - Überblick
netzmafia.de/skripten/ad/thomas-c/index.html

Programmieren in C, 90 Seiten
ipp.tu-clausthal.de/fileadmin/IPP/Dokumente/Skripte_Plaene/EP/EP_Skript_ss09.pdf

Einf¨uhrung in die Programmiersprache C, 134 Seiten
math.tu-bs.de/~c-kurs/datenblaetter/skript.pdf

Programmieren in C, 110 Seiten
fbim.fh-regensburg.de/~sce39014/pg1/pg1-skript.pdf

Einf¨uhrung in die Programmierung mit C, 229 Seiten
cs.hs-rm.de/~panitz/c/skript.pdf

Programmieren in C, 206 Seiten
vorlesungen.uni-osnabrueck.de/informatik/cc02/cc.pdf

C-Crashkurs, 31 Seiten
www-i6.informatik.rwth-aachen.de/web/Teaching/Lectures/WS07_08/SysPro/uebung/crashkursC.pdf

Kurzeinführung in die Programmiersprache C, 62 Seiten
hmh-ev.de/files/ckurs.pdf

ANSI-C for L-Kiss, Text deutsch, Atmega, 32 Seiten
lemps.ch/kiss/C-Tool_09_V2_2Kiss.pdf

Programmieren in C, 316 Seiten
it.fht-esslingen.de/~harms/inf1/c_gesamt.pdf

Programmieren in C, 206
vorlesungen.uni-osnabrueck.de/informatik/cc02/cc.pdf

Einführung in C, 20 Seiten
wissrech.ins.uni-bonn.de/teaching/prama1_ws05/c-einfuehrung.pdf

Einführung in die Programmiersprache C, 134 Seiten

http://www.math.tu-bs.de/~c-kurs/datenblaetter/skript.pdf

Programmieren in C, 74 Seiten
rz.uni-osnabrueck.de/Zum_Nachlesen/Skripte_Tutorials/Programmieren_In_C/pdf/cprog.pdf

Softwareentwicklung in C, 145 Seiten
zuberweb.de/files/skript.pdf

Softwareentwicklung in C, 422 Seiten
asc.tuwien.ac.at/eprog/download/schmaranz.pdf

Programmieren mit ‚C’, 67 Seiten
stefanmuegge.de/home/Download/Vorlesungen/Programmieren_mit_C.pdf

Programmierung in C: Einstieg, 12 Seiten
public.fh-wolfenbuettel.de/~maertenh/EinfProg_WS0607/Kap3.pdf

Programmierung in C: fortgeschrittene Themen, 9 Seiten
public.fh-wolfenbuettel.de/~maertenh/EinfProg_WS0607/Kap4.pdf

Algorithmen und Programmierung, u.a. C, 198 Seiten
osg.informatik.tu-chemnitz.de/lehre/aup/AuP-script.pdf

C Übersicht
ostc.de/c-intro.pdf

C Programmieren, Übersicht, 10 Seiten
tinyurl.com/23bc4jw  pdf

Programmierleitfaden C, 36 Seiten
dguv.de/ifa/de/pra/softwa/sicherheitssoftware/download/programmierleitfaden_C.pdf

Systemprogrammierung in C, 30 Seiten
tik.ee.ethz.ch/tik/education/lectures/TI2/fp_aufgaben/TI_Fachpraktikum_1.pdf

Programmiersprache C, 32 Seiten
web.physik.rwth-aachen.de/~roth/dvphysik/v03.pdf

C-Crashkurs, 31 Seiten
www-i6.informatik.rwth-aachen.de/web/Teaching/Lectures/WS07_08/SysPro/uebung/crashkursC.pdf

Einf¨uhrung in die Programmiersprache C, 84 Seiten
sec.in.tum.de/assets/lehre/ws1011/aud/uebungen/ceinf/c-einfuehrung.pdf

C-Crashcourse, 112 Seiten
user.cs.tu-berlin.de/~mwerner/lect/unix/1-ccc.pdf

Programmierkurs C C++, 315 Seiten
ingenieur-informatik.net/index.php?option=com_docman&task=doc_download&gid=40

Einführung in C/C++, 271 Seiten
abklex.de/skripten/ccplus9.pdf
abklex.de/skripten/ccplus14.pdf

Strukturiertes Programmieren in C, 276 Seiten
blidet.de/Dateien/c-skript.pdf

Softwareentwicklung in C, 422 Seiten
asc.tuwien.ac.at/eprog/download/schmaranz.pdf

Einführung in die Programmiersprache C, 234 Seiten.pdf
c-plusplus.de/cms/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=45&nocache=1

Einführung in die Programmierung mit C, 229 Seiten
http://www.cs.hs-rm.de/~panitz/c/skript.pdf

Programmiren in C un C++, 89 Seiten
physik.uni-regensburg.de/studium/edverg/ckurs/cskript.pdf

Einführung in die Programmiersprache C, 234 Seiten
hdm-stuttgart.de/~ms096/c_kurs_im_internet.pdf

Programmieren in C, 316 Seiten
it.fht-esslingen.de/~harms/inf1/c_gesamt.pdf

Programmieren in C, 211 Seiten
igt.uni-stuttgart.de/LstDiffgeo/Effenberger/lehre/ckurs10/C-Skript.pdf

C-Vorlesungsskript
c-plusplus.de/cms/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=8&nocache=1

Tutorials und Ebooks (deutsch), C
c-plusplus.de/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=3

Angewandte Informatik in C, 157 Seiten
teacher.schule.at/kreik/pdf/AINF_C_Skript.pdf

Programmiersprache C, 61 Seiten
phong.informatik.uni-leipzig.de/~kuska/update/cee.pdf

Kurzeinführung in die Programmiersprache C, 62 Seiten
hmh-ev.de/files/ckurs.pdf

Programmieren in C und C++, 109 Seiten
feyrer.de/PGC/script-schicker.pdf

C++ Kurs für totale Anfänger, 183
files.homepagemodules.de/b121417/f84t57p69n1.pdf

C-Tutorial, viele praktische Beispiele
rn-wissen.de/index.php/C-Tutorial

C Programming Tutorial, 410 Seiten
iu.hio.no/~mark/CTutorial/C-Tut-4.02.pdf

C Programming Tutorial (K&R version 4)
http://www.iu.hio.no/~mark/CTutorial/CTutorial.html

The GNU C Programming tutorial, 290 Seiten

http://www.iu.hio.no/~mark/CTutorial/GNU-ctut.pdf

C Tutorial, C lernen (Dev- C++)
c-programmieren.com/C-Lernen.pdf
c-programmieren.com/C-Lernen.html

A Tutorial on Pointers and arrays in C
pweb.netcom.com/~tjensen/ptr/pointers.pdf

portabler C Compiler, Dev- C++, deutsche Benutzeroberfläche (IDE) einstellbar
sourceforge.net/projects/devcpp-portable/files/devcpp-portable/4.9.9.2%20Revision%204/Dev-CppPortable_4.9.9.2_Revision_4.paf.exe/download

The Dev- C++ Resource Site
bloodshed.net/dev



 

 PICkit3
 

hohe Auflösung

microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en538340&redirects=pickit3

digital-bahn.de/ab/2010/ab-2010-04.pdf

reichelt.de/?ACTION=3;ARTICLE=87178;GROUPID=2969;PROVID=4



 Fotos von PIC-Controllern:
 







Alle zusammen:




Kritik, Anregungen etc. bitte an den Webmaster: webmaster

© Copyright, Norbert Moch, Kleiststr. 9, 30163 Hannover, Tel. 0511/624039, www.NorbertMoch.de, mail@NorbertMoch.de
nichtkommerzielle, unveränderte Weitergabe mit Quellenangabe für privaten Gebrauch ist gestattet Veröffentlichung im Internet ist nicht gestattet