24秒计数(&&)0到99计数

  • 用C51做一个24秒计数器
    原理图如下:


    24秒计数器.png

代码如下:

#include 
void delay500ms()
{
    int i,j,k;
    for( i=0;i<10/2;i++)
    {
        for(j=0;j<180;j++)
        {
           for(k=0;k<200;k++)
           {
             
           }
        }
    }

}

void main()                                                       
{
    char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
    int i;
    int time=0;
    while(1)
    {
        for(i=1;i<=60;i++)
        {
            if(i==60 | (i%10 == 5 && i/10  == 2))
            {
                i=0;
                continue;
            }
            P2=table[i%10];
            P1=table[i/10];
//延时不准,可以用定时器做
            delay500ms();
            //delay500ms();
            }       
    }
}
  • 运用定时器做 从00计数到99 原理图一样
    代码如下:
#include 
#define uint unsigned int;
uint num = 0,num1 = 0;
void init()
{   
      TMOD=0x01;
      TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
         EA=1;//开总中断
         ET0=1;//开定时器0中断
         TR0=1;//启动定时器0
        while(1);

}

char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 
void main()                                               
{   
    init();
    
}

void T0_time() interrupt 1
{
    TMOD=0x01;
    TH0=(65536-50000)/256;
    num++;//
    if(num==20)//
        {              
                              num1++;   
                            P2=table[num1%10];
                          P1=table[num1/10];
                                         num=0;//
                        if (num1/10 == 9  && num1%10 == 9)
                        {
                                num1 = 0;
                        }
        }
}

你可能感兴趣的:(24秒计数(&&)0到99计数)