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

📄 12887.c

📁 数据采集系统的好参考资料,高精度的传感器采集系统
💻 C
字号:
//-------------------------------------------------------------------
//12887驱动程序,程序定义p2.6作为芯片的片选,根据实际情况可进行修改
//程序与外部的接口是指针变量dt,可有调用程序提供
//-------------------------------------------------------------------
#include"absacc.h"
#define mca XBYTE[0xbf0a]
#define mcb XBYTE[0xbf0b]
#define mcc XBYTE[0xbf0c]
#define mcd XBYTE[0xbf0d]
unsigned char xdata *addr=0xbf00;   		//定义addr为基地址指针
unsigned char bdata buf;
sbit uip=buf^7;

unsigned char at[6]={6,9,7,4,2,0};  		//时标寄存器地址缓冲区,依次为年月日时分秒
//----------------------------------------------------------------------------
//函数:void init_12887(void)
//功能:12887初始化函数
//----------------------------------------------------------------------------
void DS12887_init(void) 
{
   mca=0x2f;      //时钟频率为32.768kHz,中断周期500ms
   buf=mcc;       //读寄存器C,清零中断请求标志
   buf=mcd;       //读寄存器D,使VRT=1,数据有效
   mcb=0x76;      //允许中断,时标为二进制码,12小时方式 
}
//-------------------------------------------------------------------------
//函数:void Write_12887(unsigned char *dt)
//功能:12887写数据函数
//参数:时间缓冲区
//--------------------------------------------------------------------------
void Write_12887(unsigned char *dt) 
{
   unsigned char i;
   mcb|=0x80;                   //写禁止12887命令,b寄存器最高位置1
   for(i=0;i<6;i++)
      *(addr+at[i])=*(dt+i);
   mcb&=0x7f;                   //写允许12887命令使其工作,b寄存器最高位置0
} 
//--------------------------------------------------------------------------
//函数:void Read_12887(unsigned char *dt)
//功能:12887读数据函数
//参数:数据读入时间缓冲区
//---------------------------------------------------------------------
void Read_12887(unsigned char *dt) 
{
   unsigned char i;
   do{buf=mca;}while(uip);      //检测芯片是否处在更新周期阶段
   for(i=0;i<6;i++)
      *(dt+i)=*(addr+at[i]);
}

⌨️ 快捷键说明

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