MCF_RTC_HOURMIN_HOURS = hour; MCF_RTC_HOURMIN_MINUTES = minutes; MCF_RTC_SECONDS_SECONDS = sec;
(UINT8)((MCF_RTC_HOURMIN & 0x00001F00)>>8) = hour;(UINT8)(MCF_RTC_HOURMIN & 0x0000003F) = minutes;(UINT8)(MCF_RTC_SECONDS & 0x0000003F) = sec;
MCF_RTC_HOURMIN_HOURS = hour; // alternatively (hour & 0x1f) MCF_RTC_HOURMIN_MINUTES = minutes; // alternatively (minutes & 0x3f) MCF_RTC_SECONDS_SECONDS = sec; // alternatively (minutes & 0x3f)I didn't check the defines used above but basically there are 2 x 32 registers:
MCF_RTC_HOURMIN = ((hour << 8) | minutes);It seems that some of the code which you show is syntactically incorrect but also probably not relevant for what you want to do.
#ifndef __MCF5223_RTC_H__ #define __MCF5223_RTC_H__ /********************************************************************* * * Real-time Clock (RTC) * *********************************************************************/ /* Register read/write macros */ #define MCF_RTC_HOURMIN (*(vuint32*)(&__IPSBAR[0x0003C0])) #define MCF_RTC_SECONDS (*(vuint32*)(&__IPSBAR[0x0003C4])) #define MCF_RTC_ALRM_HM (*(vuint32*)(&__IPSBAR[0x0003C8])) #define MCF_RTC_ALRM_SEC (*(vuint32*)(&__IPSBAR[0x0003CC])) #define MCF_RTC_CR (*(vuint32*)(&__IPSBAR[0x0003D0])) #define MCF_RTC_ISR (*(vuint32*)(&__IPSBAR[0x0003D4])) #define MCF_RTC_IER (*(vuint32*)(&__IPSBAR[0x0003D8])) #define MCF_RTC_STPWCH (*(vuint32*)(&__IPSBAR[0x0003DC])) #define MCF_RTC_DAYS (*(vuint32*)(&__IPSBAR[0x0003E0])) #define MCF_RTC_ALRM_DAY (*(vuint32*)(&__IPSBAR[0x0003E4])) /* Bit definitions and macros for MCF_RTC_HOURMIN */ #define MCF_RTC_HOURMIN_MINUTES(x) (((x)&0x0000003F)<<0) #define MCF_RTC_HOURMIN_HOURS(x) (((x)&0x0000001F)<<8) /* Bit definitions and macros for MCF_RTC_SECONDS */ #define MCF_RTC_SECONDS_SECONDS(x) (((x)&0x0000003F)<<0) /* Bit definitions and macros for MCF_RTC_ALRM_HM */ #define MCF_RTC_ALRM_HM_MINUTES(x) (((x)&0x0000003F)<<0) #define MCF_RTC_ALRM_HM_HOURS(x) (((x)&0x0000001F)<<8) . . . and so on..
//********** Set Time ********************************************************//// Sets Time and Date // // Arguments: Time ////*****************************************************************************void set_time(u_char *pBuffer){ int hour, minutes, sec; pBuffer++; hour = (u_char)*pBuffer; pBuffer++; minutes = (u_char)*pBuffer; pBuffer++; sec = (u_char)*pBuffer; MCF_RTC_HOURMIN_HOURS = hour; // hour & 0x1f MCF_RTC_HOURMIN_MINUTES = minutes; // minutes & 0x3f MCF_RTC_SECONDS_SECONDS = sec; // sec & 0x3f}//********** Read Time ********************************************************//// Sends Time and Date to the TCP/IP Client// // Arguments: Time ////*****************************************************************************void read_time(){ int time_temp; int rtc_hrs; int rtc_min; int rtc_sec; rtc_hrs = (UINT8)((MCF_RTC_HOURMIN & 0x00001F00)>>8); rtc_min = (UINT8)(MCF_RTC_HOURMIN & 0x0000003F) ; rtc_sec = (UINT8)(MCF_RTC_SECONDS & 0x0000003F) ; buffer[0]=0xFF; asm {nop} buffer[1]=rtc_hrs; asm {nop} buffer[2]=rtc_min; asm {nop} buffer[3]=rtc_sec; asm {nop} m_send( emg_tcp_communication_socket, (char*)&buffer[0], 4 ); }MCF_RTC_SECONDS = MCF_RTC_SECONDS_SECONDS(sec);MCF_RTC_HOURMIN = MCF_RTC_HOURMIN_HOURS(hour) | MCF_RTC_HOURMIN_MINUTES(minutes);
MCF_RTC_HOURMIN = ((hour << 8) | minutes);MCF_RTC_SECONDS = (sec);