Erklärung zu Debug

OP #953641
Lesenswert?

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
#953649
Lesenswert?

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
OP #954665
Lesenswert?

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.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren