PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC- Programmierung



Manuela
12.06.2005, 20:38
Hallo!!

Ich brauch eine kleine Hilfe beim PIC programmieren!!! Weis jemand wie ich den Befehlssatz für Tastensteuerung schreiben soll der dann Leds ansteuert?????

MFG Manuela

art-hightech
12.06.2005, 21:50
Um was für einen PIC handelt es sich denn?

Manuela
13.06.2005, 09:46
Es handelt sich um den PIC12F675.

Kannst du mir vielleicht helfen??

PicNick
13.06.2005, 11:50
Hast du schon mal da reingesehen ? Spitzenseite für PIC-Geschädigte

www.sprut.de

art-hightech
13.06.2005, 12:55
Hilfreich zum Programmieren wäre ein Schaltplan der elektronischen Komponenten sowie Infos über deine Hardware- und Softwareausstattung zum Programmieren (was für Programm, hast du schon einen Brenner etc.)

13.06.2005, 15:13
Ich programmiere mit dem PIC C compiler und brennen tu ich den PIC mit Galep3.
Soll ich dir den Schaltplan schicken??

art-hightech
13.06.2005, 21:26
du kannst den Schaltplan auch hier rein stellen, dann sehen ihn mehrere user! Ich selbst programmiere einen anderen PIC...
Was für einen Compiler verwendest du?

Manuela
13.06.2005, 21:41
Habe ich schon vorhin geschrieben. Ich verwende den PIC C Compiler.
Was für einen PIC programmierst du? Einen größeren nicht?
Hier im zusatz die Schaltung vielleicht gehts dann leichter!!

Mobius
14.06.2005, 11:47
Also, große unterschiede zwischen den PICs der 12F und 16F Reihe gibt es keine (nur bei den 18F kommen einige neuen Befehle für den 16Bit Core dazu).

Zum Schaltplan würde ich dir noch empfehlen, bei dem Schalter, welcher zwischen Versorgung und Brenner herumschaltet den Pin-3 über einen 10K Widerstand nach Vcc zu ziehen. Ansonsten schwebt der MCLR-Pin des PICs in der Luft.

Noch eine Frage zu der Versorgung beim Brennen. Gehe ich recht in der Annahme, dass der direkt an den Com-Port des PCs kommt? Weil, wenn ja, wird es dem PIC nicht gefallen die +13V (+12V) vom PC an den Vcc zu bekommen. Da muss noch mindestens ein Spannungsteiler dazwischen.
Wenn das nur eine Schnittstelle zwischen dem Board und einem Brenner bildet, vergiss das ganze Zeug oben ;)

Zum programmieren wird es nicht viel zu sagen geben. Der Programmablauf ist ganz einfach:

Start --> test ob SW1 gedrückt ist --> JA --> LED anmachen --> test ob SW2 gedrückt ist --> JA --> LED2 anmachen --> zum Start springen

Du kannst es auf zwei Arten lösen:
1) Ohne interrputs: Eine unendlichschleife schreiben, der dann, je nachdem, welcher Button gedrückt wurde, eines der LED aufleuchten lässt (oder halt was anderes macht).


movlw B'00000011'
movwf GPIO
loop_main
btfss GPIO,0
call SW2_press
btfss GPIO,1
call SW1_press
goto loop_main

SW2_press
do_somthing_usefull
return

SW1_press
bcf GPIO,4
nop
return


2) mit interrupts, da setzt du den entsprechenden Port und die Intterupt-Flags und lässt das Hauptprogramm wieder in einer unendlichschleife rtieren. Wenn dann eines der Schalter gedrückt wird, wird das Interrupt aufgerufen und es macht dann seine Aufgabe.

MfG
Mobius

(dem oben beschriebenen Programm wird keine Garantie auf Funktionstüchtigkeit vergeben)

Manuela
14.06.2005, 19:30
Danke für den Code. Das problem ist das dieser Code Assembler ist und ich kann nicht so gut Assembler. Hast du vielleicht was in C auch??

Das mit der Schaltung passt schon so, aber danke für den Hinweis!

Manuela

Mobius
14.06.2005, 19:42
Achso, du programmierst in C mach das Leben doch viel einfacher :D ;)
Welchen Compiler benutzt du? Weil das Problm ist halt, dass jeder sein eigenes Süpchen kocht, wenn es um spezielle Sachen, wie z.B.: benennung der Register, geht.



void main()
{
TRISIO=B'00000011'

OPTION=B'00001000' & B'00001000'; //internen pullup für die beiden Schalter nicht vergesse, weiß aber leider nicht, welchen Bit ich bei OPTION_REG setzten muss --> Datasheet...
while(1) //unendlichschleife
{
if(GPIO==2) //schalter 1 gedrückt
Switch1();
if(GPIO==1)
Switch2();
}
}

void Switch1()
{
//do something usefull
}

void Switch2()
{
GPIO=0;
}


MfG
Mobius

14.06.2005, 20:06
Hey danke, das ist super. Das mit den Register glaub ich bekomme ich schon hin.

Eine andere Frage: Was wurde dich am ehestens ansprechen als ein Projekt: Ein Roboter oder ein Ortungssystem für eine Katze????

Manuela

Mobius
15.06.2005, 14:19
Naja, dass sind immer die Fragen, wo ich keine genauen Antworten geben kann :D

Mich würden, erlich gesagt, beide Projekte interessieren, aber wenn ich mich entscheiden müsste, was ich zuerst machen würde, würde ich auf den Roboter tippen.
Wieso? Weil er weitaus "einfacher" ist, da du die volle Kontrolle über seine Bewegungen hast (was man von bei Katze net behaupten kann).

Aber das Ortungsystem hätte auch so seine Anziehungskraft, vor allem, da ich noch keine Implementation von so etwas kenne ;)

MfG
Mobius

Manuela
15.06.2005, 20:19
Ich bräuchte das nur für ein Maturaprojekt. Ich weis es ist ein schwere Entscheidung. Danke noch mals für deine Hilfe!!

Manuela

20.06.2005, 12:10
Hallo,
bei der C Software von Mobius stellt sich noch die Frage, was der Controller tun soll, wenn beide tasten gedruckt sind. Man sollte wohl noch Masken auf das GPIO setzen. Es könnte ja auch noch ein anderer Pin gesetzt sein.

Drewle