คือผมมี funtion ดึงเวลา กับวันออกมาได้แล้วตามข้างล่าง
แต่ผมต้องการที่จะแปลงข้อมูลให้เป็น วินาที ผมพยายามหลายวันแล้ว
ก็แปลงได้เพียงแค่จาก เวลา (HH:MM:SS) เป็น วินาที
แล้วก็ติดปัญหาเรื่องเวลามันนับเป็น AM PM ไม่ยอมนับเป็น 24 hr แก้ไม่ได้สักที
อยากรบกวนช่วยหน่อยครับ ปวดหัวมากเลย
นี้เป็นฟังชันที่แปลง เวลาเป็นวินาทีที่ผมทำครับ
unsigned char* DisplayTimeToLCD( unsigned char* pTimeArray) // Displays time in HH:MM:SS AM/PM format
{
long inttemp;
int t1=0,t2=0,t3=0,t4=0,t5=0,t6=0;
xxx[0]=(pTimeArray[2]/10)+0x30;
xxx[1]=(pTimeArray[2]%10)+0x30;
xxx[2]=(pTimeArray[1]/10)+0x30; //1000
xxx[3]=(pTimeArray[1]%10)+0x30; //100
xxx[4]=(pTimeArray[0]/10)+0x30; //10
xxx[5]=(pTimeArray[0]%10)+0x30; //1
inttemp = atol(xxx);
t1= inttemp%10;
t2= ((inttemp/10)%10)*10;
t3= ((inttemp/100)%10)*60;
t4= ((inttemp/1000)%10)*600;
t5= ((inttemp/10000)%10)*3600;
t6= ((inttemp/100000)%10)*36000;
xxx[0]=segment[t6];
xxx[1]=segment[t5];
xxx[2]=segment[t4];
xxx[3]=segment[t3];
xxx[4]=segment[t2];
xxx[5]=segment[t1];
return xxx;
}
unsigned char* Get_DS1307_RTC_Time(void)
{
// Read Hours, Mins, Secs register from RTC
Read_Bytes_From_DS1307_RTC(0x00, pRTCArray, 3);
// Convert Secs back from BCD into number
Temp_Char = pRTCArray[0];
pRTCArray[0] = ((Temp_Char&0x7F)>>4)*10 + (Temp_Char&0x0F);
// Convert Mins back from BCD into number
Temp_Char = pRTCArray[1];
pRTCArray[1] = (Temp_Char>>4)*10 + (Temp_Char&0x0F);
// Convert Hours back from BCD into number
if(pRTCArray[2]&0x40) // if 12 hours mode
{
if(pRTCArray[2]&0x20) // if PM Time
pRTCArray[3] = PM_Time;
else // if AM time
pRTCArray[3] = AM_Time;
Temp_Char = pRTCArray[2];
pRTCArray[2] = ((Temp_Char&0x1F)>>4)*10 + (Temp_Char&0x0F);
}
else // if 24 hours mode
{
Temp_Char = pRTCArray[2];
pRTCArray[2] = (Temp_Char>>4)*10 + (Temp_Char&0x0F);
pRTCArray[3] = TwentyFourHoursMode;
}
return pRTCArray;
}
unsigned char* Get_DS1307_RTC_Date(void)
{
// Read Hours, Mins, Secs register from RTC
Read_Bytes_From_DS1307_RTC(0x03, pRTCArray, 4);
// Convert Date back from BCD into number
Temp_Char = pRTCArray[1];
pRTCArray[1] = (Temp_Char>>4)*10 + (Temp_Char&0x0F);
// Convert Month back from BCD into number
Temp_Char = pRTCArray[2];
pRTCArray[2] = (Temp_Char>>4)*10 + (Temp_Char&0x0F);
// Convert Year back from BCD into number
Temp_Char = pRTCArray[3];
pRTCArray[3] = (Temp_Char>>4)*10 + (Temp_Char&0x0F);
return pRTCArray;
}