Number Conversion

char ssr[500]="Good Morning , ";

If you can't count, you really should let the compiler count for you. Which Arduino are you using? Can you really afford to waste nearly 1/4 of the memory, assuming a 328-based Arduino, for this string?

   sprintf( buffer, "Time = %02d:%02d:%02d, ", \
    bcd2bin( rtc.h24.Hour10, rtc.h24.Hour), \
    bcd2bin( rtc.Minutes10, rtc.Minutes), \
    bcd2bin( rtc.Seconds10, rtc.Seconds));

The backslashes are not necessary, and distract from the code.