PIC Microcontroller Radix Math Method

BCD half-packed to ASCII decimal 3 digit to 8 bit

From: Scott Dattalo

W_to_ascii:

        movwf   bin             ;added

        CLRF    hundreds
        SWAPF   bin,W
        ADDWF   bin,W
        ANDLW   00001111b
        SKPNDC
         ADDLW  0x16
        SKPNDC
         ADDLW  0x06
        ADDLW   0x06
        SKPDC
         ADDLW  -0x06

        BTFSC   bin,4
         ADDLW   0x16 - 1 + 0x6
        SKPDC
         ADDLW  -0x06

        BTFSC   bin,5
         ADDLW  0x30

        BTFSC   bin,6
         ADDLW  0x60

        BTFSC   bin,7
         ADDLW  0x20

        ADDLW   0x60
        RLF     hundreds,F
        BTFSS   hundreds,0
         ADDLW  -0x60

        MOVWF   tens_and_ones
        BTFSC   bin,7
         INCF   hundreds,F

                                ;added (from here to bottom)
        movf    hundreds,w      ;
        addlw   0x30            ;convert to ascii
        call    send_lcd        ;hundreds to LCD

        swapf   tens_and_ones,w ;
        andlw   0x0f            ;
        addlw   0x30            ;always less than 0x0A
        call    send_lcd        ;tens to LCD

        movf    tens_and_ones,w ;
        andlw   0x0f            ;
        addlw   0x30            ;
        call    send_lcd        ;ones to LCD

        return                  ;