Nachdem ich bereits die LED's der verschiedenen Ports ansprechen und verschiedene Spielereien anstellen kann, würde ich jetzt gerne die Taster verwenden. Wer kann mir ein Beispiel geben, damit ich das Prinzip dahinter verstehe? Wie kann ich zum Beispiel mit einem Taster von Port E die LED's des Port C ansprechen? DANKE!!!
Welcher µC ? Welche Programmiersprache ? Welcher Compiler ? Fragen über Fragen.
Mit dem TRIS Register den Port auf Eingang setzen. Dann mit LAT Register den Port abfragen, wo der Schalter dran ist. Im Programm dann das LAT Register setzen wenn der Eingang high ist, wo deine LED dran ist.
Wie muss ich das umsetzen? "Dann mit LAT Register den Port abfragen, wo der Schalter dran ist."
Z.B. in LATA.1 steht ob der Port A1, Null oder Eins ist. Also ob Taster gedrückt ist oder nicht. Lies dir das Datenblatt des µC zu den Registern durch, da steht alles drin.
Das werde ich am Nachmittag, wenn ich mehr Zeit habe machen. Kann ich einen Taster nicht einfach mit if((Taster0 & 0x01) == 1) { ... } abfragen?
Was ist Taster0 ? Du mußt dich schon an die Befehle des µC halten. Du kannst natürlich sie neu definieren und selber namen geben. Das muß aber im Programm gemacht werden.
Oder einfach if LATE.0 = 1 then LATC.0 = 1 end if
Hast du dir schon die Beispiele angeschaut? Download examples, mitte website, links: http://www.mikroe.com/eng/products/view/757/easypic-v7-development-system/
Bei diesem Code, handelt es sich aber nicht mehr um reines C oder? if LATE.0 = 1 then LATC.0 = 1 end if Ich möchte mich noch nicht zu weit von den 0815 Codes weg bewegen.
Do Ma schrieb: > Bei diesem Code, handelt es sich aber nicht mehr um reines C oder? Sieht wie Basic aus.
Die Beispiele werden mit installiert wenn der Compiler installiert wird. Ja ist MBasic aber ist in C fast das selbe. Die Befehle des µC bleiben auch in C die selben.
Leider kann ich mit if LATE.0 = 1 then LATC.0 = 1 end if nichts anfangen. In C sollte es wohl if(LATE.0 == 1) { LATC.0 = 1; } heißen. Das funktioniert aber so nicht.
Die Ports als Eingang und Ausgang gesetzt ?
TRISC = 0x00; TRISE = 0x07; ??? Die Fehlermeldungen: 9 406 ')' expected, but '.0' found 9 315 Invalid expression 9 402 ; expected, but ')' 11 424 '}' expected ';' 12 312 Internal error '' 0 102 Finished (with errors): 07 Jän 2012, 14:19:53
Man liest über die LATx Register blos das zurück, was man in das Output-Latch herein geschrieben hat. Wenn man aber die Pinzustände einlesen möchte, dann muss man laut Datenblatt das entsprechende PORT-Register verwenden. Gruß Oliver
Ja richtig. Mußt um den Taster ab zu fragen, das PORT Register nehmen. Also, If PORTE.0 = 1 then usw. Und du mußt die Ports auf digital setzten. Dafür ist das Ansel Register zuständig.
Danke für eure Antworten! Ich habe mir das einfacher vorgestellt*gg*.
Der µC ist für den Anfang auch nicht gerade einfach. Aber schau dir die Demos mal an und mach dich vertraut, mit dem Datenblatt. Da steht eigentlich alles drin. Ansonsten üben üben üben. Und wenn fragen sind, dann immer fragen. Hier kann man auch mal vorbei schauen, da es für PIC ist. http://pic-projekte.de/phpBB3/
Kann mir bitte jemand in kurzen und einfachen Sätzen, die zwei if-Bedingungen aus der do-while-Schleife aus dem unten stehenden Quelltext erklären?
1 | bit oldstate; // Old state flag |
2 | |
3 | void main() { |
4 | |
5 | ANSELB = 0; // Configure PORTB pins as digital |
6 | ANSELC = 0; // Configure PORTC pins as digital |
7 | |
8 | TRISB0_bit = 1; // set RB0 pin as input |
9 | |
10 | TRISC = 0x00; // Configure PORTC as output |
11 | LATC = 0xAA; // Initial PORTC value |
12 | |
13 | oldstate = 0; |
14 | |
15 | do { |
16 | if (Button(&PORTB, 0, 1, 1)) { // Detect logical one |
17 | oldstate = 1; // Update flag |
18 | }
|
19 | if (oldstate && Button(&PORTB, 0, 1, 0)) { // Detect one-to-zero transition |
20 | LATC = ~LATC; // Invert PORTC |
21 | oldstate = 0; // Update flag |
22 | }
|
23 | } while(1); // Endless loop |
24 | }
|
if (Button(&PORTB, 0, 1, 1)) { Wenn der Port B0 für 1ms high ist, wird oldstate = 1; auf 1 gesetzt. if (oldstate && Button(&PORTB, 0, 1, 0)) { Wenn der Port B0 auf low gesetzt wird für 1ms, dann wird der rest ausgeführt. Also LED setzten. Siehe dazu auch die Hilfe des Compilers. Da steht es auch nochmal beschrieben.
Also ist Button() eine Funktion und 0, 1, 1 die Parameter!? DANKE!
Ja richtig. So kann man Tasten entprellen.
Eine letzte Frage zu diesem Programm habe ich bitte noch: Was hat folgende Code-Zeile für einen Sinn. Wenn ich diese auskommentiere, verändert sich überhaupt nichts!?
1 | TRISB0_bit = 1; // set RB0 pin as input |
Setzt den Port B0 auf Eingang.
Das steht als Kommentar nebenbei aber es passiert nichts, wenn man es deaktiviert!?
Was meinst du mit deaktivieren ? Was änderst du und wie ?
1 | // TRISB0_bit = 1; // set RB0 pin as input
|
Wenn man diesen µC startet, dann sind seine Ports als Eingang geschaltet. Da man aber nicht immer weis, wie die µC beim starten ihre Ports haben, setzt man sie am Anfang eines Programm immer so wie man sie haben will. Auch wenn es in diesm Falle nicht nötig ist. Deshalb immer die Ports so setzen wie man sie braucht dann kann auch nix schief gehen. Besonders wenn man es auf einen anderen µC laufen lassen will, bekäme man dann schwierigkeiten mit dem Programm. Da können die Ports plötzlich als Ausgang definiert beim Starten sein.
Das mache ich also mit TRISB0_bit = 1; Vielen DANK für die super Hilfe!!!
Ja für diesen µC. Bei einer anderen µC Familie, kann es anders sein. (12F,16F,18F usw.) Aber steht auch im Datenblatt wie es da zu Hand haben ist.
Wo gibt es EASYPIC V7 zu kaufen in Deutschland? Ich will nicht per PayPal, Union Western, Kreditkarte bezahlen.
Du gibst einfach deine Frage >Wo gibt es EASYPIC V7 zu kaufen in Deutschland? in GOOGLE ein. Dann landest du bei 3. angezeigten Treffer hier Beitrag "Entwicklungsboard" und erfährtst daß man es da http://www.zeitech.de/PIC kaufen kann. Gruss
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.