/********************************************/
/*Binary to ASCII BCD Conversion Code       */
/*The fast and compact method by Cypress    */
/*PIC32MX795F512L-80I/PF                    */
/********************************************/

#include "xc.h"
#include "MainBrain.h"

uint8_t d0, d1, d2, d3, d4;

void Binary2ASCIIBCD(int bcd)
{
    unsigned char q;
        
    //Find n0-n3 numbers
    d0 = bcd & 0xF;
    d1 = (bcd>>4) & 0xF;
    d2 = (bcd>>8) & 0xF;
    d3 = (bcd>>12) & 0xF;
    d4 = (bcd>>16) & 0xF;
    
    //Calculate d0-d4 numbers
    d0 = 6*(d3 + d2 + d1) + d0; 
    q = d0 / 10; 
    d0 = d0 % 10;     
    d1 = q + 9*d3 + 5*d2 + d1;
    q = d1 / 10;
    d1 = d1 % 10;
    d2 = q + 2*d2;
    q = d2 / 10;
    d2 = d2 % 10;
    d3 = q + 4*d3;
    q = d3 / 10;
    d3 = d3 % 10;
    d4 = q;
    
    //ASCII
    d0 = d0 + 48;
    d1 = d1 + 48;
    d2 = d2 + 48;
    d3 = d3 + 48;
    d4 = d4 + 48;
}
