機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
時鐘芯片ds12c887的驅動程序
時鐘芯片ds12c887的驅動程序
 更新時間:2010-1-30 16:34:03  點擊數(shù):0
【字體: 字體顏色
/*************************************************************
文件名稱:ds12c887.c
適用范圍:時鐘芯片ds12c887的驅動程序
*************************************************************/

#include

/* 命令常量定義 */
#define CMD_START_DS12C887 0x20 /* 開啟時鐘芯片
*/
#define CMD_START_OSCILLATOR 0x70 /* 開啟振蕩器,
處于抑制狀態(tài) */
#define CMD_CLOSE_DS12C887 0x30 /* 關掉時鐘芯片
*/
/* 所有的置位使用或操作,清除使用與操作 */
#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小時模式 */
#define MASK_CLR_2412 0xfd /* 使用12小時模
式 */
#define MASK_SETB_DSE 0x01 /* 使用夏令時 */
#define MASK_CLR_DSE 0xfe /* 不使用夏令時
*/

/* 寄存器地址通道定義 */
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ù)用來啟動時鐘芯片工作
應用范圍:僅在時鐘芯片首次使用時用到一次
入口參數(shù):
出口參數(shù):
*************************************************************/
void StartDs12c887(void)
{
chRegA = CMD_START_DS12C887;
}

/*************************************************************
函數(shù)功能:該函數(shù)用來關閉時鐘芯片
應用范圍:一般用不到
入口參數(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小時模式、不使用
夏令時 */
chCenturyChannel = 0x21; /* 設
置為21世紀 */
chRegB = chRegB & MASK_CLR_SET; /* 使能刷新 */
}

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

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

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

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

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

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

/*************************************************************
函數(shù)功能:該函數(shù)用來設置時鐘芯片的時間
應用范圍:
入口參數(shù):chSeconds、chMinutes、chHours是設定時間的壓縮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ù):chDate、chMonth、chYear是設定日期的壓縮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; /* 使能刷新 */
}
  • 上一篇: DS1302讀寫一體化C51源程序
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經營許可證:浙B2-20080178-1