Duda PIC rs232

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Spanish to

Threaded View
Estoy enviando datos con un pic (16f877) a un PC por RS-232, y me
encuentro con el problema al enviar en valor de un registro, si coloco
el registro en W y lo envED%o, como es normal lo que recibo es el valor
en ASCII y lo que yo quiero es el valor que contiene el registro, por
ejemplo  si envED%o el valor del registro que vale 0x32 (dec. 50)
aparece 2, la duda es si hay algFA%n tipo de tabla o macro que realice
la conversiF3%n de forma que si el registro vale 0x32 se envED%e vED%a
ASCII en valor en decimal (50). Gracias


Re: Duda PIC rs232
 El otro día, Joan nos estuvo contando:
Quoted text here. Click to load it

El valor 50 está compuesto por 0x35, 0x30 y alguna separación, o sea 3
carácteres son los que tienes que enviar. Se puede hacer la conversión más
o menos fácilmente en asm, busca algun algoritmo ya hecho en google. Si
utilizas C puedes usar la función printf que ya hace la conversión
directamente.


--
Saludos.

Re: Duda PIC rs232

Quoted text here. Click to load it

  O te entiendo lo contrario de lo que dices, o dices lo
contrario de lo que sucede, o ....   si tu envías un registro
lo que envías es el contenido de ese registro, y lo que recibes
es eso mismo. Si envías 0x32, recibes 0x32, no hay en el PIC
ningún firmware encargado de convertir valores binarios a asci.

  Otro tema aparte es que una vez en el PC, un byte 0x32 puede ser
interpretado de distintas formas (pero sigue siendo solo 0x32),
por ejemplo puedes pensar que es el asci '2', o puedes pensar que
es un valor decimal 50, o puedes tomarlo como parte de un numero más
grande o lo que tu quieras.



Re: Duda PIC rs232
Buenas, creo que no me explique bien, de todas formas ya esta
solucionado, pero os pongo un ejemplo y seguro que me entendE9%is

               movlw  'V'
            call    TX_RS232
                   movlw  'a'
            call    TX_RS232
        movlw  'l'
             call    TX_RS232
        movlw  'o'
            call    TX_RS232
        movlw  'r'
            call    TX_RS232
                movlw  '-'
             call    TX_RS232
        movf    Valor,w          ; registro Valor 3D% 0x32 como es normal se
            call    TX_RS232       ; envED%a 32 que en ASCII es 2 y es lo
                                               ; que se muestra en el
pc

lo que buscaba era algFA%n algoritmo para pasar el contenido de valor a
ASCII
de forma que en el PC se mostrara Valor-050 y no Valor-2
            movlw  '-'
            call    TX_RS232
        movf    Valor,w
        movwf    BYTE_a_ASCII
        call    BIN_ASCII             ; rutina con el algoritmo de conversion
        movf    CENTENA_ASCII,w
        call    TX_RS232
        movf    DECENA_ASCII,w
        call    TX_RS232
        movf    UNIDAD_ASCII,w
             call    TX_RS232


Site Timeline