?? ds12c887.c
字號:
#include<reg52.h>
#include<absacc.h>
#include<ds12c887.h>
//12887初始化子程序
void DS12887_init()
{
DS12887_CS=0xc0;
ds12887_rega=0x7f; //分頻復位
ds12887_regb=0x8a; //禁止更新
ds12887_rega=0x2e; //寫寄存器A,
ds12887_regb=0x06; //寫寄存器B,
DS12887_CS=0;
}
//讀即時時間到數組里
void DS12887_readtime(unsigned char *q)
{
DS12887_CS=0xc0;
while(ds12887_rega&0x80!=0) {;} //查詢是否更新結束,結束后才能讀取數據,未結束則等待
//讀出時間日歷數據
q[0]=ds12887_secondt;
q[1]=ds12887_minutet;
q[2]=ds12887_hourt;
q[3]=ds12887_week;
q[4]=ds12887_date;
q[5]=ds12887_month;
q[6]=ds12887_year;
q[7]=ds12887_rega;
q[8]=ds12887_regb;
q[9]=ds12887_regc;
q[10]=ds12887_regd;
DS12887_CS=0;
}
//讀時鐘ram子程序,把讀得的值存放在數組里
void DS12887_readram(unsigned char *q)
{
DS12887_CS=0xc0;
while(ds12887_rega&0x80!=0) {;} //查詢是否更新結束,結束后才能讀取數據,未結束則等待
//讀出10字節數據
q[0]=ds12887_m1;
q[1]=ds12887_m2;
q[2]=ds12887_m3;
q[3]=ds12887_m4;
q[4]=ds12887_m5;
q[5]=ds12887_m6;
q[6]=ds12887_m7;
q[7]=ds12887_m8;
q[8]=ds12887_m9;
q[9]=ds12887_ma;
DS12887_CS=0;
}
//寫數組里預定時間到寄存器
void DS12887_writetime(unsigned char *p)
{
DS12887_CS=0xc0;
while(ds12887_rega&0x80!=0) {;} //查詢是否更新結束,結束后才能讀取數據,未結束則等待
//讀出時間日歷數據
ds12887_secondt=p[0];
ds12887_minutet=p[1];
ds12887_hourt=p[2];
ds12887_week=p[3];
ds12887_date=p[4];
ds12887_month=p[5];
ds12887_year=p[6];
DS12887_CS=0;
}
//寫10字節到12887的ram里
void DS12887_writeram(unsigned char *p)
{
DS12887_CS=0xc0;
while(ds12887_rega&0x80!=0) {;} //查詢是否更新結束,結束后才能讀取數據,未結束則等待
//寫入10字節的數據
ds12887_m1=p[0];
ds12887_m2=p[1];
ds12887_m3=p[2];
ds12887_m4=p[3];
ds12887_m5=p[4];
ds12887_m6=p[5];
ds12887_m7=p[6];
ds12887_m8=p[7];
ds12887_m9=p[8];
ds12887_ma=p[9];
///////////////////////////////////////////////////////////
DS12887_CS=0;
}
//允許輸出方波
void DS12887_startam(unsigned char am_way) //am_way為方波頻率
{
unsigned char temp;
DS12887_CS=0xc0;
temp = ds12887_rega;
temp &= 0xf0;
temp |= am_way; //輸出方波頻率設置
ds12887_rega = temp;
temp = ds12887_regb;
temp |= 0x08;
ds12887_regb=temp;
// temp |= 0x08;
DS12887_CS=0;
}
//停止輸出方波
void DS12887_stopam()
{
unsigned char temp;
DS12887_CS=0xc0;
ds12887_rega &= 0xf0; //打開鬧鈴后,關閉時要把寄存器A的低四位清零,否則就可能會出錯。
temp = ds12887_regb;
temp &= 0xf7;
ds12887_regb = temp;
DS12887_CS=0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -