Autor Tema: Como Cambiar de enteros a caracteres  (Leído 1408 veces)

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

Desconectado Murdco25

  • PIC10
  • *
  • Mensajes: 13
Como Cambiar de enteros a caracteres
« en: 03 de Junio de 2009, 00:03:01 »
Hola nuevamente  publico un problema  necesito enviar pro el puerto serial una cadena de caracteres que eso ya lo puedo hacer peor mi dato es un entero y estoy programando en  PICC pero de lo que se  qeu por el puerto serial unicamente se puden enviar caracteres y yo tengo la suma de una de las entradas de  mi pic en enteros, espero me puedan orientar como lo puedo hacer gracias, les anexo mi programa que suma y necesito enviarlo por el serial gracia spro al ayuda bye.

Código: [Seleccionar]


code=c]#include <16f877a.h>
#include <string.h>
#include <stdlib.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
#use standard_io(d)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include "flex_lcd.c"


long int subidas= 0;
long int bajadas= 0;
int i=0;



void main()
{
  lcd_init();

     do{
         if(input(PIN_D1)==0 && input(PIN_D2)==1)
             do
             {
               if(input(PIN_D1)==1 && input(PIN_D2)==1)
               i=1;
               if(input(PIN_D1)==0 && input(PIN_D2)==0)
               subidas++,
               i=1;
             }
              while(i==0);
              i=0;
            if(input(PIN_D1)==1 && input(PIN_D2)==0)
          do
             {
               if(input(PIN_D1)==1 && input(PIN_D2)==1)
               i=1;
               if(input(PIN_D1)==0 && input(PIN_D2)==0)
               bajadas++,
               i=1;
             }
              while(i==0);
              i=0;

}while(TRUE);

}//end main
« Última modificación: 03 de Junio de 2009, 15:06:25 por un Moderador »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como Cambiar de enteros a caracteres
« Respuesta #1 en: 03 de Junio de 2009, 00:25:29 »
No se si entendi, pero la idea es por ejemplo:

int valor;
Valor=10;

Que se muestre en pantalla 10?

Si es así, utilizar printf:

Código: C
  1. int valor;
  2. printf(%u,valor);
  3.  
  4. int16 valor;
  5. printf(%lu,valor);
  6.  
  7. float valor;
  8. printf(%2.2f,valor); //Por ejemplo mostraría 45.16
No contesto mensajes privados, las consultas en el foro

Desconectado Murdco25

  • PIC10
  • *
  • Mensajes: 13
Re: Como Cambiar de enteros a caracteres
« Respuesta #2 en: 04 de Junio de 2009, 01:13:29 »
Hola gracia spro la respeusta mira coloco mi programa en el cual no funcina cada ves que coloco la interrupcion global "" enable_interrupts(global); " deja de funionar mi programa ya no me muestar pero si la quito la muestra y cuando lo quiero conectar con otro pic no funciona o puedes orientarme paar conectar 2 pics. gracias

Código: C
  1. #include <16f877.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
  5. #use delay(clock=4000000)
  6. #use standard_io(b)
  7. #use standard_io(d)
  8. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
  9. #include "flex_lcd.c"
  10. char Keypress=' ';
  11. char Serie[10];
  12. char Serie2;
  13. char temp[3];
  14. int i=0;
  15. int y = 0;
  16. #int_rda
  17. void serial_isr() {
  18. Keypress=0x00;
  19. if(kbhit()){//Devuelve verdadero si hay un dato en RS232
  20. y = 1;
  21. Keypress=getc(); //El dato recivido lo coloca en keypress
  22. if (Keypress !='\x0a')
  23. {
  24. sprintf(temp,"%c",Keypress);//copia keypress a temp
  25. strcat(Serie,temp);//Coloca temp al final de serie
  26. }
  27. else
  28. i = 1;//nos indica que ha recivido una cadena de caracteres completa
  29. }
  30. }
  31. void main()
  32. {
  33. enable_interrupts(global);
  34. enable_interrupts(int_rda);
  35. strcpy(Serie2,"CLAVE_X");
  36. lcd_init();
  37. do{
  38. if ( y == 1 )
  39. lcd_putc("SI");
  40. else
  41. lcd_putc("NO");
  42. if ( i == 1 )
  43. {
  44. lcd_putc(Serie);
  45. strcpy(Serie,"");//limpia
  46. strcpy(temp,"");//limpia
  47. i=0; //reinicia
  48. }
  49. } while (TRUE);
  50. }