请高手指教,定时器出了点问题

2020-02-01 16:37发布

下载到单片机时,什么也不显示。不知是什么情况?请高手指教,小妹感激不尽
代码:#include<reg52.h>  //STC89C52
#define uint unsigned int
#define uchar unsigned char
sbit v1=P1^1;
sbit v3=P1^3;
sbit v5=P1^5;
uint i,j,s;
uchar s1,s2;
uchar k1,k2,k3,k4;
uchar code a[]={0x02,0x9e,0x24,0x0c,0x98,
                0x48,0x40,0x1e,0x00,0x08};//0到9
void delay(uint x);        //延时
void xunhuan();                //4位数码管显示
void mian()
{
   TMOD=0x11; //设置定时器0,定时器1
   TH0=(65536-50000)/256; //装初值为12M晶振中断50ms
   TL0=(65536-50000)%256;
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   EA=1;  
   ET0=1;
   ET1=1;
   TR0=1;
   TR1=1;

   while(1) //扫描4位数码管
   {
      xunhuan();
   }
}
void xunhuan() //四位数码管动态显示
{
   P2=0x10;         //个位
   P0=a[k4];
   delay(1);
   P0=0xff;

   P2=0x20;        //十位
   P0=a[k3];
   delay(1);
   P0=0xff;

   P2=0x40;         //百位
   P0=a[k2];
   delay(1);
   P0=0xff;

   P2=0x80;        //千位
   P0=a[k1];
   delay(1);
   P0=0xff;
}
void ding1() interrupt 1   //定时器0的工作方式1
{
   TH0=(65536-50000)/256;  //重装初值
   TL0=(65536-50000)%256;
   s1++;
   if(s1==4)  //中断200ms
   {
      s1=0;
          v1=~v1;        //位取反
          v3=~v3;
          v5=~v5;
   }
}
void ding2() interrupt 3  //定时器1的工作方式3
{
   TH1=(65536-50000)/256; //重装初值
   TL1=(65536-50000)%256;
   s2++;
   if(s2==20)  //中断1s
   {
      s2=0;
          s++;
          if(s==6000) //计数到5999就回到0
          {
             s=0;
          }
          k1=s/1000;  //千位
          k2=s%1000/100;        //百位
          k3=s%1000%100/10;        //十位
          k4=s%1000%100%10;        //个位
   }
}

void delay(uint x) //延时
{
  for(i=x;i>0;i--)
     for(j=120;j>0;j--);
}
有三个警告:*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?MIAN?TEXT2
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  MAIN
    MODULE:  C:KEILC51LIBC51S.LIB (?C_INIT)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  MAIN
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。