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

📄 tclock.c

📁 LCD显示和单片机中断定时,单片机不断中断
💻 C
字号:
#include "reg51.h" 

unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66, 
                            0x6d,0x7d,0x07,0x7f,0x6f}; 
unsigned char dispbitcode[]={0x01,0x02,0x04,0x08, 
                             0x10,0x20,};
unsigned char dispbuf[6]={0,0,0,0,0,0}; 

unsigned char dispbitcnt; 
unsigned char second; 
unsigned char minite; 
unsigned char hour; 
unsigned int tcnt; 
unsigned char mstcnt; 
unsigned char i,j;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;

void delay10ms(void)
 {
  unsigned char i,j,k;
 for(i=5;i>0;i--)
 for(j=4;j>0;j--)
 for(k=248;k>0;k--);
 } 

void main(void) 
{ 
  TMOD=0x02; 
  TH0=0x06; 
  TL0=0x06; 

  TR0=1; 
  ET0=1; 
  EA=1; 
  while(1) 
    { 
      if(P0_0==0)
        { 
          delay10ms(); 
          if(P0_0==0) 
            { 
              second++;
              if(second==60) 
                { 
                 second=0; 
                } 
              dispbuf[0]=second%10; 
              dispbuf[1]=second/10; 
              while(P0_0==0); 

            } 

        } 

      if(P0_1==0) 
        { 
         delay10ms();
          if(P0_1==0) 
            { 
              minite++; 
              if(minite==60) 
                { 
                  minite=0; 
                } 
              dispbuf[2]=minite%10; 
              dispbuf[3]=minite/10; 
              while(P0_1==0); 
            } 
        } 

      if(P0_2==0) 
        { 
          delay10ms();
          if(P0_2==0) 
            { 
              hour++; 
              if(hour==24) 
                { 
                  hour=0; 
                } 
              dispbuf[4]=hour%10; 
              dispbuf[5]=hour/10; 
              while(P0_2==0);
            } 
        } 
    } 
} 

void t0(void) interrupt 1 using 0 
{ 
  mstcnt++; 
  if(mstcnt==8) 
    { 
      mstcnt=0; 
      P1=tab[dispbuf[dispbitcnt]]; 
      P2=dispbitcode[dispbitcnt]; 
      dispbitcnt++; 
      if(dispbitcnt==6) 
        { 
          dispbitcnt=0; 
        } 
    } 

  tcnt++; 
  if(tcnt==4000) 
    { 
      tcnt=0; 
      second++; 
      if(second==60) 
        { 
          second=0; 
          minite++; 
          if(minite==60) 
            { 
              minite=0; 
              hour++; 
              if(hour==24) 
                { 
                 hour=0; 
                } 
            } 
        } 
      dispbuf[0]=second%10; 
      dispbuf[1]=second/10; 
      dispbuf[2]=minite%10; 
      dispbuf[3]=minite/10; 
      dispbuf[4]=hour%10; 
      dispbuf[5]=hour/10; 
    }
}

⌨️ 快捷键说明

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