Hallo,
kennt sich hier jemand mit dem ISD51 Debugger von der Fa. Keil aus?
Ich versuche meinen Mikrokontroller AT89C51AC3 mit dem ISD51 zu
debuggen, aber in dem Debugging-Modus bleibt mein Programm stehen und
will nicht aus der Funktion „ISDwait()“ raus springen.
Auf diese Weise funktioniert das Debuggen:
main(){
…
initUART();
ISDinit();
…
while(1){
ISDcheck();
…
}
}
Problem: Auf diese Weise funktioniert das Debuggen nicht:
main(){
…
initUART();
ISDwait(); // hier bleibt das Prog. immer stehen!!!
…
while(1){
…
}
}
In der Funktion „ISDwait()“ wird (über die RS232 Schnittstelle) der Wert
0xA5 von meiner IDE (Keil Debugger) erwartet, diesen konnte ich mit
Hyperterminal empfangen. Wenn dieser HEX-Wert vom Mikrokontroller
empfangen wird, muss folgendes passieren:
- Die Kommunikation mit der IDE ist aufgebaut
- ISD wird initialisiert
- Programm muss weiter laufen
In meinem Fall wird 0xA5 wird empfangen, aber das Programm läuft nicht
weiter.
(Info: MON51 kann ich als Alternative nicht verwenden)
Vielen Dank im Voraus.
Gruß
Denis
ist ISDwait() eine Lib-Funktion oder gibts den Sourcecode? Ralf
Hallo Ralf,
diese Funktion liegt in der ISD51.H Headerdatei, welche im Verzeichnis
„C:\Keil\C51\ISD51“ liegt.
Dateiausschnitt:
...
define ISDinit() \
if (ES == 0) { /* Is ISD51 UART already initialized? */ \
__isd_init (); /* Init ISD51 core & enable ISD interrupt */ \
}
#define ISDwait() \
while (1) { \
if (RI) { /* wait until Debugger sends 0xA5 */ \
if (SBUF == 0xA5) break; \
RI = 0; \
} \
} \
__isd_init (); /* Init ISD51 core & enable ISD interrupt */
#define ISDcheck() \
if (ES == 0) { /* Is ISD51 UART already initialized? */ \
if (RI) { /* wait until Debugger sends 0xA5 */ \
if (SBUF != 0xA5) RI = 0; \
else __isd_init (); /* Init core & ISD interrupt */ \
} \
}
...
Diese wird in mein Programm eingebunden.
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.