日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

時(shí)鐘芯片ds12c887時(shí)鐘芯片的驅(qū)動(dòng)程序

 昵稱7561532 2011-09-02
/*************************************************************
文件名稱:ds12c887.c
適用范圍:時(shí)鐘芯片ds12c887的驅(qū)動(dòng)程序
*************************************************************/
#include <absacc.h>

/* 命令常量定義 */
#define CMD_START_DS12C887 0x20 /* 開啟時(shí)鐘芯片 */
#define CMD_START_OSCILLATOR 0x70 /* 開啟振蕩器,處于抑制狀態(tài) */
#define CMD_CLOSE_DS12C887 0x30 /* 關(guān)掉時(shí)鐘芯片 */

/* 所有的置位使用或操作,清除使用與操作 */
#define MASK_SETB_SET 0x80 /* 禁止刷新 */
#define MASK_CLR_SET 0x7f /* 使能刷新 */
#define MASK_SETB_DM 0x04 /* 使用HEX格式 */
#define MASK_CLR_DM 0xfb /* 使用BCD碼格式 */
#define MASK_SETB_2412 0x02 /* 使用24小時(shí)模式 */
#define MASK_CLR_2412 0xfd /* 使用12小時(shí)模式 */
#define MASK_SETB_DSE 0x01 /* 使用夏令時(shí) */
#define MASK_CLR_DSE 0xfe /* 不使用夏令時(shí) */

/* 寄存器地址通道定義 */
xdata char chSecondsChannel _at_ 0xdf00;
xdata char chMinutesChannel _at_ 0xdf02;
xdata char chHoursChannel _at_ 0xdf04;
xdata char chDofWChannel _at_ 0xdf06;
xdata char chDateChannel _at_ 0xdf07;
xdata char chMonthChannel _at_ 0xdf08;
xdata char chYearChannel _at_ 0xdf09;
xdata char chCenturyChannel _at_ 0xdf32;
xdata char chRegA _at_ 0xdf0a;
xdata char chRegB _at_ 0xdf0b;
xdata char chRegC _at_ 0xdf0c;
xdata char chRegD _at_ 0xdf0d;

/* 函數(shù)聲明部分 */
void StartDs12c887(void);
void CloseDs12c887(void);
void InitDs12c887(void);
unsigned char GetSeconds(void);
unsigned char GetMinutes(void);
unsigned char GetHours(void);
unsigned char GetDate(void);
unsigned char GetMonth(void);
unsigned char GetYear(void);
unsigned char GetCentury(void);
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char
chHours);
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear);

/*************************************************************
函數(shù)功能:該函數(shù)用來啟動(dòng)時(shí)鐘芯片工作
應(yīng)用范圍:僅在時(shí)鐘芯片首次使用時(shí)用到一次
入口參數(shù):
出口參數(shù):
*************************************************************/
void StartDs12c887(void)
{
chRegA = CMD_START_DS12C887;
}

/*************************************************************
函數(shù)功能:該函數(shù)用來關(guān)閉時(shí)鐘芯片
應(yīng)用范圍:一般用不到
入口參數(shù):
出口參數(shù):
*************************************************************/
void CloseDs12c887(void)
{
chRegA = CMD_CLOSE_DS12C887;
}

void InitDs12c887()
{
StartDs12c887();
chRegB = chRegB | MASK_SETB_SET; /* 禁止刷新 */
chRegB = chRegB & MASK_CLR_DM | MASK_SETB_2412 \
& MASK_CLR_DSE;

/* 使用BCD碼格式、24小時(shí)模式、不使用夏令時(shí) */
chCenturyChannel = 0x21; /* 設(shè)置為21世紀(jì) */
chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
}

/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取秒字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetSeconds(void)
{
return(chSecondsChannel);
}

/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取分字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetMinutes(void)
{
return(chMinutesChannel);
}

/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取小時(shí)字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetHours(void)
{
return(chHoursChannel);
}

/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取日字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetDate(void)
{
return(chDateChannel);
}
/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取月字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetMonth(void)
{
return(chMonthChannel);
}

/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取年字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetYear(void)
{
return(chYearChannel);
}

/*************************************************************
函數(shù)功能:該函數(shù)用來從時(shí)鐘芯片讀取世紀(jì)字節(jié)
應(yīng)用范圍:
入口參數(shù):
出口參數(shù):
*************************************************************/
unsigned char GetCentury(void)
{
return(chCenturyChannel);
}

/*************************************************************
函數(shù)功能:該函數(shù)用來設(shè)置時(shí)鐘芯片的時(shí)間
應(yīng)用范圍:
入口參數(shù):chSeconds、chMinutes、chHours是設(shè)定時(shí)間的壓縮BCD碼
出口參數(shù):
*************************************************************/
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char
chHours)
{
chRegB = chRegB | MASK_SETB_SET; /* 禁止刷新 */
chSecondsChannel = chSeconds;
chMinutesChannel = chMinutes;
chHoursChannel = chHours;
chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
}

/*************************************************************
函數(shù)功能:該函數(shù)用來設(shè)置時(shí)鐘芯片的日期
應(yīng)用范圍:
入口參數(shù):chDate、chMonth、chYear是設(shè)定日期的壓縮BCD碼
出口參數(shù):
*************************************************************/
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear)
{
chRegB = chRegB | MASK_SETB_SET; /* 禁止刷新 */
chDateChannel = chDate;
chMonthChannel = chMonth;
chYearChannel = chYear;
chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多