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

📄 ds12c887的c51程序.c

📁 利用C++语言编写的时钟DS12C887的驱动程序
💻 C
字号:
#pragma small
#include<reg52.h>
#include<math.h>
#include<absacc.h>
#include<stdio.h>
#define uchar unsigned char
#define uint  unsigned int

//--------------------------------------------//DS12C887寄存器地址定义
#define DS12C887_M  XBYTE [0x3f00]//秒
#define DS12C887_MA XBYTE [0x3f01]//秒报警
#define DS12C887_F  XBYTE [0x3f02]//分
#define DS12C887_FA XBYTE [0x3f03]//分报警
#define DS12C887_S  XBYTE [0x3f04]//时
#define DS12C887_SA XBYTE [0x3f05]//时报警
#define DS12C887_X  XBYTE [0x3f06]//星期
#define DS12C887_R  XBYTE [0x3f07]//日
#define DS12C887_Y  XBYTE [0x3f08]//月
#define DS12C887_N  XBYTE [0x3f09]//年
#define DS12C887_A  XBYTE [0x3f0a]//寄存器A,A.7—只读判断忙闲
#define DS12C887_B  XBYTE [0x3f0b]//寄存器B,B.7—控制工作状态:0正常、1停止
                                  //         B.2—BCD码或二进制选择:0 二进制
								  //         B.1—24/12小时模式选择:1 24小时进制
#define DS12C887_C  XBYTE [0x3f0c]//寄存器C
#define DS12C887_D  XBYTE [0x3f0d]//寄存器D  只读,读取该寄存器可使设置的时间和工作模式生效

//--------------------------------------------//DS12C887相关变量定义
uchar year;
uchar month;
uchar day;
uchar hour;
uchar minute;
uchar second;

//--------------------------------------------//时钟判断忙闲
void clock_judge_busy(void)
{ while( DS12C887_A & 0x80 );//忙则循环等待
}

//--------------------------------------------//时钟读数据
void clock_read_data(void)
{
  clock_judge_busy();
  year = DS12C887_N;   //
  clock_judge_busy();
  month = DS12C887_Y;  //
  clock_judge_busy();
  day = DS12C887_R;    //
  clock_judge_busy();
  hour = DS12C887_S;   //
  clock_judge_busy();
  minute = DS12C887_F; //
  clock_judge_busy();
  second = DS12C887_M; //
}
//--------------------------------------------//时钟写数据
void clock_write_data(void)
{ uchar i;
  DS12C887_B = 0x82;   //
  DS12C887_N = year;   //
  DS12C887_Y = month;  //
  DS12C887_R = day;    //
  DS12C887_S = hour;   //
  DS12C887_F = minute; //
  DS12C887_M = second; //
  DS12C887_A = 0x20;   //
  i= DS12C887_C;       //
  i= DS12C887_D;       //
  DS12C887_B = 0x02;   //
}

//--------------------------------------------//主程序
void main()
{ 
       year   = 5; //写入时间:2005年11月1日13时24分35秒(要设定的时间)
       month  = 11;
       day    = 1;
       hour   = 13;
       minute = 24;
       second = 35;
       clock_write_data();

       clock_read_data();//读取的时间数据在变量year/month/day/hour/minute/second中

}






⌨️ 快捷键说明

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