![]() |
![]() |
|
|
|
#1 |
|
Newbie
![]() Registriert seit: 27.02.2007
Beiträge: 3
|
Hallo Helfer.
euer Forum gefällt mir. sind mehr als ein paar sehr schlaue leute drin die immerwieder gute tips geben. Ich möchte gerne mit dem Programm µvision meine LED's die am Port 3 von meinem Prozessor angschlossen sind ansteuern. Das bedeutet ich möchte infach mal sehen ob sie angehen oder ob ich ein lauflicht machen kann usw.. nun habe ich aber nicht so viel ahnung mit C und C++. Mein Prozessor ist der Infineon XC888CM Ich kann die Programme mit DAVE oder µvision schreiben und dann mit dem USP-To JTAG BOX updaten. wie heissen die befehle für LED ein/aus und wie soll ich eine schleife machen fürs lauflicht.. meine LEDs sind an Port 3.1 bis 3.3 angeschlossen. wie initialisiere ich am anfag welche LED's an und aus sein sollen? braucht ihr noch mehr info? ich bednakne mich für eure hilfe. Toni ![]() |
|
|
|
|
|
#2 |
|
Veteran
![]() Registriert seit: 18.10.2006
Beiträge: 465
|
Also wenn du die Programme mit DAVE oder µvision schreiben kannst (wie du sagst), was willst du dann mit C oder C++ ?
Was hast du für ein Interface an deinem Prozessor? Meiner Meinung nach hast du ein für Basteleien nicht sehr geeignetes Instrumentarium. Ein Lauflicht (wieviel LEDs?) wird mit einem ein Schieberegister nachbildenden Programm verwirklicht, das in dem von dir gewünschten Takt das Port 3 ansteuert. Ob das Port dann direkt die LEDs ansteuern kann, bzw. ein Interface (Hardware) erforderlich ist, sagt dir das Datenblatt deines Prozessors. |
|
|
|
|
|
#3 |
|
Senior Member
|
Kannst du ma schaun, ob du vielleicht auch mit Assembler programmieren kannst...dann kann ich dir vielleicht helfen
Grüße Erikly |
|
|
|
|
|
#4 |
|
Master
![]() Registriert seit: 18.06.2004
Alter: 39
Beiträge: 695
|
genau, assembler ist die lösung! ich glaube die befehle SETB P3.1 und CLR P3.1 sind fürs setzen und löschen!
____________________________________
lg Matthias |
|
|
|
|
|
#5 |
|
Senior Member
|
Hmm, ich weiß jetzt nicht genau wies beim normalen PC is, aber ich kenne das Aktivieren eines Ports anders.
Ich habs im Moment leider nicht exakt im Kopf...muss ich auch erst nachschauen. Auf jeden Fall gibts zu jedem Port bestimmte Register. Zu Port P3 gibts zum Beispiel das Register P3OUT, P3DIR, usw. Wenn mich nicht alles täuscht konnte man mit dem PXOUT Register den jeweiligen Port aktivieren, also da ne 1 setzen. Wenn dein LED beispielsweise am P3.1 angeschlossen ist, würdest du das folgendermaßen aktivieren: bis.b #BIT1,&P3OUT das BIT1 bezieht sich auf das P3.!1! Du setzt also in das Register P3OUT mit dem Befehl bis (Bit set) an die 2. stelle von rechts(BIT1) ne logische 1. Wenn nun dein LED am P3.1 angeschlossen is, müsste es leuchten. Wie gesagt, ich weiß nicht genau, ob das beim PC genauso is, wie beispielsweise beim Mikrocontroller. Grüße Erikly |
|
|
|
|
|
#6 |
|
Newbie
![]() Registriert seit: 27.02.2007
Beiträge: 3
|
Hi Leute
Danke für Eure schnelle Antwort.Ich merke schon ich habe es hier mit Experten zu tuen. Also mit Dave bereite ich das Projekt vor. Ich kann z.B die Ports definieren, Timer, ADC, UART usw und starte es in µVision als Projekt. Dann sind schon die ganzen Header Dateien schon da was ich brauche. Im µVision kann ich C, C++ oder Assmebler programmieren ..nur ich kann ja nicht programmieren. ich hab euch mal eine ZIP datei angehängt. gestern habe ich das ausprobiert. mit P3_DATA kann ich z.B meine LED Kombination einschalten. void main( void ) { P3_PUDSEL= 0xFF; //load pullup/pulldown select register P3_PUDEN=0x0; //load pullup/pulldown enable register P3_DIR=15; //load direction register 11111111 P3_DATA=10; //Nun leuchten die LED's 1010 //Beispiele Dezimal 15=1111; 5=0101 } Wie kann ich jetzt z.B mit eine FOR-Schleife einen Lauflicht darstellen? unsigned int i; for (i=0;i<255;i++) { P3_DATA++ } so nicht oder? wenn ihr die zip datei nicht öffnen könnt bzw die daten in der zipdatei ..dann kann ich es euch auch schicken. nochmals danke Toni |
|
|
|
|
|
#7 |
|
Newbie
![]() Registriert seit: 27.02.2007
Beiträge: 3
|
Hallo an alle die mir wegen dem LED Problem geschrieben haben
Ich konnte das Problem mit eine kleine FOR-Schleife lösen. Jetzt laufen die LED's wie ein Lauflicht.. DANKE NOCHMALS Toni P.S.: Wie kann ich diesen Beitrag als erledigt markieren.? P3_DIR = 0xFF; // load direction register P3_PUDSEL = 0xFF; // load pullup/pulldown select register P3_PUDEN = 0x00; // load pullup/pulldown enable register while(1) { for (y=0;y<0x256;y++) { for (i=0;i<50000;i++) { P3_DATA=y; } y=y*2; } } |
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|