Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC- Programmierung
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, 22:50
Um was für einen PIC handelt es sich denn?
Es handelt sich um den PIC12F675.
Kannst du mir vielleicht helfen??
Hast du schon mal da reingesehen ? Spitzenseite für PIC-Geschädigte
www.sprut.de
art-hightech
13.06.2005, 13: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.)
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, 22: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?
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!!
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)
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
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
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
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
Ich bräuchte das nur für ein Maturaprojekt. Ich weis es ist ein schwere Entscheidung. Danke noch mals für deine Hilfe!!
Manuela
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.