?? time.c
字號:
//
//*******************************************************************
//* Init Time Buffers *
//*******************************************************************
//
void InitTime(void)
{
int i;
gettime(&t);
getdate(&d);
itoa(t.ti_sec, Sec, 10);
if(t.ti_sec<10){
Sec[1]=Sec[0];
Sec[0]='0';
}
itoa(t.ti_min, Min, 10);
if(t.ti_min<10){
Min[1]=Min[0];
Min[0]='0';
}
itoa(t.ti_hour, Hour, 10);
if(t.ti_hour<10){
Hour[1]=Hour[0];
Hour[0]='0';
}
itoa(d.da_day, Day, 10);
if(d.da_day<10){
Day[1]=Day[0];
Day[0]='0';
}
itoa(d.da_mon, Mon, 10);
if(d.da_mon<10){
Mon[1]=Mon[0];
Mon[0]='0';
}
if(d.da_year>1999){
CENT=1;
i=(d.da_year-2000);
}
else {
CENT=0;
i=d.da_year-1900;
}
itoa(i, Year, 10);
if(i<10){
Year[1]=Year[0];
Year[0]='0';
}
}
//
//*******************************************************************
//* UP/DOWN fuctions *
//*******************************************************************
//
unsigned int UP_sec(void)
{
unsigned int carry=0;
Sec[1]++;
if(Sec[1]>'9'){
Sec[1]='0';
Sec[0]++;
if(Sec[0]>'5'){
Sec[0]='0';
carry=1;
}
}
return carry;
}
void DN_sec(void)
{
if((Sec[0]=='0')&&(Sec[1]=='0')){
Sec[0]='5';
Sec[1]='9';
}
else {
Sec[1]--;
if(Sec[1]<'0'){
Sec[1]='9';
Sec[0]--;
}
}
}
unsigned int UP_min(void)
{
unsigned int carry=0;
Min[1]++;
if(Min[1]>'9'){
Min[1]='0';
Min[0]++;
if(Min[0]>'5'){
Min[0]='0';
carry=1;
}
}
return carry;
}
void DN_min(void)
{
if((Min[0]=='0')&&(Min[1]=='0')){
Min[0]='5';
Min[1]='9';
}
else {
Min[1]--;
if(Min[1]<'0'){
Min[1]='9';
Min[0]--;
}
}
}
unsigned int UP_hour(void)
{
unsigned int carry=0;
Hour[1]++;
if(Hour[1]>'9'){
Hour[1]='0';
Hour[0]++;
}
if((Hour[0]=='2')&&(Hour[1]=='4')){
Hour[0]='0';
Hour[1]='0';
carry=1;
}
return carry;
}
void DN_hour(void)
{
if((Hour[0]=='0')&&(Hour[1]=='0')){
Hour[0]='2';
Hour[1]='3';
}
else {
Hour[1]--;
if(Hour[1]<'0'){
Hour[1]='9';
Hour[0]--;
}
}
}
unsigned int UP_day(void)
{
unsigned int carry=0;
unsigned char mmd, day[2];
mmd=GetMaxDay( (Mon[0]-0x30)*10+(Mon[1]-0x30) );
itoa(mmd, day, 10);
if(mmd<10){
day[1]=day[0];
day[0]='0';
}
if( (Day[0]==day[0])&&(Day[1]==day[1]) ){
Day[0]='0';
Day[1]='1';
carry=1;
}
else{
Day[1]++;
if(Day[1]>'9'){
Day[1]='0';
Day[0]++;
}
}
return carry;
}
void DN_day(void)
{
unsigned char mmd, day[2];
mmd=GetMaxDay( (Mon[0]-0x30)*10+(Mon[1]-0x30) );
itoa(mmd, day, 10);
if(mmd<10){
day[1]=day[0];
day[0]='0';
}
if((Day[0]=='0')&&(Day[1]=='1')){
Day[0]=day[0];
Day[1]=day[1];
}
else {
Day[1]--;
if(Day[1]<'0'){
Day[1]='9';
Day[0]--;
}
}
}
unsigned int UP_mon(void)
{
unsigned int carry=0;
Mon[1]++;
if(Mon[1]>'9'){
Mon[1]='0';
Mon[0]++;
}
if((Mon[0]=='1')&&(Mon[1]=='3')){
Mon[0]='0';
Mon[1]='1';
carry=1;
}
return carry;
}
void DN_mon(void)
{
if((Mon[0]=='0')&&(Mon[1]=='1')){
Mon[0]='1';
Mon[1]='2';
}
else {
Mon[1]--;
if(Mon[1]<'0'){
Mon[1]='9';
Mon[0]--;
}
}
}
void UP_year(void)
{
Year[1]++;
if(Year[1]>'9'){
Year[1]='0';
Year[0]++;
if(Year[0]>'9'){
Year[0]='0';
if(CENT==0){
CENT=1;
Year[1]='0';
}
else {
CENT=0;
Year[1]='1';
}
}
}
}
void DN_year(void)
{
if((Year[0]=='0')&&(Year[1]=='0')){
Year[0]='9';
Year[1]='9';
CENT=0;
}
else {
Year[1]--;
if(Year[1]<'0'){
Year[1]='9';
Year[0]--;
}
}
if((Year[0]=='0')&&(Year[1]=='0')){
if(CENT==0){
Year[0]='9';
Year[1]='9';
CENT=1;
}
}
}
//
//*******************************************************************
//* Day's calcurations *
//*******************************************************************
//
unsigned char GetMaxDay(unsigned char month)
{
unsigned int year;
year=((Year[0]-0x30)*10)+Year[1]-0x30;
switch(month)
{
case 2:
{
if(year%4)return 28;
else return 29;
}
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
default:
return 30;
}
}
void CheckDay(void)
{
unsigned char mmd, day[2];
mmd=GetMaxDay( (Mon[0]-0x30)*10+(Mon[1]-0x30) );
itoa(mmd, day, 10);
if(mmd<10){
day[1]=day[0];
day[0]='0';
}
if( ((Day[0]-0x30)*10+Day[1]-0x30)
> ((day[0]-0x30)*10+day[1]-0x30) ){
Day[0]=day[0];
Day[1]=day[1];
}
}
void CalcWeek(void)
{
unsigned int year, month, day, feb, dys;
day=((Day[0]-0x30)*10)+Day[1]-0x30;
month=((Mon[0]-0x30)*10)+Mon[1]-0x30;
year=((Year[0]-0x30)*10)+Year[1]-0x30;
LPY=0;
if(year%4)feb=28;
else {
LPY=1;
feb=29;
}
DST=0;
if((4<month)&&(month<9))DST=1;
switch(month){
case 1: dys = day; break;
case 2: dys = 31+day; break;
case 3: dys = feb+31+day; break;
case 4: dys = feb+62+day; break;
case 5: dys = feb+92+day; break;
case 6: dys = feb+123+day; break;
case 7: dys = feb+153+day; break;
case 8: dys = feb+184+day; break;
case 9: dys = feb+215+day; break;
case 10: dys = feb+245+day; break;
case 11: dys = feb+276+day; break;
case 12: dys = feb+306+day; break;
}
itoa(dys, Days, 10);
if(dys<100){
Days[2]=Days[1];
Days[1]=Days[0];
Days[0]='0';
if(dys<10){
Days[2]=Days[1];
Days[1]='0';
}
}
if(CENT==1)Week=(1+dys+(year+99)+((year+99)/4))%7;
else Week=(1+dys+(year-1)+((year-1)/4))%7;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -