这个程序为什么不能实现按一下p13使数码管的个位和百位加一,而千位和十位不变呢?

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar count=0;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
uchar code SegCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code BitCode[]={0xf7,0xfb,0xfd,0xfe};
uchar DispBuf[4]={0,0,0,0};
void dm(uint n)
{
uchar j;
while(n--)
{
for(j=0;j<121;j++);
}
}
void NumToBuf(void)
{
DispBuf[3]=count/10;
DispBuf[2]=count%10;
DispBuf[1]=count/10;
DispBuf[0]=count%10;
}
void BufToSeg(void)
{
uchar i;
for(i=0;i<4;i++)
{
if(i==2)
​P0=SegCode[DispBuf[i]]&0x7f;
​else
​P0=SegCode[DispBuf[i]];
​P2=BitCode[i];
​dm(2);
​P2|=0x0f;
}
}
void keyscan()
{
if(P13==0)
​{
​​dm(10);
​​if(P13==0)
​​{count++;}
}
​if(P14==0)
​{​dm(10);
​​if(P14==0)
​​{count=count+2;}
}
​if(P15==0)
​{​dm(10);
​​if(P15==0)
​​{count=count+3;}
}
}
void main(void)
{

while(1)
{
keyscan();
if(count<=99)
{
;
}
else if(count==100)
{
count=0;
}
NumToBuf();
BufToSeg();
}
}

这个贴出来的排版太难看了,先说说现在运行起来是什么现象吧。