中断显示时间

来源:互联网 发布:fm2017 mac 编辑:程序博客网 时间:2024/05/18 00:50

//通过中断控制时间,在数码管上显示
#include<reg52.h>
 sbit wei=P2^3;
 sbit duan=P2^2;
 unsigned char code d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //duan
unsigned char code w[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char tt[8];
int num;
void main()
{
  int sz1,sz2,fz1,fz2,mz1,mz2,i,t;
  TMOD=0x01;
  TH0=(65535-50000)/256;
  TL0=(65535-50000)%256;
  EA=1;
  ET0=1;
  TR0=1;

  sz1=1; //定位显示初始值
  sz2=6;
  fz1=5;
  fz2=2;
  mz1=0;
  mz2=0;
  while(1)
  {
   
  for(i=0;i<8;i++)
    {
         //num++:
   t=300;
   while(t--);
  if(num==20)
  {
   num=0;
   mz2++;
   if(mz2>9)
    {mz2=0;mz1++;}
   if(mz1>5)

    {fz2++;mz1=0;}
   if(fz2>9)
    {fz1++; fz2=0;}
   if(fz1>5)
    {sz2++;fz1=0;}
    if(sz2>9)
     {sz1++;sz2=0;}
   if(sz1==2&&sz2>4)
    sz1=0;
  }
  tt[0]=d[sz1];
  tt[1]=d[sz2];
  tt[2]=0x40;
  tt[3]=d[fz1];
  tt[4]=d[fz2];
  tt[5]=0x40;
  tt[6]=d[mz1];
  tt[7]=d[mz2];
     
   P0=w[i];
   wei=1;
   wei=0;

   P0=tt[i];
   duan=1;
   duan=0;
   }

  }
}
void time0() interrupt 1
{
  TH0=(65535-50000)/256;
  TL0=(65535-50000)%256;
  num++; 
}

0 0
原创粉丝点击