ds12887.c

来自「自己以前编的DS12887程序」· C语言 代码 · 共 74 行

C
74
字号
#include "at89x52.h"
#include "absacc.h"           //包含 XBYTE 类型的头文件 

#define YEAR_IN_RTC            0
#define MONTH_IN_RTC           1
#define DAY_IN_RTC             2
#define HOUR_IN_RTC            3
#define MINUTE_IN_RTC          4
#define SECOND_IN_RTC          5
#define SECOND_ALARM_IN_RTC    6
#define MINUTE_ALARM_IN_RTC    7
#define HOUR_ALARM_IN_RTC      8
#define RTC_SECONDS           XBYTE[0xfe00]
#define RTC_SECONDS_ALARM     XBYTE[0xfe01]
#define RTC_MINUTES           XBYTE[0xfe02]
#define RTC_MINUTES_ALARM     XBYTE[0xfe03]
#define RTC_HOURS             XBYTE[0xfe04]
#define RTC_HOURS_ALARM       XBYTE[0xfe05]
#define RTC_DAY_OF_WEEK 	  XBYTE[0xfe06]
#define RTC_DAYS              XBYTE[0xfe07]
#define RTC_MONTHS            XBYTE[0xfe08]
#define RTC_YEARS             XBYTE[0xfe09]
#define RTC_DSA               XBYTE[0xfe0a]
#define RTC_DSB               XBYTE[0xfe0b]
#define RTC_DSC               XBYTE[0xfe0c]
#define RTC_DSD               XBYTE[0xfe0d]

void RTC_Init(void)
{
	RTC_DSA=0x2f;
//	RTC_DSB=RTC_DSB|0x80;                           //禁止更新
    RTC_DSB=0x46;                                   //更新中断,闹钟中断,周期中断允许    24时制
//	RTC_DSB=RTC_DSB&0x7f;                           //允许更新
//  RTC_DSC=0x00;
//  ACC=RTC_DSD;	
}


unsigned char Read_RTC(unsigned char option)
{
  
  switch(option)
  {
	
    case YEAR_IN_RTC:  return(RTC_YEARS);  break;
    case MONTH_IN_RTC: return(RTC_MONTHS); break;
    case DAY_IN_RTC:   return(RTC_DAYS);   break;
    case HOUR_IN_RTC:  return(RTC_HOURS);  break;
    case MINUTE_IN_RTC:return(RTC_MINUTES);break;
    case SECOND_IN_RTC:return(RTC_SECONDS);break;
	default:  break;
  }
}


void Write_RTC(unsigned char option,unsigned char j)
{
// RTC_DSB=RTC_DSB|0x80;                           //禁止更新  
 switch(option)
  {
    case YEAR_IN_RTC:RTC_YEARS=j;    break;
    case MONTH_IN_RTC:RTC_MONTHS=j;  break;
    case DAY_IN_RTC:RTC_DAYS=j;      break;
    case HOUR_IN_RTC:RTC_HOURS=j;    break;
    case MINUTE_IN_RTC:RTC_MINUTES=j;break;
    case SECOND_IN_RTC:RTC_SECONDS=j;break;
    case SECOND_ALARM_IN_RTC:RTC_SECONDS_ALARM=j;break;
    case MINUTE_ALARM_IN_RTC:RTC_MINUTES_ALARM=j;break;
    case HOUR_ALARM_IN_RTC:RTC_HOURS_ALARM=j;break; 
	default:  break;
  }
//  RTC_DSB=RTC_DSB&0x7f;                           //允许更新
}

⌨️ 快捷键说明

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