求家人们帮忙分析每句程序的意思😭😭😭

#include <reg52.h>
#include <intrins.h>
sbit key1 = P1^0;
sbit key2 = P1^1;
char num = 0;
unsigned int time = 1000;
unsigned int times;
unsigned char flag = 1;
void Delay_ms(unsigned int t)
{
unsigned char i, j;
while(t--)
{
nop();
i = 2;
j = 199;
do
{
while (--j);
}
while (--i);
}
}
void Key(void)
{
if(key1 == 0)
{
Delay_ms(10);
if(key1 == 0)
{
time = time - 100;
if(time < 100)
{
time = 1000;
}
}
}
if(key2 == 0)
{
Delay_ms(10);
if(key2 == 0)
{
if(flag == 1)
flag = 2;
else
flag = 1;
while(!key2);
}
}
}
void Timer1_Init(void)
{
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x10; //设置定时器模式
TL1 = 0x66; //设置定时初值
TH1 = 0xfc; //设置定时初值10ms
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //打开定时器1中断
EA = 1;
}
void main(void)
{
Timer1_Init();
P2 = 0xff;
times = time;
while(1)
{
Key();
}
}
void tm1_isr() interrupt 3 using 1
{
TL1 = 0x66; //设置定时初值
TH1 = 0xfc; //设置定时初值
times--;
if(times <= 0)
{
times = time;
P2 = ~(1 << num);
if(flag == 1)
{
num++;
if(num >= 8)
{
num = 0;
}
}
else
{
num--;
if(num < 0)
{
num = 7;
}
}
}
}

#include <reg52.h>
#include <intrins.h>
sbit key1 = P1^0;
sbit key2 = P1^1;
char num = 0;
unsigned int time = 1000;
unsigned int times;
unsigned char flag = 1;
void Delay_ms(unsigned int t)////延时函数
{
unsigned char i, j;
while(t--)
{
nop();
i = 2;
j = 199;
do
{
while (--j);
}
while (--i);
}
}
void Key(void)////识别按键函数
{
if(key1 == 0)///KEY1键按下
{
Delay_ms(10);///按键防抖动延时
if(key1 == 0)///KEY1每次按下,当time都减小100,当time值小于100时给它恢复为1000;
{
time = time - 100;
if(time < 100)
{
time = 1000;
}
}
}
if(key2 == 0)///KEY2键按下
{
Delay_ms(10);///按键防抖动延时
if(key2 == 0)///KEY2每次按下修改flag标志
{
if(flag == 1)
flag = 2;
else
flag = 1;
while(!key2);////等待KEY2按键释放
}
}
}
void Timer1_Init(void)////定时1定时10ms初始化设置,并开启中断
{
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x10; //设置定时器模式
TL1 = 0x66; //设置定时初值
TH1 = 0xfc; //设置定时初值10ms
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //打开定时器1中断
EA = 1;
}
void main(void)
{
Timer1_Init();
P2 = 0xff;///P2口输出全部为1
times = time;
while(1)
{
Key();////扫描按键函数
}
}
void tm1_isr() interrupt 3 using 1////定时器1的10ms中断函数
{
TL1 = 0x66; //设置定时初值
TH1 = 0xfc; //设置定时初值
times--;
if(times <= 0)////定时时间到
{
times = time;///重新给定时时间赋值
P2 = ~(1 << num);///P2口输出循环变化(周期为8)
if(flag == 1)///按照flag值修改num的技术方式
{
num++;
if(num >= 8)
{
num = 0;
}
}
else
{
num--;
if(num < 0)
{
num = 7;
}
}
}
}
/////////////我猜测以上程序是控制8个LED轮流显示的方向和速度的是吧

你这代码都不全