按键控制特效灯的启停

#include "reg51.h"
sbit SW1=P3^2;
void delay(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
main()
{
int i;
while(1)
{
if(SW1==0)
{
delay(100);
if(SW1==0)
{
P1=0xfe;
for(i=0;i<8;i++)
{
delay(500);
P1=P1<<1;
}
P1=0x7f;
for(i=0;i<8;i++)
{
delay(500);
P1=P1>>1;
}
P1=0x7f;
for(i=0;i<8;i++)
{
delay(500);
P1=P1;
P1=P1>>1;
P1=
P1;
}
}
}
while(!SW1);
}
想问问各位,如何用一个按键控制特效灯。按下SW1三种特效灯开始循环,一直三种特效循环,一直到我再次按下SW1,特效灯停止