请问以下代码每步意思是什么希望详解

#include<reg51.h>
#include<intrins.h>
unsigned char key_num = 0xff;
unsigned char output=0xfe;
unsigned int k=1,ms=0;

void delay(unsigned int a){
unsigned int b;
while(a--)
for(b=0;b<155;b++);
}

void Time0(){
TMOD=0x01;//设置定时器模式
TL0=0x66;//设置定时器初值
TH0=0xfc;//设置定时器初值
TR0=1;//定时器0开始计时
TF0=0;//清除定时器标志
ET0=1;//定时器0中断开关
EA=1;//中断总开关
}

unsigned char read_key() {
unsigned char key_value=0xff,key_temp;
key_temp=P2 & 0xf0;
if(key_temp!=0xf0){
delay(10);
key_temp=P2&0xf0;
if(key_temp!=0xf0){
switch(key_temp)
{
case 0x70:key_value=4;break; //0111 0000
case 0xb0:key_value=3;break; //1011 0000
case 0xd0:key_value=2;break; //1101 0000
case 0xe0:key_value=1;break; //1110 0000
}
return key_value;
}
else return 0xff;
}

}

void main(){
Time0();
while(1) {
key_num=read_key();
}
}

void timer0() interrupt 1
{
TL0=0x66;//设置定时器初值
TH0=0xfc;//设置定时器初值
ms=ms+1;

if(ms>=1000)
{
    ms=0;

    if(key_num==1)
    {P1=0xfe;}
    else if(key_num==2)
    {P1=0x00;}
    else if(key_num==3)
    {
    P1=output;
    output=output<<1;
    output=output|1;
    if(output==0xff)output=0xfe;
    }
    else if(key_num==4)
    {
     if(k==1)

{
P1=output;
output=output<<1;
output=output|1;
if(output==127)
k=0;
}

else if(k==0)
{
P1=output;
output=output>>1;
output=output|128;
if(output==0xfe)
k=1;
}

    } 
}

}

额,你要如何给你详解。。,

你还是自己先多想想吧,不是谁都这么闲的,分析别人的代码是很累的,特别是这种不怎么样的代码。