C51单片机流水灯和显示器同时工作

#include<reg52.h>
#define duan P0
#define uint unsigned int
#define on 0
#define off 1
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
sbit fm=P2^3;
sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=122;j>0;j--);}
void main()
{
while(1)
{	
led1=on;
led2=on;
delay(5000);
led1=off;
led2=off;

fm=on;
delay(200);
fm=off;

led3=on;
led4=on;
delay(5000);
led3=off;
led4=off;

fm=on;
delay(200);
fm=off;

led5=on;
led6=on;
delay(2000);
led5=off;
led6=off;

fm=on;
delay(200);
fm=off;

	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x6d;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x66;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x4f;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x5b;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x06;
	delay(1000);
	
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x6d;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x66;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x4f;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x5b;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x06;
	delay(1000);
	
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x5b;
	delay(1000);
	wei1=0;
	wei2=0;
	wei3=0;
	wei4=1;
	duan=0x06;
	delay(1000);

}
}

我想让做一个红绿灯,让它们同时工作,但是我写的是分开的,希望有人帮我一下

把显示放入定时器中断里执行,main里执行流水灯,这样就互不干涉了