Autor Tema: Quiero convertir 1BYTE a BCD pero en ASM  (Leído 6401 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
Quiero convertir 1BYTE a BCD pero en ASM
« en: 08 de Diciembre de 2005, 09:27:00 »
Necesito su ayuda quiero convertir un byte a BCD y no se me ocurre nada podrian darme una mano

Desconectado kuauhtemok

  • PIC16
  • ***
  • Mensajes: 116
RE: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #1 en: 08 de Diciembre de 2005, 10:25:00 »
Muy facil... utiliza esta subrutina...

SOLO RECUERDA QUE ANTES DE MANDAR LLAMAR ESTA SUBRUTINA  DEBES DE PONER EL NUMERO BCD (BYTE) QUE QUIERES CONVERTIR EN  EL REGISTRO W.

DESPUES DEL REGRESO DE LA SUBRUTINA  LOS VALORES BCD QUEDAN ALMACENADOS EN CENT(CENTENAS)  MSD (DECENAS) Y LSD (UNIDADES)... RECUERDA QUE POR SER SOLO 8 BITES LOS DE UN BYTE... SOLO PODRAS OBTENER HASTA EL MAXIMO DE 255 BCD (O 256 NO RECUERDO BIEN)


;SUBRUTINA DE BINARIO A BCD
BINBCD  
      CLRF   CENT      ;CENTENAS
                                clrf    MSD               ;DECENAS
      movwf   LSD           ;UNIDADES
gtenth  movlw   .10
      subwf   LSD,W
      BTFSS   STATUS,C
      goto    OVERHAUL
      movwf   LSD
      incf    MSD, F
      goto    gtenth
OVERHAUL
      MOVLW   .10
      SUBWF   MSD,W
      BTFSS   STATUS,C
      GOTO   OVER
      MOVWF   MSD
      INCF   CENT,F
      GOTO    OVERHAUL
OVER      
      RETLW   0

Flash
La felicidad no es mas q la ausencia momentanea del dolor

Desconectado manuelroin

  • PIC12
  • **
  • Mensajes: 51
RE: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #2 en: 08 de Diciembre de 2005, 10:31:00 »
QUISIERA QUE ME HAGAS EL PROGRAMA PERO SIN SUBRUTINA PQ YO TENGO UNA PARA CONVERTIR HEX A BCD PERO LO QUE QUIERO ES ENTENDER LA SUBRUTINA PLEASE PERDON TAL VEZ NO ME EXPLIQUE BIEN

Desconectado kuauhtemok

  • PIC16
  • ***
  • Mensajes: 116
RE: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #3 en: 08 de Diciembre de 2005, 10:49:00 »

COMO LO VEN !!!!   loco  algo mas JEFE...  ?  Ardiendo

chiales

Bueno pues no te entiendo que es lo que quieras... pero mira bajate este powerpoint y de seguro le entiendes a la subrutina... lo que la subrutina hace es restar 10 del valor que quieres convertir... y asi se la pasa restando siempre 10...

bINARIO bcd

EL "0D H" del powerponit corresponde al numero de restas que se realizo en el primer paso.

En el powerpoint esta bien explicado..

Saludos ! Flash
La felicidad no es mas q la ausencia momentanea del dolor

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #4 en: 18 de Diciembre de 2005, 07:38:00 »
Escrito originalmente por manuelroin
Necesito su ayuda quiero convertir un byte a BCD y no se me ocurre nada podrian darme una mano


En www.piclist.com busca bcd y encontraras varios ejemplos sobre el tema, con el código comentado Sonrisa

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado fzurita

  • PIC10
  • *
  • Mensajes: 33
Re: RE: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #5 en: 14 de Marzo de 2008, 17:16:37 »
Muy facil... utiliza esta subrutina...

SOLO RECUERDA QUE ANTES DE MANDAR LLAMAR ESTA SUBRUTINA  DEBES DE PONER EL NUMERO BCD (BYTE) QUE QUIERES CONVERTIR EN  EL REGISTRO W.

DESPUES DEL REGRESO DE LA SUBRUTINA  LOS VALORES BCD QUEDAN ALMACENADOS EN CENT(CENTENAS)  MSD (DECENAS) Y LSD (UNIDADES)... RECUERDA QUE POR SER SOLO 8 BITES LOS DE UN BYTE... SOLO PODRAS OBTENER HASTA EL MAXIMO DE 255 BCD (O 256 NO RECUERDO BIEN)


;SUBRUTINA DE BINARIO A BCD
BINBCD  
      CLRF   CENT      ;CENTENAS
                                clrf    MSD               ;DECENAS
      movwf   LSD           ;UNIDADES
gtenth  movlw   .10
      subwf   LSD,W
      BTFSS   STATUS,C
      goto    OVERHAUL
      movwf   LSD
      incf    MSD, F
      goto    gtenth
OVERHAUL
      MOVLW   .10
      SUBWF   MSD,W
      BTFSS   STATUS,C
      GOTO   OVER
      MOVWF   MSD
      INCF   CENT,F
      GOTO    OVERHAUL
OVER      
      RETLW   0

<img   src="http://pics.miarroba.com/caretos/flash.gif" alt="Flash" title="Flash" />


Hola !!! quiero entender como funciona este codigo, le hice un seguimiento paso  a paso pero no me funciona  :( 

Sacame de unas dudas...
En la porcion de codigo:

subwf MSD,W      ;  resta MSD-W y lo guarda en W.
BTFSS STATUS,C  ; verifica si el bit C del registro STATUS es 1, si es asi entonces salta.
GOTO OVER
MOVWF MSD


Si la resta MSD-W no da positiva (MSD menor que W), entonces el bit C del registro STATUS seria 1? y entonces saltaria la siguiente instruccion? (se salta el GOTO para hacer el MOVWF)

Si ese fuese el caso, entonces W quedaria con el valor que tenia ANTES de que se ejecutara esta resta (puesto que el resultado no esta definido en binario)?


Lo otro lo entiendo bien, si me despejas estas dudas entonces podria ver como funciona este codigo...


Gracias !!!  :)











Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: RE: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #6 en: 16 de Marzo de 2008, 17:40:26 »
Hola !!! quiero entender como funciona este codigo, le hice un seguimiento paso  a paso pero no me funciona  :( 
Veamos si te puedo dar una mano


En la porcion de codigo:


      subwf     MSD,W      ;  resta MSD-W y lo guarda en W.
      BTFSS     STATUS,C  ; verifica si el bit C del registro STATUS es 1, si es asi entonces salta.
      GOTO       OVER
      MOVWF      MSD


Si la resta MSD-W no da positiva (MSD menor que W), entonces el bit C del registro STATUS seria 1? y entonces saltaria la siguiente instruccion? (se salta el GOTO para hacer el MOVWF)

Si ese fuese el caso, entonces W quedaria con el valor que tenia ANTES de que se ejecutara esta resta (puesto que el resultado no esta definido en binario)?

No, W siempre tendrá el resultado de la resta, ya sea mayor , menor o igual.

La instrucción SUBWF f,w  guarda el resultado en WREG cualquiera sea su valor.  El carry estará encendido mientras MSD sea >= WREG.

Lo que ocurre es que si el carry está encendido, el MSD es sobreescrito con el valor de WREG, osea con el resultado de la resta y la rutina continúa.




- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado fzurita

  • PIC10
  • *
  • Mensajes: 33
Re: Quiero convertir 1BYTE a BCD pero en ASM
« Respuesta #7 en: 17 de Marzo de 2008, 16:35:47 »
maunix, te pasaste!!!! ahora me salio el seguimiento paso a paso, me resulta para cualquier numero de 0  a 255 como yo lo necesito... bien, seguire con mi proyecto, graicas porque sé que ante cuaqluier duda puedo contar con ustedes.
Nuevamente gracias...

Francisco


 

anything