谁帮我写以下程序
用单片机写?有8个发光二极管?在启动时,8盏灯?先是中间两个先亮?然后在向外,间隔1s12345678 8 灯先是45亮?再是36亮,再是27亮,最后18亮
按下切换开关时,则和他相反,用定时器中断。
本人有一个自己的?可是没用?谁能帮我解释一下?
#include <reg51.h>
#define uchar unsigned char
uchar num=0;
sbit P2_1=P2^1;
void int1();
void int1()
{uchar i;
TMOD=0x01;
for(i=20;i>0;i--)
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
}
}
void timer_int() interrupt 1
{
TR1=0;
if(num==20)
{num=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
}
void main()
{
uchar d,e,f;
d=0x10;
e=0x08;
for(f=4;f>0;f--)
{
P1=(d|e);
int1();
d=d>>1;
e=e<<1;
}
if(P2_1==1)
{
uchar a,b,c;
a=0x01;
b=0x80;
for(c=4;c>0;c--)
{
P1=(a|b);
int1();
a=a<<1;
b=b>>1;
}
}
}