📄 time.c
字号:
#include <reg52.h>//加载头文件
#define uchar unsigned char//变量类型的宏定义
#define uint unsigned int//变量类型的宏定义
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
//------------------
uchar count=0; //50mS计数单元
uchar sec,min,hou,day,mon,year;//秒、分、时、天、月
uchar temp_min,temp_hou,temp_day;//临时存放的分、时、天
//------------------------
//time0初始化,定时50mS
//------------------------
void Init_Time0(void)
{
TMOD = 0x01;
IE=0x82;
TH0 = 0x4C;
TL0 = 0x00;
TR0 = 1;
}
void Time0Int(void) interrupt 1 using 2
{
TH0 = 0x4C;
TL0 = 0x00;
count++;/* 用户代码 */
}
//***********初始化子函数************
void init(void)
{
Init_Time0();
}
//------------------------------------
//年、月、日、时、分、秒计时单元转换
//------------------------------------
void conv()
{
if(count>=20){sec++;count=0;}
if(sec>=60){min++;sec=0;}
if(min>=60){hou++;min=0;}
if(hou>=24){day++;hou=0;}
switch(mon)
{
case 1:if(day>31){mon++;day=1;}break;// 万年历计算
case 2:if(year%4==0&&year%100!=0||year%400==0)
{
if(day>29)
mon++;day=1;
}
else if(day>28)
{
mon++;day=1;
}
break;
case 3:if(day>31){mon++;day=1;}break;
case 4:if(day>30){mon++;day=1;}break;
case 5:if(day>31){mon++;day=1;}break;
case 6:if(day>30){mon++;day=1;}break;
case 7:if(day>31){mon++;day=1;}break;
case 8:if(day>31){mon++;day=1;}break;
case 9:if(day>30){mon++;day=1;}break;
case 10:if(day>31){mon++;day=1;}break;
case 11:if(day>30){mon++;day=1;}break;
case 12:if(day>31){year++;mon=1;day=1;}break;
default:break;
}
}
/****************主程序*******************/
void main()
{
init();//初始化
while(1)
{
conv();//时间计算及转换
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -