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

📄 ds12887.c

📁 单片机外围芯片DS12887应用程序代码
💻 C
字号:
#include <absacc.h>
#include <reg51.h>
#define  uchar unsigned char
#define  MCA XBYTE[0xff0a]			/* 寄存器A */
#define  MCB XBYTE[0xff0b] 			/* 寄存器B */
#define  MCC XBYTE[0xff0c] 			/* 寄存器C */
#define  MCD XBYTE[0xff0d] 			/* 寄存器D */
#define  HOUR XBYTE[0xff05] 			/* 时报警 */
sbit uip_bit=ACC^7;
uchar idata dt[6]={99,4,5,11,11,25};	/* 99/4/5 11:11:25 */            
uchar at[6]={9,8,7,4,2,0};			/* 年、月、日、时、分、秒 */
uchar xdata *addr=0xff00;			/* 片选地址 */

void initstat(void) {				/* 初始化函数 */
  MCA=0x2f; 							/* 时钟频率为32.768kHz,中断周期500ms */
  ACC=MCC;  							/* 读寄存器C,清零中断请求标志 */
  ACC=MCD;  							/* 读寄存器D,使VRT=1,数据有效 */
  MCB=0x72; 							/* 允许中断,时标为BCD码,24小时方式 */
  HOUR=0xff;							/* 每小时闹钟中断 */
  EA=1;								/* 开中断 */
  EX0=1;
}

void wMC(void) {						/* 写时标函数 */
  uchar i;
  MCB=0x80;  						/* 使SET=1 */
  for(i=0;i<=9;i++)					/* 置时标初值 */
   *(addr+at[i])=dt[i];
}

void rMC(void) {						/* 读时标函数 */
  uchar i;
  do {ACC=MCA;} while(uip_bit);		/* 判UIP位 */
  for(i=0;i<6;i++)					/* 读时标寄存器的值 */
   dt[i]=*(addr+at[i]);
}

void main(void) {					/* 主函数 */
   wMC();
   initstat();
   rMC();
   while(1);
}

⌨️ 快捷键说明

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