Hallo, MPLAP 7.60; C18 Comiler; Habe eine bescheidene Frage zu Debug. #pragma config DEBUG = ON #define DEBUG void delay_ms( unsigned char ms ) { int n = 0; #ifdef DEBUG // Timer 3; 1 ms; CLK:4, :8, 1000 = 625; i = (((CLK/4) /8) /1000); // Befehl 1 #else i = (((CLK/4) /8) /10000); // Befehl 2 #endif } Wenn ich am PC das Programm für den PIC erstelle, überprüfe ich es auch mit dem Debugger. In diesem Modus werden immer die Zeilen nach " #else " abgearbeitet. Was ist, wenn das Programm direkt im PIC läuft, werden dann die Zeilen nach " #indef DEBUG " abgearbeitet? Hintergrund meiner Frage. Der Timer soll beim debuggen übersprungen aus Zeitgründen werden. Gruß Siegfried
Das was du meinst hat in erster linie nichts mit Debug zu tun, sondern mit Compilerdirektiven. Kkeines Bsp:
1 | #define IRGENDWAS
|
2 | |
3 | #ifdef IRGENDWAS
|
4 | i = 1 |
5 | #else
|
6 | i = 2 |
7 | #endif
|
i ist in dem Fall 1
1 | #ifdef IRGENDWAS
|
2 | i = 1 |
3 | #else
|
4 | i = 2 |
5 | #endif
|
i ist in dem Fall 2 (da das #define IRGENDWAS fehlt) Also über #define #ifdef ... kann man so verschiedene Programmcodes zur Compilezeit "einblenden" Das Programm MUSS bei einer Änderung neu übersetzt werden. (Manche Entwicklungsumgebungen setzen u.U. automatisch ein DEBUG-Flag wenn man den Debugger startet) Gruß Roland
Hallo, Habe das Beispiel eingesetzt. Will aber nicht wie ich. Ich arbeite mit MPLAP 7.60; C18 Comiler; ICD2 von Andreas. Ist es richtig, wenn das Programm im DEBUG - RUN - Modus (angeschlossen an den ICD2) betrieben wird, das die " #define #ifdef ... " ignoriert werden werden ? Erst wenn ich den PIC ohne Debugger Infos gebrannt ist die Befehle hinter " #indef " bearbeitet. Gruß Siegfried
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.