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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
i ist in dem Fall 1
1 | |
2 | |
3 | |
4 | |
5 | |
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.