Autor Tema: Comandos hexadecimales en CCS por el puerto serie  (Leído 14803 veces)

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

Desconectado rashii

  • PIC10
  • *
  • Mensajes: 39
Comandos hexadecimales en CCS por el puerto serie
« en: 02 de Febrero de 2008, 19:12:55 »
Hola, queria saber como se podría hacer en ccs para enviar y recibir directamente en vez de caracteres normales comandos en hexadecimal, es decir lo que quiero hacer es mandar 0xD3,0xF4....en vez de mandar el su correspondiente valor en caracter...¿es esto posible? y del mismo modo recibirlos como hexadecimales en vez de como caracteres...es que las funciones de printf y getc del ccs no te lo dan en valores hexadecimales. Un saludo.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #1 en: 02 de Febrero de 2008, 19:15:59 »
El sistema Hexadecimal es un sistema de numeración y por consiguiente no afecta al número en cuestión. Lo que varias es el modo de representar el número pero no dicho número. Si quieres verlo en hexadecimal usa:

printf("%X",VarNumero);

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado rashii

  • PIC10
  • *
  • Mensajes: 39
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #2 en: 02 de Febrero de 2008, 19:47:24 »
Gracias jfh, y podría hacer algo así: putc(0x00) ?? como haría si no para enviar un caracter del que se su representación en hexadecimal pero no su representación en decimal? Un saludo.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #3 en: 02 de Febrero de 2008, 19:52:35 »
Como bien dices, se podría hacer como dices:

Tres formas de enviar el mismo número:

putc(13);  // Decimal
putc(0x0D);  // Hexadecimal
putc(0b00001101);  // Binario

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado rashii

  • PIC10
  • *
  • Mensajes: 39
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #4 en: 02 de Febrero de 2008, 20:46:01 »
Perfecto, es justo lo que queria  :-/

Muchas gracias!

Un saludo.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #5 en: 21 de Marzo de 2008, 01:51:34 »
una preguntita,yo tambien quiero mandar comandos en hexa, y pongo asi:
#int_rda
secuencia(){

dato=0x00;
  if(kbhit()){
    dato=getc();
  }
}


void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(global);
  enable_interrupts(int_rda);


   // TODO: USER CODE!!
   
   while(1){
if(dato!=0x00){
     printf("%X%X%X%X%X",0x1E,0x00,0x1C,0xD1,0x00);
     dato =0x00;
    }
   }
}

mi pregunta es la siguiente,lo detecta realmente como datos hexadecimales o como valores ascci que luego interpreta como valores hexa,por decir asi,el valor 1 lo interpreta como 0x31?pregunto esto por que lo he leido en otro post aqui abierto y tengo la duda,gracias por su atencion
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #6 en: 21 de Marzo de 2008, 03:09:27 »
El sistema Hexadecimal es un sistema de numeración y por consiguiente no afecta al número en cuestión. Lo que varias es el modo de representar el número pero no dicho número. Si quieres verlo en hexadecimal usa:

printf("%X",VarNumero);

Un saludo
Ya lo decía Jesús. El dato es el dato, y la notación hexadecimal, decimal, binaria, octal o ascii no son más que formas de representarlo.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #7 en: 21 de Marzo de 2008, 04:16:08 »
Yo para no liarme siempre que se pueda envio caracteres ASCII y el PIC que detecte caracteres ASCII (variables definidas como char, te evitas confusiones).

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #8 en: 21 de Marzo de 2008, 15:24:50 »
ok,entendido,gracias por su tiempo,ya que como siempre digo,el tiempo es lo mas valioso :)
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #9 en: 22 de Marzo de 2008, 02:53:18 »
ok, una cuestion mas, tal vez no me explique bien que es lo que pretendia hacer, es en si mandar estos datos hexadecimales: 1E 00 0C D1 00 07 00 01 00 03 00 01 60 00 72 D7,pero al poner
printf("%X%X%X%X%X%X%X",0x1E,0X00,etc.....);
cuando monitoreo la salida del pic me sale los valores 30 4F 31 61 etc... esto quiere decir que solo lo que hace es convertir el 0 en 30 y asi sucesivamente, lo hice con putc(0x00) y ahi si que me da el valor en hexa, pero no me deja poner una cadena de datos en un mismo putc, como puedo hacer esto? por favor,ya llevo dos dias rompiendome la cabeza si pudieran ayudarme un poquito
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #10 en: 22 de Marzo de 2008, 03:02:22 »
Tienes que sacar los caracteres en ascii, prueba así:
printf("%c%c%c%c%c%c%c",0x1E,0X00,etc.....);

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #11 en: 22 de Marzo de 2008, 04:11:52 »
Que raro.

Si tu haces printf("%X",0x1E) vas a recibir 1E

Si haces printf("%c",0x1E) vas a recibir el caracter no imprimible RS (Separador de Registros)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #12 en: 22 de Marzo de 2008, 04:17:59 »
Que raro.

Si tu haces printf("%X",0x1E) vas a recibir 1E

Si haces printf("%c",0x1E) vas a recibir el caracter no imprimible RS (Separador de Registros)

Creo que estamos liándonos. Si hace esto printf("%X",0x1E) sacará un "1" y una "E", por eso lee 0x30 y 0x4F.
Si lo que quiere es leer 0x1E tendrá que poner printf("%c",0x1E)

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #13 en: 22 de Marzo de 2008, 04:35:01 »
No nos estamos liando Manolo, estamos diciendo lo mismo. El caracter RS corresponde en hexadecimal a 0x1E.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Comandos hexadecimales en CCS por el puerto serie
« Respuesta #14 en: 22 de Marzo de 2008, 04:38:44 »
Ah, ok. ¿Y porqué te parece raro?


 

anything