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

📄 kds1302.c

📁 一体化锁主程序
💻 C
字号:
#include "KKZQ.H"

//======================================================
//                  RAM资源
//   占用7个字节
//=======================================================
//
idata uchar sys_second;                             //系统时间 秒
idata uchar sys_min;                                //系统时间 分
idata uchar sys_hour;                               //系统时间 时
idata uchar sys_date;                               //系统时间 日
idata uchar sys_mon;                                //系统时间 月
idata uchar sys_week;                               //系统时间 星期
idata uchar sys_year;                               //系统时间 年

void write_systime();                           //写系统时间函数
uchar read_time_byte(uchar addr);               //读1302
void write_time_byte(uchar addr,uchar tdata);   //写1302

//  地址 80h ---- 写秒
//  地址 82h ---- 写分
//  地址 84h ---- 写时
//  地址 86h ---- 写日
//  地址 88h ---- 写月
//  地址 8ah ---- 写星期
//  地址 8ch ---- 写年

//  地址 81h ---- 读秒
//  地址 83h ---- 读分
//  地址 85h ---- 读时
//  地址 87h ---- 读日
//  地址 89h ---- 读月
//  地址 8bh ---- 读星期
//  地址 8dh ---- 读年

//
//==========================================================================================
//
// filename : read_byte(uchar addr)
// 功    能 : 从给定地址(addr)读1个字节数据
// 返 回 值 : 返回读出的数据
//
//==========================================================================================
uchar read_time_byte(uchar addr)
{  uchar i,k;
   _nop_();
   k=addr;
   DST_RST = 1;
      _nop_();
   for(i=8;i>0;i--)
   {  DST_CLK = 0;
      k>>=1;

      _nop_(); _nop_(); _nop_(); _nop_();
      DST_IO = CY;

      _nop_(); _nop_(); _nop_(); _nop_();
      DST_CLK = 1;


      _nop_(); _nop_(); _nop_(); _nop_();
   }
   k=0; DST_IO=1;
   for(i=8;i>0;i--)
   {  DST_CLK=1;

      _nop_(); _nop_(); _nop_(); _nop_();
      DST_CLK = 0;
      k>>=1;

      _nop_(); _nop_(); _nop_(); _nop_();
      if (DST_IO) k|=0x80;

      _nop_(); _nop_(); _nop_(); _nop_();
   }
   DST_RST =0;

   return(k);
}
//==========================================================================================
//
// filename : write_time_byte(uchar addr,uchar tdata)
// 功    能 : 向给定地址(addr)写入1个字节数据(tdata)
// 返 回 值 : 无
//
//==========================================================================================
//
void write_time_byte(uchar addr,uchar tdata)
{  uchar i,k;
   k=addr;
   DST_RST = 0;DST_RST = 1;
   _nop_();
   for(i=8;i>0;i--)
   {  DST_CLK = 0;
      k>>=1;   _nop_(); _nop_(); _nop_(); _nop_();
      DST_IO = CY;  _nop_(); _nop_(); _nop_(); _nop_();
      DST_CLK = 1;
      _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
   }
   k=tdata;
   for(i=8;i>0;i--)
   {  DST_CLK = 0;
      k>>=1;  _nop_(); _nop_(); _nop_(); _nop_();
      DST_IO = CY;   _nop_(); _nop_(); _nop_(); _nop_();
      DST_CLK = 1;
      _nop_();  _nop_(); _nop_(); _nop_(); _nop_();
   }
   DST_CLK=0;  _nop_(); _nop_(); _nop_(); _nop_();
   DST_RST =0; _nop_(); _nop_(); _nop_(); _nop_();
}


//==========================================================================================
// filename : write_systime()
// 功    能 : 向ds1302中写入当前时间(秒,分,时,日,月,星期,年)
// 返 回 值 : 无
// 本程序精确到时间 --- 分,秒单位默认 0
// 时间数据格式如下
//         13: 25              0x13  0x25   BCD码表示
//==========================================================================================
//
void write_systime()
{
   write_time_byte(0x8e,0x00);         //WP=0, 取消写保护
   write_time_byte(0x80,sys_second);      //设置 --- 秒
   write_time_byte(0x82,sys_min);      //设置 --- 分
   write_time_byte(0x84,sys_hour);      //设置 --- 时
   write_time_byte(0x86,sys_date);      //设置 --- 日
   write_time_byte(0x88,sys_mon);      //设置 --- 月
   write_time_byte(0x8a,sys_week);      //设置 --- 星期
   write_time_byte(0x8c,sys_year);      //设置 --- 年
   write_time_byte(0x8e,0x80);         //WP=1, 设置写保护
}

⌨️ 快捷键说明

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