⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datetime.c

📁 这是广西大学生设计大赛的源码
💻 C
字号:


#include "datetime.h"
#include <REGX51.H>

 

 

DATETIME dtt_Now;
BYTE     dtt_b225HzClock;
BYTE     g_14HzClock;
BYTE     g_1HzClock;
BIT      g_HourClock;    //整点报时中断

 

void dttInit(void)
{
 BYTE save;

 save = TMOD;
 TMOD = (save & T1_MASK_) | (0x01 & T0_MASK_);
 TH0 = 0;
 TL0 = 0;
 TR0 = 1;

 ET0 = 1;

 dtt_Now.yy = 0;
 dtt_Now.mo = 1;
 dtt_Now.dd = 1;
 dtt_Now.hh = 0;
 dtt_Now.mi = 0;
 dtt_Now.ss = 0;
}


void dttIntrq(void) interrupt TF0_VECTOR
{
 // 14.0625 Hz intrq

 dtt_b225HzClock += 16;
 g_14HzClock++;

 if (dtt_b225HzClock >= 225)
 {
  dtt_b225HzClock -= 225;
  dtt_Now.ss++;
  g_1HzClock++;
 }

 if (dtt_Now.ss >= 60)
 {
  dtt_Now.ss = 0;
  dtt_Now.mi++;
 }

 if (dtt_Now.mi >= 60)
 {
  dtt_Now.mi = 0;
  dtt_Now.hh++;
  g_HourClock = TRUE;    // 整点报时中断
 }

 if (dtt_Now.hh >= 24)
 {
  dtt_Now.hh = 0;
  dtt_Now.dd++;
 }
}

 

void dttSetCurDateTime(DATETIME * pDtt)
{
 dtt_Now = *pDtt;
}


//BYTE dttGetCurDateTime(BYTE pos)
DATETIME dttGetCurDateTime(void)
{
// BYTE rt;

 // 检查天进位
 switch (dtt_Now.mo)
 {
 case 2:
  if (dtt_Now.yy % 4)
  {
   if (dtt_Now.dd > 28)
   {
    dtt_Now.dd -= 28;
    dtt_Now.mo ++;
   }
  }
  else
  {
   if (dtt_Now.dd > 29)
   {
    dtt_Now.dd -= 29;
    dtt_Now.mo ++;
   }
  }
  break;
 case 4:
 case 6:
 case 9:
 case 11:
  if (dtt_Now.dd > 30)
  {
   dtt_Now.dd -= 30;
   dtt_Now.mo ++;
  }
  break;
 default:
  if (dtt_Now.dd > 31)
  {
   dtt_Now.dd -= 31;
   dtt_Now.mo ++;
  }
 }
 if (dtt_Now.mo > 12)
 {
  dtt_Now.mo -= 12;
  dtt_Now.yy ++;
 }

 return dtt_Now;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -