Autor Tema: Alguien puede explicarme por qué falla esto?  (Leído 2676 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Elisur

  • PIC10
  • *
  • Mensajes: 12
Alguien puede explicarme por qué falla esto?
« en: 13 de Abril de 2005, 06:53:00 »
Hola a todos, tengo un problema un tanto raro y no le encuentro explicación

Estoy programando con css el siguiente código:

Codigo:
#include <18F452.h>
#use delay (clock=10000000)
#fuses HS,NOWDT,NOPUT,NOBROWNOUT,NODEBUG,NOPROTECT
#use rs232(baud=19200, xmit=PIN_C6,rcv=PIN_C7)

//Variables glabales
long datos[20];
int i;

//Función principal
void main() {
    for (i=0;i<20;i++)  {
        datos[ i ]=i;
        printf("%ld",datos[ i ]) ;
        putc(13) ;
    }

}

Si no me equivoco el resultado que debería mandarse por 232 serían los nºs del 0 a 19...


Entonces...

...Porqué estoy recibiendo esto?




13651
25562
-17579
-4592
-4261
17674
1350
-22588
-21190
-11344
17913
3703
-16642
-3218
20057
-553
-9651
-10788
8875
23883


(Nota: No es problema de las comunicaciones, lo he probado con proteus en un diseño muy simple, obteniendo el mismo resultado)

¿Alguien sabe donde estoy metiendo la pata?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Alguien puede explicarme por qué falla esto?
« Respuesta #1 en: 13 de Abril de 2005, 07:00:00 »
Creo que en tu programa nos estamos perdiendo algo, porque alguna secuencia de caracteres que has puesto coincide con lo que miarroba entiende como control para poner letras en cursiva.
Por favor, edita tu texto y desactiva la casilla "Usa codigos Mi@" para que podamos entenderlo correctamente.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Alguien puede explicarme por qué falla esto?
« Respuesta #2 en: 13 de Abril de 2005, 07:17:00 »
De todas formas, en el supuesto que tu programa sea como el que pego abajo, lo he simulado en Proteus y funciona perfectamente:

#include <16F877.h>
#use delay (clock=10000000)
#fuses HS,NOWDT,NOPUT,NOBROWNOUT,NODEBUG,NOPROTECT
#use rs232(baud=19200, xmit=PIN_C6,rcv=PIN_C7)


//Variables glabales
long datos[20];
int i;

//Función principal
void main() {
    for (i=0;i<20;i++)  {
        datos[ i ]=i;
        printf("%ld",datos[ i ]) ;
        putc(13) ;
    }

}

Desconectado Elisur

  • PIC10
  • *
  • Mensajes: 12
RE: Alguien puede explicarme por qué falla esto?
« Respuesta #3 en: 13 de Abril de 2005, 09:03:00 »
Gracias nocturno66 por responder tan pronto.

Utilizando un pic 16f877 a mí también me funciona, el problema viene al usar un 18F452 (no entiendo por qué tiene que haber diferencias).

La versión del compilador que uso es la PCWH IDE Versión 3.221
 y la versión del Proteus es la 6.5 SP5
(Por si sirve de algo)

De todos modos, gracias de nuevo por estar ahí para intentar echar un cable a los que lo necesitamos

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Alguien puede explicarme por qué falla esto?
« Respuesta #4 en: 13 de Abril de 2005, 10:03:00 »
Holas! Yo tb he probado el codigo y funciona pero hay algo q no entiendo, ¿Porque putc(13)? Weno, mas bien, ¿por que 13? Igual es absurdo pero es la primera vez q lo veo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Alguien puede explicarme por qué falla esto?
« Respuesta #5 en: 13 de Abril de 2005, 11:02:00 »
Pues si funciona con el 16F877, debería hacerlo también con el 18F452. Es probable entonces que el error sea de Proteus.

El ASCII(13) junto con el ASCII(10) son el retorno de carro. En C es más cómodo utilizar printf ("
"Giño; o incluso incluir la secuencia "
" dentro de la cadena que imprimes.

Desconectado Elisur

  • PIC10
  • *
  • Mensajes: 12
RE: Alguien puede explicarme por qué falla esto?
« Respuesta #6 en: 14 de Abril de 2005, 06:47:00 »
Definitivamente es un fallo en la simulación, he vuelto ha programar el pic y desde la placa si que funciona correctamente.

Lo de poner putc(13) efectivamente es igual que poner los caracteres para poner el salto de línea. No sé porqué esta vez me ha dado por ahí.