Autor Tema: binario a BCD 10digitos  (Leído 1951 veces)

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

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
binario a BCD 10digitos
« en: 03 de Julio de 2005, 07:34:00 »
Hola, aqui os dejo una rutina para convertir 32 bits en binario (cuatro registros), a 10 digitos BCD. Osea resolucion para aburrir...


         LIST p=16F84A
         #INCLUDE "p16f84a.inc"
         RADIX HEX

contador1   EQU   H"0C"
R0   EQU   H"0D" ;resultado BCD parte baja
R1   EQU   H"0E"
R2   EQU   H"0F"
R3   EQU   H"10"
R4            EQU   H"11" ;resultado BCD parte alta
byte0     EQU   H"12" ;parte baja en binario
byte1     EQU   H"13"
byte2   EQU   H"14"
byte3   EQU   H"15" ;parte alta en binario
temp   EQU H"16"


         ORG      0
         goto   INICIO
         ORG      5

INICIO

B2_BCD  bcf     STATUS,C   ;Borra el carry
      movlw   .32
      movwf   contador1
      clrf    R4
      clrf    R3
      clrf    R2
      clrf    R1
      clrf    R0
loop    rlf     byte0,f ;parte baja binario
      rlf     byte1,f
      rlf     byte2,f
      rlf     byte3,f ;parte alta binario
      rlf     R0,f
      rlf     R1,f
      rlf     R2,f
      rlf     R3,f
      rlf     R4,f
      decfsz  contador1,f
      goto    adjDEC
      return

adjDEC  movlw   R0
      movwf   FSR
      call    adjBCD
      movlw   R1
      movwf   FSR
      call    adjBCD
      movlw   R2
      movwf   FSR
      call    adjBCD
      movlw   R3
      movwf   FSR
      call    adjBCD
      movlw   R4
      movwf   FSR
      call    adjBCD
      goto    loop

adjBCD  movlw   3
      addwf   INDF,W
      movwf   temp
      btfsc   temp,3          ; test if result > 7
      movwf   INDF
      movlw   30
      addwf   INDF,W
      movwf   temp
      btfsc   temp,7          ; test if result > 7
      movwf   INDF           ; save as MSD
      return
      end
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado kain589

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 324
RE: binario a BCD 10digitos
« Respuesta #1 en: 26 de Diciembre de 2005, 13:41:00 »
Pues estaba intentando traducir y comprender la rutina que lo hace con 16 bits y entre aqui para ver que habia sobre el tema, ambas rutinas tienen la misma estructura,excepto que en adjBCD donde en esta pone INDF coloca un 0.
Al intentar comprenderla me topado con el FSR, por mas que he buscado lo unico que he sacado en claro es que este se emplea para el direccionamiento indirecto, pero no entiendo la utilidad de pasar el dato de Ri a FSR y tampoco entiendo mucho el ajustebcd. Alguien puede explicarmelo o decirme alguna pagina que  pueda aclarar estas dudas, muchas gracias
Saludos desde Córdoba, españa


 

anything