📄 watch.c
字号:
#include <AT89X51.H>
//全局变量
unsigned int s_l; //s
unsigned int s_h;
unsigned int m_l; //min
unsigned int m_h;
unsigned int h_l; //hour
unsigned int h_h;
unsigned int a;
unsigned int i;
//////////////////////////////////////////
//时间设置
/*
struct SYSTEMTIME
{
int wYear;
int wMonth;
int wDayOfWeek;
int wDay;
int wHour;
int wMinute;
int wSecond;
int wMilliseconds;
}nowtime={0,0,0,0,0,0,0,0};
*/
//延时子程序
void delay(unsigned int times)
{
unsigned int i;
unsigned int j;
for (i=0;i<times;i++)
for (j=0;j<10;j++);
}
//显示子程序
void display (unsigned int t)
{
P1=0x80;
P2=s_l;
delay(t);
P1=0x40;
P2=s_h;
delay(t);
////////////////////////////////
P1=0x10;
P2=m_l;
delay(t);
P1=0x08;
P2=m_h;
delay(t);
//////////////////////////////////
P1=0x02;
P2=h_l;
delay(t);
P1=0x01;
P2=h_h;
delay(t);
}
//中断程序
void timer1 (void) interrupt 3 using 1
{
a=a-1;
do {} while (i-->0);
i=18;
if (a==0)
{
s_l=s_l+1;
if (s_l==10)
{
s_l=0;s_h=s_h+1;
if(s_h==6)
{s_h=0;m_l=m_l+1;
if (m_l==10)
{
m_l=0;m_h=m_h+1;
if (m_h==6)
{
m_h=0;h_l=h_l+1;
if (h_l==10)
{
h_l=0;h_h=h_h+1;
}
else if (h_h==2&h_l==4)
{h_h=0;h_l=0;}
}
}
}
}
a=20;
}
TH1=-50000/256;
TL1=-50000%256;
}
//////////////////////////////////////////////
///////////调定时间
void set (void) interrupt 2 using 3
{
//set second
if (P3_0==0)
{
s_l=s_l+1;
if(s_l==10)
{s_l=0;
s_h=s_h+1;
if(s_h==6)
s_h=0;
}
}
//set minute
else if (P3_1==0)
{
m_l=m_l+1;
if(m_l==10)
{
m_l=0;
m_h=m_h+1;
if(m_h==6)
m_h=0;
}
}
//set hour
else if (P3_2==0)
{
h_l=h_l+1;
if(h_l==10)
{
h_l=0;
h_h=h_h+1;
}
else if (h_h==2&h_l==4)
{h_h=0;h_l=0;}
}
}
///////////////////////////////////////////////////////////////
void main(void)
{
TMOD=0X10;
TH1=-50000/256;
TL1=-50000%256;
EA=1;
ET1=1;
TR1=1;
EX1=1;
IT1=1;
//struct SYSTEMTIME [nowtime];
//GetLocalTime(&nowtime);
//s_l=nowTime.wSecond%10;
s_l=0;
s_h=5;
m_l=1;
m_h=4;
h_l=9;
h_h=0;
a=20;
i=18;
do{ display(50);} while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -