📄 time.c
字号:
#include <reg51.h>
#include <init.h>
void Ymd(void);
extern void Delay(unsigned char i);
extern void LCD_Write_Com(unsigned char com);
extern void LCD_Write_Dat(unsigned char dat);
extern void LCDInit(void);
extern void ring(void);
extern unsigned char count,time[3],date[3];
extern unsigned char wc,wd2,wd1,wd0;
/************定时初始化*********************/
void TimeInit(void)
{
TMOD=0x11;//T1=16,T2=16,定时 方式1
TH0=0x4c;
TL0=0x00;
TH1=0x4c;
TL1=0x00;
TR1=0;
ET1=0;
}
/****************T0中断函数***************************/
void TISR_TIME_DATE(void) interrupt 1 using 2
{
TH0=0x4c;
if(++count>=20)
{
count=0;
if(++time[2]>=60)
{
time[2]=0;
if(++time[1]>=60)
{
time[1]=0;
ring();
if(++time[0]>=24)
{
time[0]=0;
date[2]++;
if(date[1]==2)
{
if(((date[0]+2000)%400==0)||(((date[0]+2000)%4==0)&&((date[0]+2000)%100!=0))) //润年
{
if(date[2]>29)
Ymd();
}
else //不是润年
{
if(date[2]>28)
Ymd();
}
}
else if((date[1]==1)||(date[1]==3)||(date[1]==5)||(date[1]==7)||(date[1]==8)||(date[1]==10)||(date[1]==12))
{
if(date[2]>31)
Ymd();
}
else if((date[1]==4)||(date[1]==6)||(date[1]==9)||(date[1]==11))
{
if(date[2]>30)
Ymd();
}
}
}
}
}
}
/****************T0中断函数***************************/
void TISR_Watch(void) interrupt 3 using 1
{
TH1=0x4c;
if(++wc>=20)
{
wc=0;
if(++wd2>=60)
{
wd2=0;
if(++wd1>=60)
{
wd1=0;
if(++wd0>=24)
wd0=0;
}
}
}
}
/**********************年月日*****************************/
void Ymd(void)
{
date[2]=0;
if(++date[1]>12)
{
date[1]=0;
if(++date[0]>=100)
date[0]=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -