2023-04-24

时钟

#include

code unsigned char seven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char sec=50,min=44,hour=12;

unsigned char sec_t,min_t,hour_t;        //½ÓÊܵ±Ç°µ÷ÕûµÄÃëʱ·Ö

unsigned char cp,i,flash,cp1,key_flag=0;  //key_flagģʽ±êÖ¾±äÁ¿

sbit mode = P3^3;

sbit Add = P3^2;

sbit Cut = P3^1;

sbit Reset = P3^0;

/*ÑÓʱº¯Êý*/

void delay(unsigned int x)

{

  while(x--);

}

/*°´¼ü¿ØÖƺ¯Êý*/

void key(void)

{

  if(mode==0)        //Èç¹û°´¼ü°´ÏÂ

    {

delay(300);      //ÑÓʱÏû³ý°´¼ü¶¶

while(mode==0);  //Èç¹û°´¼üȷʵ°´Ï£¬µÈ´ý°´¼üÁÁÆð

hour_t=hour;

min_t=min;

sec_t=sec;

key_flag++;

if(key_flag>3)key_flag=1;

    }

if(Add==0)//¼Ó°´¼ü

{

delay(300);//ÑÓʱÏû³ý¼ü¶¶

while(Add==0);//Èç¹û°´¼üȷʵ°´Ï£¬µÈ´ý°´¼ü̧Æð

if(key_flag==1)//Сʱ++

hour_t++;

if(hour_t>=24)

hour_t=0;

hour=hour_t;//¸³Öµ

if(key_flag==2)//·ÖÖÓ++

min_t++;

if(min_t>=60)

min_t=0;

      min=min_t; //¸³Öµ

if(key_flag==3)//Ãë++

sec_t++;

if(sec_t>=60)

sec_t=0;

sec=sec_t;//¸³Öµ

}

if(Cut==0)

{

delay(300);//ÑÓʱÏû³ý¼ü¶¶

while(Cut==0);//Èç¹û°´¼üȷʵ°´Ï£¬µÈ´ý°´¼ü̧Æð

if(key_flag==1)//Сʱ--

hour_t--;

if(hour_t<0)

hour_t=23;

hour=hour_t;//¸³Öµ

if(key_flag==2)//·ÖÖÓ--

min_t--;

if(min_t<0)

min_t=59;

      min=min_t; //¸³Öµ

if(key_flag==3)//Ãë--

sec_t--;

if(sec_t<0)

sec_t=59;

sec=sec_t;//¸³Öµ

}

if(Reset==0)

{

delay(300);

while(Reset==0)

key_flag=0;

}

}

void timer0_isr(void) interrupt 1  

{

TH0=(65535-5000)/256;

TL0=(65535-5000)%256;

cp++;      

if(cp>=100)

  {

cp=0;

cp1++;

flash=~flash;

  }

  if(cp1>=2)

  {

cp1=0;

sec++;

  }

if(sec>=60)

{

sec=0;

    min++;

}

  if(min>=60)

{

min=0;

hour++;

}

if(hour>=24)

{

  hour=0;

}

P0=0xff;//ÏûÒþÇå³ýP0^0¶Ë¿ÚµÄÊý¾Ý

if(key_flag==0)

{

switch(i)

{

case 0:P0=seven_seg[sec % 10];P2=0xdf;break;

case 1:P0=seven_seg[sec / 10];P2=0xef;break;

case 2:P0=seven_seg[min % 10]&(0x7f|flash);P2=0xf7;break;

case 3:P0=seven_seg[min / 10];P2=0xfb;break;

case 4:P0=seven_seg[hour % 10]&(0x7f|flash);P2=0xfd;break;

case 5:P0=seven_seg[hour / 10];P2=0xfe;break;

}

}

//µ÷ÕûСʱ£¬Ð¡Ê±ÉÁ˸

if(key_flag==1)

{

switch(i)

{

case 0:P0=seven_seg[sec_t % 10];P2=0xdf;break;//ÏÔʾÃëµÄ¸öλ

case 1:P0=seven_seg[sec_t / 10];P2=0xef;break;//ÏÔʾÃëµÄ¸öλ

case 2:P0=seven_seg[min_t % 10];P2=0xf7;break;//ÏÔʾ·ÖµÄ¸öλ

case 3:P0=seven_seg[min_t / 10];P2=0xfb;break;//ÏÔʾ·ÖµÄ¸öλ

case 4:P0=seven_seg[hour_t % 10] | flash;P2=0xfd;break;

case 5:P0=seven_seg[hour_t / 10] | flash;P2=0xfe;break;

}

}

//µ÷ÊÔ·ÖÖÓ£¬·ÖÖÓÉÁ˸

if(key_flag==2)

{

switch(i)

{

case 0:P0=seven_seg[sec_t % 10];P2=0xdf;break;//ÏÔʾÃëµÄ¸öλ

case 1:P0=seven_seg[sec_t / 10];P2=0xef;break;//ÏÔʾÃëµÄ¸öλ

case 2:P0=seven_seg[min_t % 10]| flash;P2=0xf7;break;//ÏÔʾ·ÖµÄ¸öλ

case 3:P0=seven_seg[min_t / 10]| flash;P2=0xfb;break;//ÏÔʾ·ÖµÄ¸öλ

case 4:P0=seven_seg[hour_t % 10];P2=0xfd;break;

case 5:P0=seven_seg[hour_t / 10];P2=0xfe;break;

}

}

//µ÷ÊÔÃ룬ÃëÉÁ˸

if(key_flag==3)

{

switch(i)

{

case 0:P0=seven_seg[sec_t % 10]| flash;P2=0xdf;break;//ÏÔʾÃëµÄ¸öλ

case 1:P0=seven_seg[sec_t / 10]| flash;P2=0xef;break;//ÏÔʾÃëµÄ¸öλ

case 2:P0=seven_seg[min_t % 10];P2=0xf7;break;//ÏÔʾ·ÖµÄ¸öλ

case 3:P0=seven_seg[min_t / 10];P2=0xfb;break;//ÏÔʾ·ÖµÄ¸öλ

case 4:P0=seven_seg[hour_t % 10];P2=0xfd;break;

case 5:P0=seven_seg[hour_t / 10];P2=0xfe;break;

}

}

i++;

    if(i>=6)//µ÷ÓÃÄĸöÊýÂë¹Üµ½ÏÔʾ״̬

  {

    i=0;

  }

}

void timer0_init(void)                      

{

TMOD=0x01;

TH0=(65535-2000)/256;

TL0=(65535-2000)%256;

ET0=1;

TR0=1;

EA=1;

}

void main(void)

{

timer0_init();

P2=0x00;

while(1)

{

key();

}

}

你可能感兴趣的:(2023-04-24)