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

📄 ds12887.h

📁 PLC的 触摸屏现实功能
💻 H
字号:
/************************************************************/
/*********         DS12887.H C51 driver          ************/
/***********************--20071009     **********************/
/************************************************************/
 
#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_DAYS              XBYTE[0xfe07]  
#define RTC_MONTHS            XBYTE[0xfe08]                  
#define RTC_YEARS             XBYTE[0xfe09] 
#define DSA                   XBYTE[0xfe0a]              //DS12887 register A 
#define DSB                   XBYTE[0xfe0b] 
#define DSC                   XBYTE[0xfe0c] 
#define DSD                   XBYTE[0xfe0d] 
/////////////////////////////////////////////////////// 
sbit RTC_CS=P2^0; 
//------------------------------------------------------
void Set_Year(unsigned char Data);
void Set_Month(unsigned char Data);
void Set_Day(unsigned char Data);
void Set_Hour(unsigned char Data);
void Set_Minute(unsigned char Data);
void Set_Second(unsigned char Data);
//-----------------------------------
unsigned char Get_Year(void);
unsigned char Get_Month(void);
unsigned char Get_Day(void);
unsigned char Get_Hour(void);
unsigned char Get_Minute(void);
unsigned char Get_Second(void);


//------------------------------------------------------
////////////////////////////////////////////////////// 
bit Init_RTC(void); 
bit Second_Interrupt(void); 
unsigned char Read_RTC(unsigned char); 
void Write_RTC(unsigned char,unsigned char); 

unsigned char BCD_TO_DEC(unsigned char InData);
unsigned char DEC_TO_BCD(unsigned char InData);
//----------------------------------------------------- 
 
///////////////////////////////////////// 
// 实现部分 RTC.C 
//////////////////////////////////////// 
//#include <reg52.h> 
#include<absacc.h> 
//#include<RTC.h> 
 
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; 
  } 
} 
 
void Write_RTC(unsigned char option,unsigned char j) 
{ 
  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; 
 
  } 
} 
 
 
bit Second_Interrupt(void) 
{ 
    if( (DSC&0x20)==0x20 )return(1); 
    return(0); 
} 
 
 
/*  initialize DS12887  */ 
bit Init_RTC(void) 
{ 
    DSA=0x20; 
    DSB=0x72;                                  //SET=0,*IE=disenable,SQW=disenable ,BCD,NO DSE 
    DSC=0x00; 
    ACC=DSD; 
 
    //every second interrupt 
    Write_RTC(HOUR_ALARM_IN_RTC,0xff); 
    Write_RTC(MINUTE_ALARM_IN_RTC,0xff); 
    Write_RTC(SECOND_ALARM_IN_RTC,0xff); 
    //if(ACC&0x80)return(0); //when low bat return 0 
    //return(1); 
     /* DSB=0x82;                                   //set SET=1 
  RTC_HOURS=0x23; 
  RTC_MINUTES=0x12; 
  RTC_SECONDS=0x30; 
  DSB=0x02; 
   */ 
  return(1);     
}

//---------------------------------------------------
unsigned char BCD_TO_DEC(unsigned char InData)
{
	unsigned char OutData=0;

	OutData=(InData>>4)*10+(InData&0x0f);

	return OutData;
}
//---------------------------------------------------
unsigned char DEC_TO_BCD(unsigned char InData)
{
	unsigned char temp[2],OutData=0;

	temp[0]=InData/10;
	temp[1]=InData-10*temp[0];
	temp[0]<<=4;
	OutData=temp[0]|temp[1];

	return OutData;
}
//---------------------------------------------------
unsigned char Get_Year(void)
{
	return	BCD_TO_DEC( Read_RTC(YEAR_IN_RTC) );
}
//---------------------------------------------------
unsigned char Get_Month(void)
{
	return	BCD_TO_DEC( Read_RTC(MONTH_IN_RTC) );
}
//---------------------------------------------------
unsigned char Get_Day(void)
{
	return	BCD_TO_DEC( Read_RTC(DAY_IN_RTC) );
}
//---------------------------------------------------
unsigned char Get_Hour(void)
{
	return	BCD_TO_DEC( Read_RTC(HOUR_IN_RTC) );
}
//---------------------------------------------------
unsigned char Get_Minute(void)
{
	return	BCD_TO_DEC( Read_RTC(MINUTE_IN_RTC) );
}
//---------------------------------------------------
unsigned char Get_Second(void)
{
	return	BCD_TO_DEC( Read_RTC(SECOND_IN_RTC) );
}
//---------------------------------------------------
/////////////////////////////////////////////////////
//---------------------------------------------------
void Set_Year(unsigned char Data)
{
	Write_RTC( YEAR_IN_RTC,DEC_TO_BCD(Data) );
}
//---------------------------------------------------
void Set_Month(unsigned char Data)
{
	Write_RTC( MONTH_IN_RTC,DEC_TO_BCD(Data) );
}
//---------------------------------------------------
void Set_Day(unsigned char Data)
{
	Write_RTC( DAY_IN_RTC,DEC_TO_BCD(Data) );
}
//---------------------------------------------------
void Set_Hour(unsigned char Data)
{
	Write_RTC( HOUR_IN_RTC,DEC_TO_BCD(Data) );
}
//---------------------------------------------------
void Set_Minute(unsigned char Data)
{
	Write_RTC( MINUTE_IN_RTC,DEC_TO_BCD(Data) );
}
//---------------------------------------------------
void Set_Second(unsigned char Data)
{
	Write_RTC( SECOND_IN_RTC,DEC_TO_BCD(Data) );
}
//---------------------------------------------------

//--------------------------End of DS12887----------------------------

⌨️ 快捷键说明

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