TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: macedo 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
-
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'
-
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
-
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.
-
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???
-
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
-
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:
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