以下是一个实时时钟的程序,里面包含有 1S 定时器,你也可以使用延时程序,
但是不精确
/*备注:按键一为功能键,按一下调年,按两下调月,按三下调日,按四下调
时,按五下调分*/
/* 按六下退出,或者在任何时候按键四退出设定状态。在设定状态键二加
一,键三减一*/
/* 键四退出,正常状态键二显示年,键三显示月日,键四显示星期和秒*/
/* 星期根据日期计算得出,其已全部调试通过,为了时间精确,要调一个
误差值*/
#include<reg2051.h>
#include<stdio.h>
#include<absacc.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code
led_xs[12]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0xfd};
uchar data led_data[4];
volatile uchar data a; //定义按键一志标
volatile uchar data month=4; //定义月并赋初值
volatile uchar data date=29; //定义日并赋初值
volatile uchar data week; //定义星期并赋初值
volatile uchar data hour; //定义时
volatile uchar data min; //定义分
volatile uchar data sec=0; //定义秒
volatile uint data zn=0; //定义中间存储变量
volatile uint data year=2007; //定义年并赋初值
sbit md=P3^7; //定义秒点
sbit k1=P1^0; //定义按键一
sbit k2=P1^1; //定义按键二
sbit k3=P1^2; //定义按键三
sbit k4=P1^3; //定义按键四
sbit hs=P1^4; //定义显示片选信号一
sbit hg=P1^5; //定义显示片选信号二
sbit ms=P1^6; //定义显示片选信号三
sbit mg=P1^7; //定义显示片选信号四
bit sans; //定义闪烁标志
bit b; //定义按键二标志
bit c; //定义按键三标志
bit w; //定义按键四标志