希望大侠帮忙注释一下这个程序
#include<at89x51.h>
#define uncharunsigned char
#define unintunsigned int
unsigned char codedispcode[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x84,0xff,0xbf};//显示代码
unsigned chardispbitcode[]={0xfe,0xfd,0xfb,0xf7}; //位选口
unsigned chardispbuf[4]={0,0,0,0};
unsigned chardispbitcnt;
unint mstcnt;
unint i;
unint count=0;
unchar tp=0;
void ledshow();
void keyscan();
void delay();
void just();
void turn();
void motorstop();
void speedup();
void speeddown();
void main(void)
{
P3_0=1;
P3_1=0;
dispbuf[0]=16;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
ledshow();//数码管显示
keyscan();//键盘扫描
}
}
//延时10ms程序
void delay()
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
//键盘扫描程序
void keyscan()
{
unchar temp=0;
P1=0xff;
if((P1&0x1f)!=0x1f)
{
delay();
if((P1&0x1f)!=0x1f)
{
temp=P1&0x1f;
switch(temp)
{
case 0x1e:
just();break;
case 0x1d:
turn();break;
case 0x1b:
motorstop();break;
case 0x17:
speedup();break;
case 0x0f:
speeddown();break;
}
}
}
while((P1&0x1f)!=0x1f);
}
//数码管显示程序
void ledshow()
{
/*
P0=dispcode[dispbuf[dispbitcnt]];
P2=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==4)
{
dispbitcnt=0;
}
*/
P2=0x01;P0=dispcode[dispbuf[0]];
for(i=0;i<700;i++);
P2=0x02;P0=dispcode[dispbuf[1]];
for(i=0;i<700;i++);
P2=0x04;P0=dispcode[dispbuf[2]];
for(i=0;i<700;i++);
P2=0x08;P0=dispcode[dispbuf[3]];
for(i=0;i<700;i++);
dispbuf[1]=tp/100;
dispbuf[2]=(tp%100)/10;
dispbuf[3]=tp%10;
}
//中断服务程序
void t0(void)interrupt 1 using 0
{
/*
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P2=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==4)
{
dispbitcnt=0;
}
}
*/
if(count>100)
count=0;
if(count>tp)
P3_7=0;
else P3_7=1;
count++;
}
void just()
{
P3_0=1;
P3_1=0;
dispbuf[0]=16;
}
void turn()
{
P3_0=0;
P3_1=1;
dispbuf[0]=17;
}
void motorstop()
{
tp=0;
}
void speedup()
{
if(tp>99)
tp=100;
else tp++;
}
void speeddown()
{
if(tp<1)
tp=0;
else tp--;
}
