一:题目描述

二:参考代码
1、main.c
#include "stc15.h"
#include "intrins.h"
#include "ds1302.h"
#include "iic.h"
#include "Display.h"
sbit L1=P4^4; //矩阵键盘列引脚定义
sbit L2=P4^2;
sbit L3=P3^5;
sbit L4=P3^4;
unsigned char Time[]={0x59,0x09,0x23};
u8 jilu_time[2]; //保存记录时间
u8 Key_Slow_Flag,Data_Slow_Flag,Smg_Slow_Flag,Led_Slow_Flag;
u8 jiemian=0; //0:时间界面 1:输入界面 2:记录界面
bit input_flag=0; //刚进入输入界面还未输入标志为0,有输入为1。
u16 dat=0; //四位数据
u8 keynum=0xFF; //键值
u8 count=0;
bit jilu_flag=0; //记录输入四位数的时间
bit w_f_flag=0; //输入完成标志
u8 AT_dat[4]; //保存要写入EEPROM的数据
bit led_flag=0;
u8 led=0xFF;
u16 lastdat; //保存上次数据
void Key_Proc(void);
void Data_Proc(void);
void Smg_Proc(void);
void Led_Proc(void);
void LedDisplay(u8 LED);
void Delay2ms(void) //@12.000MHz
{
unsigned char data i, j;
i = 24;
j = 85;
do
{
while (--j);
} while (--i);
}
void Timer0_Init(void) //2毫秒@12.000MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x40; //设置定时初始值
TH0 = 0xA2; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0=1;
EA=1;
}
void Init(u8 i)
{
P2&=0x1F;
switch(i)
{
case 4:P0=0xFF;HC138(i);P2&=0x1F;P0=0x00;break;
case 5:HC138(i);break;
case 6:HC138(i);break;
case 7:P2&=0x1F;P0=0xFF;HC138(i);break;
}
P2&=0x1F;
}
void main(void)
{
Init(4);
Init(5);
Init(6);
Init(7);
Time_Write();
Timer0_Init();
while(1)
{
Key_Proc();
Data_Proc();
Smg_Proc();
Led_Pr