久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
DS12C887的C51驅動
[打印本頁]
作者:
daniu
時間:
2014-12-26 21:17
標題:
DS12C887的C51驅動
DS12C887自帶電池,并且芯片內部具有一定的掉電保存RAM,而且價格也還可以,因此使用的比較多。DS12C887地址與數據總線復用,因此與51接口方便,51的ALE接入DS12C887的ALE,51的讀信號RD接入DS12C887的DS,51的寫信號WR接入D12C887的RW即可。驅動代碼如下:
#define YEANUM 6
#define MONNUM 5
#define DAYNUM 4
#define WEENUM 3
#define HOUNUM 2
#define MINNUM 1
#define SECNUM 0
extern unsigned char idata time[];
// DS12C887寄存器定義
#define RTCSECOND (*(volatile unsigned char xdata *)DS12C887ADR)
#define RTCSECONDALRM (*(volatile unsigned char xdata *)(DS12C887ADR+1))
#define RTCMINUTE (*(volatile unsigned char xdata *)(DS12C887ADR+2))
#define RTCMINUTEALRM (*(volatile unsigned char xdata *)(DS12C887ADR+3))
#define RTCHOUR (*(volatile unsigned char xdata *)(DS12C887ADR+4))
#define RTCHOURALRM (*(volatile unsigned char xdata *)(DS12C887ADR+5))
#define RTCWEEK (*(volatile unsigned char xdata *)(DS12C887ADR+6))
#define RTCDAY (*(volatile unsigned char xdata *)(DS12C887ADR+7))
#define RTCMONTH (*(volatile unsigned char xdata *)(DS12C887ADR+8))
#define RTCYEAR (*(volatile unsigned char xdata *)(DS12C887ADR+9))
#define RTCREGA (*(volatile unsigned char xdata *)(DS12C887ADR+10))
#define RTCREGB (*(volatile unsigned char xdata *)(DS12C887ADR+11))
#define RTCREGC (*(volatile unsigned char xdata *)(DS12C887ADR+12))
#define RTCCENTURY (*(volatile unsigned char xdata *)(DS12C887ADR+50))
unsigned char idata time[7];
void DS12C887Init(void)
{
// 關閉RTC
RTCREGA = 0x70; // 寄存器A
// 芯片停止工作, BIN模式, 24小時制, 在此期間初始化初始化時標寄存器
RTCREGB = 0x86; // 寄存器B, 時標寄存器用二進制表示,為24小時工作模式
RTCSECOND = time[SECNUM]; // 0秒
RTCSECONDALRM = 0xff; // 秒鬧
RTCMINUTE = time[MINNUM]; // 0分
RTCMINUTEALRM = 0xff; // 分鬧
RTCHOUR = time[HOUNUM]; // 0時
RTCHOURALRM = 0xff; // 時鬧
RTCWEEK = time[WEENUM]; // 星期一
RTCDAY = time[DAYNUM]; // 一日
RTCMONTH = time[MONNUM]; // 一月
RTCYEAR = time[YEANUM]; // 05年
RTCCENTURY = 0x20; // 20世紀
time[0] = RTCREGC; // 寄存器C, 清楚C標志
RTCREGA = 0x20; // 開啟RTC
RTCREGB = 0x06; // 芯片處于正常工作狀態, BIN模式
}
void ReadTime(void)
{
do{
CLR_DOG;
time[0] = RTCREGA; // 判斷DS12C887是否處于更新周期
} while(time[0]&0x80);
time[SECNUM] = RTCSECOND;
time[SECNUM] = RTCSECOND; // 秒
time[MINNUM] = RTCMINUTE; // 分
time[HOUNUM] = RTCHOUR; // 時
time[WEENUM] = RTCWEEK; // 星期
time[DAYNUM] = RTCDAY; // 日
time[MONNUM] = RTCMONTH; // 月
time[YEANUM] = RTCYEAR; // 年
}
void WriteTime(void)
{
// 關閉RTC
RTCREGA = 0x70; // 寄存器A
RTCSECOND = time[SECNUM]; // 秒
RTCMINUTE = time[MINNUM]; // 分
RTCHOUR = time[HOUNUM]; // 時
RTCWEEK = time[WEENUM]; // 星期
RTCDAY = time[DAYNUM]; // 日
RTCMONTH = time[MONNUM]; // 月
RTCYEAR = time[YEANUM]; // 年
RTCREGA = 0x20; // 開啟RTC
}
// 設置定時時間
void SetAlarmClock(unsigned char hour, unsigned char minute, unsigned char second)
{
unsigned char tmp;
// 關閉RTC
RTCREGA = 0x70; // 寄存器A
// 芯片停止工作, BIN模式, 24小時制, 在此期間初始化初始化時標寄存器
RTCREGB = 0x84; // 寄存器B
RTCSECONDALRM = second; // 秒鬧
RTCMINUTEALRM = minute; // 分鬧
RTCHOURALRM = hour; // 時鬧
tmp = RTCREGC; // 寄存器C, 清楚C標志
RTCREGA = 0x20; // 開啟RTC
RTCREGB = 0x02; // 芯片處于正常工作狀態, BCD模式
// BCD模式方便讀出顯示
}
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久亚洲精品国产精品紫薇
|
国产精品片aa在线观看
|
色网站在线免费观看
|
丁香婷婷久久久综合精品国产
|
日韩av一区二区在线观看
|
欧美一区二区久久
|
啪啪免费网站
|
中文字幕亚洲一区二区三区
|
成人免费一区二区
|
91精品国产91久久久久久吃药
|
中文字幕电影在线观看
|
青青草一区二区
|
在线观看中文字幕dvd播放
|
亚洲国产精品一区二区久久
|
日韩视频三区
|
黄色免费在线观看网站
|
日本在线视频一区二区
|
夜夜精品浪潮av一区二区三区
|
欧美激情国产精品
|
亚洲视频免费在线看
|
欧美成人一区二区三区
|
欧美日韩精品久久久免费观看
|
91大神在线看
|
99免费在线观看视频
|
亚洲一区二区三区在线视频
|
久草中文在线
|
一区二区三区四区在线免费观看
|
一区二区三区四区视频
|
日韩在线不卡
|
日韩在线播放视频
|
91精品国产色综合久久不卡98口
|
日韩a在线观看
|
国产精品片aa在线观看
|
成人影院在线
|
一区二区三区视频在线观看
|
日韩一区二区三区在线
|
国产精品久久久久久久久久久久
|
亚洲精品在线免费看
|
色久电影
|
91精品国产乱码久久久久久久久
|
日本在线黄色
|