Guten Tag Leute ich brauche eure Hilfe denn ich bin am verzweifeln und weiß nicht weiter. (Ich Programmiere seit ca.1,5 Wochen bin halt noch ein noob) Benutze Rowley Crossworks 1.4 MSP430F169 Olimex Evalution Board. Also das einzige was ich bis gemacht habe und es hat funktioniert war ein Lauflicht :-) mit 8 LEDS. und einen Zähler. Hier das Progr. #include <msp430x16x.h> void pause(unsigned int mswert); void main(void) { { WDTCTL = WDTPW + WDTHOLD; // Stop WDT. BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL. P5DIR=0b11111111; P5SEL=0b00000000; for(;;) { P5OUT=0b00000001; pause(500); P5OUT=0b00000010; pause(500); P5OUT=0b00000100; pause(500); P5OUT=0b00001000; pause(500); P5OUT=0b00010000; pause(500); P5OUT=0b00100000; pause(500); P5OUT=0b01000000; pause(500); P5OUT=0b10000000; pause(500); } } } void pause(unsigned int mswert) { unsigned int iZaehler; for (iZaehler=0; iZaehler<(26*mswert);iZaehler++) { } } ______________________________________________________________ Habe folgendes Problem. Ich habe versucht als nächstes mit einem Taster eine LED oder verschiedene LEDS ein und auszuschalten. Bei diesem Beispiel will ich das alle 8 LEDS AN und AUS geschaltet werden. Die LEDS sind alle an P5 (5.0 bis 5.7) angeschlossen. der Taster an P4 (4.3) ich habe folgendes Programm geschrieben. #include <msp430x16x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT. BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL. P5DIR=0b11111111; P5SEL=0b00000000; P4DIR=0b00000000; P4SEL=0b00000000; { for(;;) { P5OUT=P4IN; } } } Problem es geht nur die 4LED an und aus!!!!! Warscheinlich weil der Taster nur an 4.3 angschlossen ist?????? Wenn ich die übrigen Pins 4.0 bis 4.7 berühre gehen die anderen LEDs auch an. Was kann ich denn machen???? Danke für eure Hilfe schon im Voraus und wie gesagt bin halt noch n Noob nehmt n bisschen Rücksicht. :-D
> Was kann ich denn machen????
Statt
P5OUT=P4IN;
schreibst du
if (P4IN&0x8) // P4.3
P5OUT = 0xff;
else
P5OUT = 0;
Und kauf dir das Buch "Programmieren in C" von K&R ;-)
Lothar ich danke dir!!!! es funktioniert :-))) ___________________________________ Erklärung if (P4IN&0x8) ===== Wenn P4IN und 0x8? // 0x8 für die 8 Ausgänge??? Kannst du mir das Bitte genauer erklären was du hier gemacht hast?? P5OUT //Alle AN else P5OUT = 0 //Alle Aus
> Wenn P4IN und 0x8?
Port-Bit Nr 76543210
0x8 = binär 00001000
Ich habe also nur den Port 4 mit 00001000 verundet und wenn der P4.3
gesetzt ist, bleibt 00001000 übrig. Wenn der Port 4.3 nicht gesetzt
ist, bleibt 00000000 übrig.
Und die if-Abfrage in C sagt:
wenn der Wert in der if-Klammer ungleich Null ist, dann mache was.
Alles weitere steht im angesprochenen Buch ;-)
Hier noch ein paar wichtige tips zum tasten programmieren. 1) gucke dir im datenblatt was die register PxREN (x steht für den port 1 oder 2 oder...) machen. Hier ist die erklärung warum die LEDs schon bei berührung der PINs angegangen sind. 2) schlagwort "Tastenentprellung" (dafür gibt es ein Code von peter hier, was sehr gut ist) MFG
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.