Exemple #1
0
/// Read the current data from CMOS memory
void kRTC::kReadRTCDate(WORD* pwYear, BYTE* pbMonth, BYTE* pbDayOfMonth, 
                        BYTE* pbDayOfWeek)
{
    BYTE bData;
    
    // Set the register storing year 
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_YEAR);
    // Read year from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pwYear = RTC_BCDTOBINARY(bData) + 2000;
    
    // Set the register storing month
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_MONTH);
    // Read month from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pbMonth = RTC_BCDTOBINARY(bData);
    
    // Set the register storing day
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_DAYOFMONTH);
    // Read day from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pbDayOfMonth = RTC_BCDTOBINARY(bData);
    
    // Set the register storing day of week
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_DAYOFWEEK);
    // Read week from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pbDayOfWeek = RTC_BCDTOBINARY(bData);
    
    return;
}
Exemple #2
0
/// Read the current time from CMOS memory
void kRTC::kReadRTCTime(BYTE* pbHour, BYTE* pbMinute, BYTE* pbSecond)
{
    BYTE bData;
    
    // Set the register storing hour 
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_HOUR);
    // Read hour from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pbHour = RTC_BCDTOBINARY(bData);
    
    // Set the register storing minute
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_MINUTE);
    // Read minute from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pbMinute = RTC_BCDTOBINARY(bData);
    
    // Set the register storing second
    // to CMOS memory address register (port 0x70)
    a_pclPort->kOutPortByte(RTC_CMOSADDRESS, RTC_ADDRESS_SECOND);
    // Read second from CMOS data register (port 0x71)
    bData = a_pclPort->kInPortByte(RTC_CMOSDATA);
    *pbSecond = RTC_BCDTOBINARY(bData);
    
    return;
}
Exemple #3
0
void kReadRTCTime( BYTE* pbHour, BYTE* pbMinute, BYTE* pbSecond )
{
	BYTE bData;
	// CMOS 메모리 어드레스 레지스터(포트 0x70)에 시간을 저장하는 레지스터 지정
	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_HOUR );
	// 데이터 레지스터에서 시간 얻어옴
	bData = kInPortByte( RTC_CMOSDATA );
	*pbHour = RTC_BCDTOBINARY( bData );

	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_MINUTE );
	bData = kInPortByte( RTC_CMOSDATA );
	*pbMinute = RTC_BCDTOBINARY( bData );

	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_SECOND );
	bData = kInPortByte( RTC_CMOSDATA );
	*pbSecond = RTC_BCDTOBINARY( bData );

}
Exemple #4
0
void kReadRTCDate( WORD* pwYear, BYTE* pbMonth, BYTE* pbDayOfMonth, BYTE* pbDayOfWeek )
{
	BYTE bData;

	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_YEAR );
	bData = kInPortByte( RTC_CMOSDATA );
	*pwYear = RTC_BCDTOBINARY( bData ) + 2000;



	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_MONTH );
	bData = kInPortByte( RTC_CMOSDATA );
	*pbMonth = RTC_BCDTOBINARY( bData );

	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_DAYOFMONTH );
	bData = kInPortByte( RTC_CMOSDATA );
	*pbDayOfMonth = RTC_BCDTOBINARY( bData );

	kOutPortByte( RTC_CMOSADDRESS, RTC_ADDRESS_DAYOFWEEK );
	bData = kInPortByte( RTC_CMOSDATA );
	*pbDayOfWeek = RTC_BCDTOBINARY( bData );

}