想问一下,这个图怎么写程序才能实现左边两位0到99秒计时啊?或者是左边两99秒到0右边两位显示当天日期

我是一个刚接触这方面的学生,所以有些东西是真的搞不懂,求各位帮我一把

img

参考代码:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit p30=P3^0;
sbit p31=P3^1;
uchar tt=0,count=160,num=99; 
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void init()   //初始化定时器 和数码管
{
    TH0=0X3C;     //给定时器赋处置
    TL0=0XB0;
    EA=1;           //开总中断
    ET0=1;            //开定时器中断
    TMOD=0X01;        //选择定时器方式1
    TR0=1;            //开定时器
    P2=0;
    p30=1;
    p31=1;
}
 
void delay(uint ms)   //延时函数
{
    uint x,y;
    for(x=ms;x>0;x--)
        for(y=110;y>0;y--);
}
 
void display(uchar num)  //显示函数
{ 
    uchar ge,shi;
    ge=num%10;
    shi=num/10;
    p31=1;
    p30=0;
    P2=table[shi];
    delay(5);
    p31=0;
    p30=1;
    P2=table[ge];
    delay(5);
 
 
}
  
main()    //主函数
{
init();
while(1)
{
  if(tt==20)
  {
      tt=0;
    num--;
    if(num==-1)
        num=99;
  }
  display(num);
 
}
}
void timer0() interrupt 1   //中断服务程序
{
TH0=0X3C;
TL0=0XB0;
tt++;
}
 
#晶振频率12MHZ  数码管是共阴极数码管

先搞定数码管的刷新,然后就是更新刷新内容的问题了