⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 定时器 精确 做的 时钟.c

📁 用51的定时器做的精确设置时钟程序 晶振11.0592M的i为115;12M的i为125; 由Delay 参数确定延迟时间
💻 C
字号:
#include <AT89X51.H>
#include   <stdlib.h>   
#include   <stdio.h>   

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/*延时程序 晶振11.0592M的i为115;12M的i为125;
由Delay 参数确定延迟时间
*/
void mdelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<115;i++);
}
}


unsigned char shi;
unsigned char fen;
unsigned char miao;
unsigned char geshu;
unsigned char gewei;
unsigned char shiwei;
unsigned char baiwei;
unsigned char qianwei;
unsigned char wei;


void INt_0(void) interrupt 0 using 0
{
     mdelay(12);	
     geshu++;
	 if(geshu==100)
	   geshu=0;
     mdelay(200);

     qianwei=geshu/1000;
	 geshu=geshu%1000;
	 baiwei=geshu/100;
     geshu=geshu%100;
     shiwei=geshu/10;
	 gewei=geshu%10;
}


void jianpan(void)
{
 if(P1_7==0)
	{
	 shi++;
	 if(shi==24)
	    shi=0;
     while(P1_7==0);
	}

    if(P1_6==0)
	{
       shi--;
	 if(shi==255)
	    shi=23;
  	
     while(P1_6==0);
	}
    if(P1_5==0)
	{
	 fen++;
	 if(fen==60)
	    fen=0;
     while(P1_5==0);
	}

    if(P1_4==0)
	{
		 fen--;
	 if(fen==255)
	    fen=59;

     while(P1_4==0);
	}

}


void jianpan1(void)
{
 if(P1_7==0)
	{
	 shi++;
	 if(shi==24)
	    shi=0;
      mdelay(200);	
	}

    if(P1_6==0)
	{
       shi--;
	 if(shi==255)
	    shi=23;
  	
      mdelay(200);	
	}
    if(P1_5==0)
	{
	 fen++;
	 if(fen==60)
	    fen=0;
      mdelay(200);	
	}

    if(P1_4==0)
	{
		 fen--;
	 if(fen==255)
	    fen=59;

      mdelay(200);	
	}
}


void xianshi(void)
{
     P0=dispcode[shi/10];
     P1=0xfe;
     mdelay(3);	

     P0=dispcode[shi%10];
	 P0_7=1;
     P1=0xfd;
     mdelay(2);	

     P0=dispcode[fen/10];
     P1=0xfb;
     mdelay(3);	
     
	 P0=dispcode[fen%10];
     P1=0xf7;
     mdelay(2);	
}


void t0(void) interrupt 1 using 0
{ TH0=(65536-9216)/256;
  TL0=(65536-9216)%256; 

   wei++;
    if(wei==100)
	{  miao++;
       wei=0;
	   if(miao==60)
	    { fen++;
	      miao=0;
         if(fen==60)
		    {
			  fen=0;
			  shi++;
			  if (shi==24)
				  {  shi=0;}

			}
 
	}  
	
  }

}


void main()
{
TMOD=0x01;
TH0=(65536-9216)/256;
TL0=(65536-9216)%256;
TR0=1;
ET0=1;
EA=1;
	  

  while(1)
  {  
   
   jianpan1();
   xianshi();


   }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -