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

📄 datetime.c

📁 rtCell 实时微内核-具有下列功能: 1. 完全抢占的实时微内核结构
💻 C
字号:
/*
 *******************************************************************************
 *                      The real-time kernel "rtCell"                          *
 *              Copyright 2005 taowentao, allrights reserved.                  *
 * File : DateTime.c                                                           *
 * By   : taowentao     2005-01-24 2005-08-27                                  *
 *******************************************************************************
 */
 
#if !defined(MCCLIB_H)
#include "giCell\Engine\mcCLib.h"
#endif

/*
 *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */

static int epoch = 1900;

/* *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */#define RTC_SECONDS             (0)#define RTC_MINUTES             (2)#define RTC_HOURS               (4)#define RTC_DAY_OF_WEEK         (6)#define RTC_DAY_OF_MONTH        (7)#define RTC_MONTH               (8)#define RTC_YEAR                (9)#define RTC_CONTROL     (11)#define RTC_DM_BINARY   (0x04)#define BCD2BIN(n) ((n >> 4) * 10 + (n & 0x0F))/* *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */typedef struct Fd32Date{  WORD Year;  BYTE Day;  BYTE Mon;  BYTE weekday;}rt_date_t;typedef struct Fd32Time{  BYTE Min;  BYTE Hour;  BYTE Hund;  BYTE Sec;}rt_time_t;/* *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */ BYTE cmos_read(BYTE addr){    out_byte(0x70, addr);    return in_byte(0x71);}int time_read(rt_time_t *t){    BYTE ctrl;    if (t == 0) {        return -1;    }    t->Hund = 0; /* For the moment... */    t->Sec = cmos_read(RTC_SECONDS);    t->Min = cmos_read(RTC_MINUTES);    t->Hour = cmos_read(RTC_HOURS);    ctrl = cmos_read(RTC_CONTROL);      if (!(ctrl & RTC_DM_BINARY)) {        /* Convert from bcd to binary... */        t->Sec = BCD2BIN(t->Sec);        t->Min = BCD2BIN(t->Min);        t->Hour = BCD2BIN(t->Hour);    }    return 1;}int date_read(rt_date_t *d){    BYTE ctrl;    if (d == 0) {        return -1;    }        d->weekday = cmos_read(RTC_DAY_OF_WEEK);    d->Day = cmos_read(RTC_DAY_OF_MONTH);    d->Mon = cmos_read(RTC_MONTH);    d->Year = cmos_read(RTC_YEAR);    ctrl = cmos_read(RTC_CONTROL);    if (!(ctrl & RTC_DM_BINARY)) {        /* Convert from bcd to binary... */        d->Day = BCD2BIN(d->Day);        d->Mon = BCD2BIN(d->Mon);        d->Year = BCD2BIN(d->Year);    }        d->Year += epoch - 1900;        if (d->Year <= 69) {        d->Year += 100;    }    d->Year += 1900;      return 1;}
 

⌨️ 快捷键说明

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