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

📄 note3.c

📁 基于远程遥控的挂钟,ds12c877 基于远程遥控的挂钟,ds12c8
💻 C
字号:
#include <absacc.h> 

/* 命令常量定义 */ 
#define CMD_START_DS12C887     0x20            /* 开启时钟芯片  
*/ 
#define CMD_START_OSCILLATOR 0x70            /* 开启振荡器, 
处于抑制状态 */ 
#define CMD_CLOSE_DS12C887     0x30            /* 关掉时钟芯片  
*/ 
/* 所有的置位使用或操作,清除使用与操作 */ 
#define MASK_SETB_SET         0x80            /* 禁止刷新 */ 
#define MASK_CLR_SET         0x7f            /* 使能刷新 */ 
#define MASK_SETB_DM         0x04            /* 使用HEX格式  
*/ 
#define MASK_CLR_DM             0xfb            /* 使 
用BCD码格式 */ 
#define MASK_SETB_2412         0x02            /* 使 
用24小时模式 */ 
#define MASK_CLR_2412         0xfd            /* 使用12小时模 
式 */ 
#define MASK_SETB_DSE         0x01            /* 使用夏令时 */ 
#define MASK_CLR_DSE         0xfe            /* 不使用夏令时  
*/ 

/* 寄存器地址通道定义 */ 
xdata char chSecondsChannel _at_ 0xdf00; 
xdata char chMinutesChannel _at_ 0xdf02; 
xdata char chHoursChannel   _at_ 0xdf04; 
xdata char chDofWChannel    _at_ 0xdf06; 
xdata char chDateChannel    _at_ 0xdf07; 
xdata char chMonthChannel   _at_ 0xdf08; 
xdata char chYearChannel    _at_ 0xdf09; 
xdata char chCenturyChannel _at_ 0xdf32; 
xdata char chRegA    _at_ 0xdf0a; 
xdata char chRegB    _at_ 0xdf0b; 
xdata char chRegC    _at_ 0xdf0c; 
xdata char chRegD    _at_ 0xdf0d; 

/* 函数声明部分 */ 
void StartDs12c887(void); 
void CloseDs12c887(void); 
void InitDs12c887(void); 
unsigned char GetSeconds(void); 
unsigned char GetMinutes(void); 
unsigned char GetHours(void); 
unsigned char GetDate(void); 
unsigned char GetMonth(void); 
unsigned char GetYear(void); 
unsigned char GetCentury(void); 
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char  
chHours); 
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear); 

/*************************************************************  
函数功能:该函数用来启动时钟芯片工作 
应用范围:仅在时钟芯片首次使用时用到一次 
入口参数: 
出口参数: 
*************************************************************/    
void StartDs12c887(void) 
{ 
    chRegA = CMD_START_DS12C887; 
} 

/*************************************************************  
函数功能:该函数用来关闭时钟芯片 
应用范围:一般用不到 
入口参数: 
出口参数: 
*************************************************************/    
void CloseDs12c887(void) 
{ 
    chRegA = CMD_CLOSE_DS12C887; 
} 

void InitDs12c887() 
{ 
    StartDs12c887(); 
    chRegB = chRegB | MASK_SETB_SET;        /* 禁止刷新 */ 
    chRegB = chRegB & MASK_CLR_DM | MASK_SETB_2412 \ 
                    & MASK_CLR_DSE; 
                             
                /* 使用BCD码格式、24小时模式、不使用 
夏令时 */ 
    chCenturyChannel = 0x21;                /* 设 
置为21世纪 */ 
    chRegB = chRegB & MASK_CLR_SET;            /* 使能刷新 */ 
} 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取秒字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetSeconds(void) 
{ 
    return(chSecondsChannel); 
} 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取分字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetMinutes(void) 
{ 
    return(chMinutesChannel); 
} 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取小时字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetHours(void) 
{ 
    return(chHoursChannel); 
} 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取日字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetDate(void) 
{ 
    return(chDateChannel); 
} 
/*************************************************************  
函数功能:该函数用来从时钟芯片读取月字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetMonth(void) 
{ 
    return(chMonthChannel); 
} 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取年字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetYear(void) 
{ 
    return(chYearChannel); 
} 

/*************************************************************  
函数功能:该函数用来从时钟芯片读取世纪字节 
应用范围: 
入口参数: 
出口参数: 
*************************************************************/    
unsigned char GetCentury(void) 
{ 
    return(chCenturyChannel); 
}     

/*************************************************************  
函数功能:该函数用来设置时钟芯片的时间 
应用范围: 
入口参数:chSeconds、chMinutes、chHours是设定时间的压缩BCD码 
出口参数: 
*************************************************************/    
void SetTime(unsigned char chSeconds,unsigned char chMinutes,unsigned char  
chHours) 
{ 
    chRegB = chRegB | MASK_SETB_SET;        /* 禁止刷新 */ 
    chSecondsChannel = chSeconds; 
    chMinutesChannel = chMinutes; 
    chHoursChannel = chHours; 
    chRegB = chRegB & MASK_CLR_SET;            /* 使能刷新 */ 
} 

/*************************************************************  
函数功能:该函数用来设置时钟芯片的日期 
应用范围: 
入口参数:chDate、chMonth、chYear是设定日期的压缩BCD码 
出口参数: 
*************************************************************/    
void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear) 
{ 
    chRegB = chRegB | MASK_SETB_SET;        /* 禁止刷新 */ 
    chDateChannel = chDate; 
    chMonthChannel = chMonth; 
    chYearChannel = chYear; 
    chRegB = chRegB & MASK_CLR_SET;            /* 使能刷新 */ 

⌨️ 快捷键说明

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