关于#c语言#的问题:但是我的效果只有按下第一个流水灯会亮,下面附上我的程序#include <reg51.h>

大神你好,我设计了一个51单片机的程序,四个独立按钮,按下第一个流水灯,按下第二个呼吸灯,按下第三个倒计时,按下第四个闪烁,但是我的效果只有按下第一个流水灯会亮,别的按钮不会亮,有没有大神帮我一下,下面附上我的程序
#include<reg51.h>
#include<htc.h>
zmd()
{int a,b=0x01;
for(a=0;a<8;a++)
{P2=~b;
delay_ms(500);
b=b*2;
}
}
hxd()
{int b=0;
{for(b=0;b<=100;b++)
{
P2=0x00;
delay_ms(b/5);
P2=0xff;
delay_ms(20-b/5);
}
}
{for(b=0;b<=100;b++)
{P2=0xff;
delay_ms(b/5);
P2=0x00;
delay_ms(20-b/5);
}
}}
smg()
{int i,c[10]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,};
while(1)
{for(i=0;i<10;i++)
{P0=c[i];
delay_ms(500);
}}}
ss()
{P2=0XFF;
delay_ms(500);
P2=0X00;
delay_ms(500);
}
main()
{
while(1)
{if(P3_1==0)
{zmd();}
if(P3_1==1)
P2=0xFF;
}
if(P3_0==0)
{hxd();}
if(P3_0==1)
P2=0xFF;
if(P3_2==0)
{smg();}
if(P3_2==1)
P2=0xFF;
if(P3_3==0)
{ss();}
if(P3_3==1)
P2=0xFF;
}