|
按鍵調節(jié)時間。可是不管用。還有數(shù)碼管閃爍不停;;;;;求指教
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80,0x90,0xBF};
uchar timenum[6]= {0,1,2,3,4,5};
sbit seg0 = P2^0;
sbit seg1 = P2^1;
sbit seg2 = P2^2;
sbit seg3 = P2^3;
sbit seg4 = P2^4;
sbit key0 = P1^0;
sbit key1 = P1^1;
sbit key2 = P1^2;
uint miao=0,shi=0,fen=0,n=0;
void delay1ms(uint z)
{
uint x,y;
for(x = z;x>0;x--)
for(y=100;y>0;y--);
}
void key()
{
uint i=0,j=0,k=0;
// EA = 0;
if(key0 == 0)
{
delay1ms(3);
if(key0 == 0)
{
i++;
while(!key0);
}
if(i>=3)
i=0;
}
if(i==1)
{
if(key1==0)
{
delay1ms(3);
if(key1 == 0)
{
fen++;
while(!key1);
}
if(fen>=60)
fen=0;
}
else if(key2==0)
{
delay1ms(3);
if(fen<=0)
fen=60;
if(key2 == 0)
{
fen--;
while(!key2);
}
}
}
else if(i==2)
{
if(key1==0)
{
delay1ms(3);
if(key1 == 0)
{
shi++;
while(!key1);
}
if(shi>=25)
shi = 0;
}
else if(key2==0)
{
delay1ms(3);
if(shi<=0)
shi=25;
if(key2 == 0)
{
shi--;
while(!key2);
}
}
}
// EA = 1;
}
// display();
void display(void)
{
P0 = 0xff;
seg2=0; seg1=0; seg0=0; P0=table[timenum[0]];delay1ms(5);
P0 = 0xff;
seg2=0; seg1=0; seg0=1; P0=table[timenum[1]];delay1ms(5);
P0 = 0xff;
seg2=0; seg1=1; seg0=0; P0=table[10];delay1ms(5);
P0 = 0xff;
seg2=0; seg1=1; seg0=1; P0=table[timenum[2]];delay1ms(5);
P0 = 0xff;
seg2=1; seg1=0; seg0=0; P0=table[timenum[3]];delay1ms(5);
P0 = 0xff;
seg2=1; seg1=0; seg0=1; P0=table[10];delay1ms(5);
P0 = 0xff;
seg2=1; seg1=1; seg0=0; P0=table[timenum[4]];delay1ms(5);
P0 = 0xff;
seg2=1; seg1=1; seg0=1; P0=table[timenum[5]];delay1ms(5);
}
void zhongduan()
{
TMOD = 0X01;
TH0 = 0XEA;
TL0 = 0X60;
TR0 = 1;
EA = 1;
ET0 = 1;
}
void main()
{
seg3 = 1;
seg4 = 0;
zhongduan();
while(1)
{
display();
key();
}
}
void timer() interrupt 1
{
TH0 = 0XEA;
TL0 = 0X60;
n++;
if(n>=50)
{
miao++;
n=0;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
}
timenum[0] = miao%10;
timenum[1] = miao/10;
timenum[2] = fen%10;
timenum[3] = fen/10;
timenum[4] = shi%10;
timenum[5] = shi/10;
}
|
|