Autor Tema: Tablas en hexadecimal  (Leído 1882 veces)

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

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Tablas en hexadecimal
« en: 16 de Enero de 2012, 13:51:17 »
Hola estoy creando una tabla para enviar un comando por TX serial pero no se como hacer que el dato sea en hexadecimal uno de los comando que envió con la tabla es:

DB  "000081 5A 30 30 82 41 41 1B 30 74 9C 41 D2 CF CC CC C9 ", 0x00

pero en la recepción es cualquier cosa, creo que son caracteres ASCII no?
Me pueden orientar para resolver este problema.
Saludos y gracias

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Tablas en hexadecimal
« Respuesta #1 en: 16 de Enero de 2012, 14:22:37 »
todo equivale a lo mismo, es decir:

la letra 'a' (ascii)=97 decimal=61 hexadecimal=0110 0001 binario=141 octal

si tu mandas 61 hexadecimal y lo ves como ascii veras que es una 'a'

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: Tablas en hexadecimal
« Respuesta #2 en: 16 de Enero de 2012, 14:36:50 »
Hola, te muestro como envio el comando:
este es el que quiero enviar:

DT "3c3031593033453E", 0X00

y esto me mostro en el terminal de la PC:

: 33 0c 63 0c 33 0c 30 0c 31 0c 35 0c 39 0c 33 0c 33 0c 34 0c 35 0c 33 0c 45 0c

lo convirtio a otra cosa y me envia entre caracteres este "0C" ?

esta es la rutina que uso:


SEND_COMANDO_1
   movlw   UPPER   COMANDO_1
   movwf   MsnAddressUpper
   movlw   HIGH    COMANDO_1
   movwf   MsnAddressHigh
   movlw   LOW    COMANDO_1
   movwf   MsnAddressLow

LCD_MensToLcd
   movff   MsnAddressUpper,TBLPTRU
   movff   MsnAddressHigh,TBLPTRH
   movff   MsnAddressLow,TBLPTRL

LCD_VisualizaOtroCaracter
   TBLRD*+
   movff   TABLAT,TEMP3            ;Enviamos el carácter.
   movf   TEMP3,F
   bz       LCD_FinMensaj
   movf   TEMP3,W
    MOVFF   TEMP3,TX
   call   ENVIA_TX              ; Visualiza el carácter ASCII leído.
   bra       LCD_VisualizaOtroCaracter   ; dentro del mensaje.

LCD_FinMensaj
   return                            ; Vuelve al programa principal.


y si uso otra que llame a esta tabla

COMANDO_1                          ; Comando que enviamos luego de recibir la contestación
;     RLNCF   TABLA_START,W,ACCESS  ; del cilindro tenemos: 3C 30 31 59 30 33 45 3E
     MOVFF   PCL,W                 ; antes de saltar hay que leer PCL e iniciar PCLATH:PCLATU
     ADDWF   PCL,F                 ; Sumamos PCL y W, el resultado a PCL-> PCL=PCL+W
     RETLW   0x3C                  ;
     RETLW   0x30                  ; otra posible: 3C 30 31 53 34 35 3E
     RETLW   0x31                 
     RETLW   0x59
     RETLW   0x30
     RETLW   0x33
     RETLW   0x45
     RETLW   0x3E
     RETLW   0x00         

Funciona bien!
Mi cambio de una a otra es que quiero aprender a usar las tablas en los pic 18 y me esta costando.
Si sabes de algo decime por favor.
Saludos

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Tablas en hexadecimal
« Respuesta #3 en: 16 de Enero de 2012, 14:50:02 »
Ahi lo que estas enviando es una string, osea caracteres, al ponerlo entre " " declaras que es una string

Si te fijas bien, 3 = 33, c=63, 3=33.....

El 0c nose porque lo envia, en ascii significa "avance".

No estoy muy familiarizado con asm por lo cual en el aspecto de como crear un arreglo nose como iria, a ver si alguien te lo puede decir mas exacto.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Tablas en hexadecimal
« Respuesta #4 en: 16 de Enero de 2012, 16:11:24 »
Que programa utilizas para visualizar en el pc, puede q no este bien configurado, ademas que no entendí bien, la trama que quieres enviar es ascii o es hexadecimal???

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: Tablas en hexadecimal
« Respuesta #5 en: 16 de Enero de 2012, 16:28:54 »
Hola uso el Dohlight, yo necesito el dato en hexa y sin esta forma de envió se veia bien, ademas el equipo no responde, solo funciono con el retlw.
Saludos

Desconectado macedo

  • PIC18
  • ****
  • Mensajes: 270
Re: Tablas en hexadecimal
« Respuesta #6 en: 16 de Enero de 2012, 21:12:45 »
Hola quise decir Docklight, y lo que me parece que con esta forma de tabla el MPLAB es el que hace la conversión y por eso me lo envía de esa forma, habrá aluna forma de decirle que lo deje tal cual esta?

Otra es asi:

Código: [Seleccionar]
SEND_COMANDO_1
movlw UPPER COMANDO_1
movwf MsnAddressUpper
movlw HIGH COMANDO_1
movwf MsnAddressHigh
movlw LOW COMANDO_1
movwf MsnAddressLow

LCD_MensToLcd
movff MsnAddressUpper,TBLPTRU
movff MsnAddressHigh,TBLPTRH
movff MsnAddressLow,TBLPTRL

LCD_VisualizaOtroCaracter
TBLRD*+
movff TABLAT,TEMP3            ;Enviamos el carácter.
movf TEMP3,F
bz     LCD_FinMensaj
movf TEMP3,W
    MOVFF   TEMP3,TX
call ENVIA_TX         ; Visualiza el carácter ASCII leído.
bra     LCD_VisualizaOtroCaracter ; dentro del mensaje.

LCD_FinMensaj
return                 ; Vuelve al programa principal.



COMANDO_1                          ; Comando con el cual mantenemos la comunicación con
;     RLNCF   TABLA_START,W,ACCESS  ; el cilindro en el testeo hasta que este termine
     MOVFF   PCL,W                 ; de inicialize: 3C 30 31 59 31 44 42 3E
     ADDWF   PCL,F                 ;
     RETLW   0x3C                  ;
     RETLW   0x30         
     RETLW   0x31                 
     RETLW   0x59
     RETLW   0x31
     RETLW   0x44
     RETLW   0x42
     RETLW   0x3E
     RETLW   0x00     

Lo envía tal cual pero entre caracteres envía un FF que creo que es el RETLW.
Saludos