RoboLeo
04.11.2005, 14:50
Hallo
Hab mal wieder ein kleines Programmierproblem.
Hatte einen 16F628A PIC so programmiert das er mir in 100ms Zeitintervallen einen Datenstring via RS232 an den Computer sendet. Das hat einwandfrei funktioniert.
Da ich nun aber den PIC wechseln muss (Brauch mehr IOs) wollte ich das Programm auf den 16F877A kopieren.
Nun hab ich das Problem das dieser PIC scheinbar keine long decimals senden kann. Schreibe ich %ld stoppt der PIC bei der Datenuebertragung. Habs simuliert.
Wenn ich allerdings %x schreibe sendet er die Daten. Allerdings in HEX und nicht dezimal. Hardwaremaessig ist es genauso.
Versteh das nicht.
Schon mal danke.
Hier der Code.
#int_RTCC
RTCC_isr()
{
if(timerdelay == 50)
{
output_high(PIN_A0);
timercount++;
printf("%ld , %ld , %ld,\n",timercount,hallgear,hallwheel);
}
else
{
timerdelay++;
}
output_low(Pin_A0);
}
//Die Variablen sind als int8 bis int32 initialisiert
Bye
Hab mal wieder ein kleines Programmierproblem.
Hatte einen 16F628A PIC so programmiert das er mir in 100ms Zeitintervallen einen Datenstring via RS232 an den Computer sendet. Das hat einwandfrei funktioniert.
Da ich nun aber den PIC wechseln muss (Brauch mehr IOs) wollte ich das Programm auf den 16F877A kopieren.
Nun hab ich das Problem das dieser PIC scheinbar keine long decimals senden kann. Schreibe ich %ld stoppt der PIC bei der Datenuebertragung. Habs simuliert.
Wenn ich allerdings %x schreibe sendet er die Daten. Allerdings in HEX und nicht dezimal. Hardwaremaessig ist es genauso.
Versteh das nicht.
Schon mal danke.
Hier der Code.
#int_RTCC
RTCC_isr()
{
if(timerdelay == 50)
{
output_high(PIN_A0);
timercount++;
printf("%ld , %ld , %ld,\n",timercount,hallgear,hallwheel);
}
else
{
timerdelay++;
}
output_low(Pin_A0);
}
//Die Variablen sind als int8 bis int32 initialisiert
Bye