Autor Tema: Rutina de conversión de binario a BCD  (Leído 2628 veces)

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

Desconectado Dienan

  • PIC10
  • *
  • Mensajes: 1
Rutina de conversión de binario a BCD
« en: 03 de Enero de 2006, 14:27:00 »
Estoy realizando una tarjeta de adquisión de datos por el puerto serial y necesito una rutina de conversión de binario de 16bits a BCD, si alguien tiene alguna ó donde la pueda conseguir muchas gracias.

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Rutina de conversión de binario a BCD
« Respuesta #1 en: 03 de Enero de 2006, 15:45:00 »
¿que lenguaje de programacion usas?

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: Rutina de conversión de binario a BCD
« Respuesta #2 en: 03 de Enero de 2006, 16:45:00 »
Aqui esta esta en ensamblador...

;********************************************************************
;                  Binary To BCD Conversion Routine
;      This routine converts a 16 Bit binary Number to a 5 Digit
; BCD Number. This routine is useful since PIC16C55 & PIC16C57
; have  two 8 bit ports and one 4 bit port ( total of 5 BCD digits)
;
;       The 16 bit binary number is input in locations H_byte and
; L_byte with the high byte in H_byte.
;       The 5 digit BCD number is returned in R0, R1 and R2 with R0
; containing the MSD in its right most nibble.
;
;   Performance :
;               Program Memory  :       35
;               Clock Cycles    :       885
;
;
;       Program:          B16TOBCD.ASM
;       Revision Date:  
;                         1-13-97      Compatibility with MPASMWIN 1.40
;
;*******************************************************************;
;
count  equ      16
temp   equ      17
;
H_byte  equ     10
L_byte  equ     11
R0      equ     12              ; RAM Assignments
R1      equ     13
R2      equ     14
;
   include         "p16c5x.inc"
;
B2_BCD  bcf     STATUS,0                ; clear the carry bit
   movlw   .16
   movwf   count
   clrf    R0
   clrf    R1
   clrf    R2
loop16  rlf     L_byte, F
   rlf     H_byte, F
   rlf     R2, F
   rlf     R1, F
   rlf     R0, F
;
   decfsz  count, F
   goto    adjDEC
   RETLW   0
;
adjDEC  movlw   R2
   movwf   FSR
   call    adjBCD
;
   movlw   R1
   movwf   FSR
   call    adjBCD
;
   movlw   R0
   movwf   FSR
   call    adjBCD
;
   goto    loop16
;
adjBCD  movlw   3
   addwf   0,W
   movwf   temp
   btfsc   temp,3          ; test if result > 7
   movwf   0
   movlw   30
   addwf   0,W
   movwf   temp
   btfsc   temp,7          ; test if result > 7
   movwf   0               ; save as MSD
   RETLW   0
;
;********************************************************************
;               Test Program
;*********************************************************************
main    movlw   0FF
   movwf   H_byte
   movwf   L_byte          ; The 16 bit binary number = FFFF
   call    B2_BCD          ; After conversion the Decimal Number
;                               ; in R0,R1,R2 = 06,55,35
;
self    goto    self
;
   org     1FF
   goto    main
;
   END



No pude cargar el archivo porque dice no hay espacio SIEMPRE ME PASA ESO POR FAVOR EL ADMIN DEL FORO el archivo es de solo 2 KB.

Saludos

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Rutina de conversión de binario a BCD
« Respuesta #3 en: 03 de Enero de 2006, 16:53:00 »
Que tal poi5on!!! si quieres subir algo debes hacerlo en el "almacen" del foro, aqui el link del almacen:
http://miarroba.com/foros/ver.php?id=348538

Cuando lo subas en el almacen, simplemente enlazalo aqui!

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado leoelca

  • PIC10
  • *
  • Mensajes: 1
RE: Rutina de conversión de binario a BCD
« Respuesta #4 en: 27 de Enero de 2006, 08:39:00 »
Hola yo tenia el mismo problema, use la subrutina y funciono bien, pero he tratado de entenderla y sigo sin entender el porque se le suma 3 o 30, si saben la teoria de esta subrutina, le agradeceria un poco de ayuda. graciasRollEyesRollEyesRollEyes

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
RE: Rutina de conversión de binario a BCD
« Respuesta #5 en: 27 de Enero de 2006, 11:11:00 »
A mi me pasa igual , entiendo muy bien como funciona esta rutina y porque sumar 3 ó 30, creo que tiene algo que ver con el direccionamiento indirecto pero no lo entiendo
Saludos desde Córdoba, españa

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Rutina de conversión de binario a BCD
« Respuesta #6 en: 29 de Enero de 2006, 19:54:00 »
Escrito originalmente por kain589
A mi me pasa igual , entiendo muy bien como funciona esta rutina y porque sumar 3 ó 30, creo que tiene algo que ver con el direccionamiento indirecto pero no lo entiendo


Nonononononon.

El direccionamiento se hace con los registros SFR y INDF
Acaso los ven en esta rutina? yo no.

No he revisado la rutina pero seguro debe tener que ver con los ajustes que hay que hacer para pasar de binario a bcd, no recuerdo bien como era la formula pero precisamente habia que sumarle algo al nibble inferior y luego al nibble superior para hacer los ajustes.    Se chequeaba de a nibbles porque precisamente la conversion a bcd logra que en cada nibble haya una cifra de 0 a 9 , nunca supera este valor.

- 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)


 

anything