Autor Tema: conversion binario->bcd->ASCII lista para usar  (Leído 2238 veces)

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

Desconectado jhefren

  • PIC10
  • *
  • Mensajes: 42
conversion binario->bcd->ASCII lista para usar
« en: 18 de Octubre de 2005, 13:26:00 »

facil de usar solo se declaran los registro.  Donde esta el dato
a convertir lo ubicamos de antemano en el registro L_BYTE y los
valores de salida entan ubicados en UNIDAD_ASCII, DECENA_ASCII Y
CENTENA_ASCII. Esta es una version modificada desarrollado por
MICROCHIP


B2_BCD          BCF     STATUS,0   ;BORRA EL CARRY
              MOVLW   .8          ;CONTADOR HASTA 8
             MOVWF   CONTADOR1
             CLRF    R0          ;UNIDADES
             CLRF    R1          ;DECENAS
             CLRF    R2          ;CENTENAS

LOOP16          RLF     L_BYTE,F
             RLF     R2,F
             RLF     R1,F
             RLF     R0,F
             DECFSZ  CONTADOR1,F
             GOTO    ADJDEC
                MOVF    R1,0
                MOVWF   R0
                MOVLW   0F0H
                ANDWF   R2,0
                MOVWF   INVER
                SWAPF   INVER,0
                MOVWF   R1
                MOVLW   0FH
                ANDWF   R2,1

CONVER_ASCII:   MOVF    R2,0
                ADDLW   30H             ;SUMO 30H PARA CONVERTIR A ASCII
                MOVWF   UNIDAD_ASCII
                MOVF    R1,0
                ADDLW   30H             ;SUMO 30H PARA CONVERTIR A ASCII
                MOVWF   DECENA_ASCII
                MOVF    R0,0
                ADDLW   30H             ;SUMO 30H PARA CONVERTIR A ASCII
                MOVWF   CENTENA_ASCII
                CLRF    R2
                CLRF    R1
                CLRF    R0
             RETURN

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   INDF,0
             MOVWF   TEMP
                BTFSC   TEMP,3          ; TEST IF RESULT > 7
                  MOVWF   INDF
             MOVLW   30
             ADDWF   INDF,0
             MOVWF   TEMP
             BTFSC   TEMP,7          ; TEST IF RESULT > 7
             MOVWF   INDF            ; SAVE AS MSD
                  RETURN