📄 ds12c887的c51程序.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 + -