Forum: Mikrocontroller und Digitale Elektronik Beispielprogramm für den PIC 12F629


von Picler (Gast)


Lesenswert?

Ich hab ein PICkit2, ein 12F629 und den PICC C-Compiler.

Nun will ich mal ein Beispielprogramm zum laufen bringen. Zum Beispiel 
eine LED blinken lassen.

1. Hat Jemand son ein einfaches Demo-Programm?

2. Bei der Header-Datei des PICC C-Compiler steht:

#ifndef  HTC_H
#warning Header file pic12f6x.h included directly. Use #include <htc.h> 
instead.
#endif

Was bedeutet das???

3. Hab dann in meinem Programm pic12f6x.h eingebunden, beim Compilieren 
kam der Fehler:

Warning [162] C:\Programme\HI-TECH 
Software\PICC\LITE\9.60\include\pic12f6x.h; 3.80 #warning: Header file 
pic12f6x.h included directly. Use #include <htc.h> instead.

Wieso htc.h????

Sorry, mache das erste mal mit pics rum..

danke für eure hilfe

von Analog (Gast)


Lesenswert?

Hallo Picler,

also

1. Solche Beispiele findest du entweder bei examples in deinem 
Compiler-Verzeichnis oder auf der Microchip-Homepage
2. =3. Das bedeutet, das du die Header-Datei direkt eingebunden hast und 
du sollst das nicht machen, sondern htc.h einbinden. Die htc.h sucht 
sich die richtige Header-Datei aus der Bauteil-Definition deines 
Projekts. Mit welchem Compiler arbeitest du eigentlich ? Mach einfach 
mal die htc.h auf, dann siehst du lauter abfragen zu den Prozessor-typen 
und dann eine zugehörigen include ...

gruß

von Picler (Gast)


Lesenswert?

Ich arbeite mit dem PICC Lite 9.6

Wo finde ich die htc.h? Im "include" verzeichnis ist sie nicht...

von Picler (Gast)


Lesenswert?

Compilieren geht.
Will man ein Schalter einlesen und an einem Pin ausgeben. Läuft aber 
leider nicht, was mach ich falsch?

#include <pic12f6x.h>

main()
{
//Init
static bit bitvar;

TRIS3 = 1; //GPIO3 Input
TRIS1 = 0;


    while(1 == 1)               //  Loop Forever
    {
    bitvar = GPIO3;
    GPIO1 = bitvar;
    }
}

von holger (Gast)


Lesenswert?

Füge ganz am Anfang mal folgende Zeile ein:

 CMCON=0x07; //alles digitale IO-Pins

von Picler (Gast)


Lesenswert?

Danke, geht aber noch nicht.

Muss ich  icht auch noch ANSEL Null setzen?

Wenn ich

ANSEL = 0x00;

mache, kommt die Fehlermeldung

undefined identifier "ANSEL"


Wieso das? ANSEL ist doch im header-file definiert.

von Severino R. (severino)


Lesenswert?

Picler wrote:
> undefined identifier "ANSEL"
> Wieso das? ANSEL ist doch im header-file definiert.

Der PIC12F629 hat gar kein ANSEL, weil er keinen A/D-Wandler hat.


Kannst Du die LED wenigstens statisch einschalten?
z.B.
1
#include <htc.h>
2
3
main()
4
{
5
//Init
6
static bit bitvar;
7
8
TRIS3 = 1; //GPIO3 Input
9
TRIS1 = 0;
10
11
12
    while(1)               //  Loop Forever
13
    {
14
    GPIO1 = 1;             // oder =0, je nachdem wie die LED angeschlossen ist
15
    }
16
}

von holger (Gast)


Lesenswert?

CMCON beim statischen setzen nicht vergessen !

von Picler (Gast)


Lesenswert?

Ich musste natürlich denn Oszi noch auf Intern stellen;-)

Der 12F629 hat ja nur zwei Timer. Ist es damit möglich einerseits eine 
Zeit zu messen und andererseits ein PWM zu erzeugen?

von Picler (Gast)


Lesenswert?

Kennt jemand Beispielcode wie ich mit einem Timer eine PWM erzeuge?

von Picler (Gast)


Lesenswert?

Sagen wir ich  hab einen Timer 0.

Wird der Interrupt von Timer 0 ausgelöst mach ich folgendes:

Timer mit X laden
(jedes zweite mal mit 1000-X)
Ausgang Invertieren
Timer Starten


Der Timer hätte dann eine Periode von 1000 und eine Pulsweite von X.

Geht das so?

von Picler (Gast)


Lesenswert?

Ich meine Natürlich der Ausgang hätte eine Periode von 1000 und eine 
Pulsweite von X.

Machbar so?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.