?? clock.c
字號:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code xuanduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int num50ms,seconds,minutes,hours,secondsge,secondsshi,minutesge,minutesshi,hoursge,hoursshi;
sbit key1=P3^3; /* 暫停或中斷計時*/
sbit key2=P3^2; /*小時設置*/
sbit key3=P3^5; /*分鐘設置*/
sbit key4=P3^4; /*秒設置*/
void display1(int);
void display2(int);
void display3(int);
void key1set();
void key2set();
void key3set();
void key4set();
void delay(int) ;
void main()
{
TMOD=0x01;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
EA=1;
ET0=1;
TR0=1;
seconds=55;
minutes=58; /*時間初始設置*/
hours=19 ;
while(1)
{
P0=0x40;
P2=0xfb;
delay(5);
P0=0x40;
P2=0xdf;
delay(5);
key1set();
key2set();
key3set();
key4set();
display1( seconds) ;
display2( minutes) ;
display3( hours ) ;
}
}
void T0_time() interrupt 1
{ TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
num50ms++;
if(num50ms==20)
{ num50ms=0;
seconds++;
if(seconds==60)
{ seconds=0;
minutes++;
if(minutes==60)
{ minutes=0;
hours++;
}
}
}
}
void key1set()
{ if(key1==0)
{ delay(10);
if(key1==0)
{ while(!key1);
TR0=~TR0;
}
}
}
void key2set()
{ if(key2==0)
{ delay(10);
if(key2==0)
{ hours++;
if(hours==24)
{ hours=0;
display3(hours);
}
while(!key2);
}
}
}
void key3set()
{ if(key3==0)
{ delay(10);
if(key3==0)
{ minutes++;
if(minutes==60)
{ hours++;
minutes=0;
display2(minutes);
}
while(!key3);
}
}
}
void key4set()
{ if(key4==0)
{ delay(10);
if(key4==0)
{ seconds++;
if(seconds==60)
{ seconds=0;
minutes++;
display1(seconds);
}
while(!key4);
}
}
}
void display1(int seconds)
{ secondsshi=seconds/10;
secondsge =seconds%10;
P0=xuanduan[secondsge];
P2=0xfe;
delay(5);
P0=0xf7;
P0=xuanduan[secondsshi];
P2=0xfd;
delay(5);
}
void display2(int minutes)
{ minutesshi=minutes/10;
minutesge =minutes%10;
P0=xuanduan[minutesge];
P2=0xf7;
delay(5);
P0=xuanduan[minutesshi];
P2=0xef;
delay(5);
}
void display3(int hours)
{ hoursshi=hours/10;
hoursge=hours%10;
P0=xuanduan[hoursge];
P2=0xbf;
delay(5);
P0=xuanduan[hoursshi];
P2=0x7f;
delay(5);
}
void delay(int x)
{ uint i,j;
for(i=x;i>0;i--)
for(j=120;j>0;j--);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -