38 typedef union _unionRTCC {
54 uint8_t getBCDvalue(
char *sz_1) {
60 sscanf(sz_buff,
"%d", (
int *)&u16_bin);
63 u8_bcd = u8_bcd | (u16_bin%10);
67 void getDateFromUser(
void) {
68 u_RTCC.u8.yr = getBCDvalue(
"Enter year (0-99): ");
69 u_RTCC.u8.month = getBCDvalue(
"Enter month (1-12): ");
70 u_RTCC.u8.date = getBCDvalue(
"Enter day of month (1-31): ");
71 u_RTCC.u8.wday = getBCDvalue(
"Enter week day (0-6): ");
72 u_RTCC.u8.hour = getBCDvalue(
"Enter hour (0-23): ");
73 u_RTCC.u8.min = getBCDvalue(
"Enter min (0-59): ");
74 u_RTCC.u8.sec = getBCDvalue(
"Enter sec(0-59): ");
80 __builtin_write_RTCWEN();
81 RCFGCALbits.RTCEN = 0;
82 RCFGCALbits.RTCPTR = 3;
83 for (u8_i=0; u8_i<4; u8_i++) RTCVAL = u_RTCC.regs[u8_i];
84 RCFGCALbits.RTCEN = 1;
85 RCFGCALbits.RTCWREN = 0;
90 RCFGCALbits.RTCPTR = 3;
91 for (u8_i=0; u8_i<4; u8_i++) u_RTCC.regs[u8_i] = RTCVAL;
94 void printRTCC(
void) {
95 printf (
"day(wday)/mon/yr: %2x(%2x)/%2x/%2x, %02x:%02x:%02x \n",
101 __builtin_write_OSCCONL(OSCCON | 0x02);