单片机流水灯程序 C语言

2024-12-02 14:16:56
推荐回答(2个)
回答1:

#include

void delay(unsigned int i);

unsigned int i,n,k,j,m,w=0;

sbit P2_7=P2^7;

void main()

{m=0xfe;

 n=0x01;

 k=0x80;

 EA=1;

 EX1=1;

 IT1=1;

 P2_7=1;

while(1)

 { m=0XFE;

   if(w==1)

    {for(i=0;i<8;i++)

          {P0=~m;

           delay(100);

           m<<=1;

           }

       m=0XFE;

       for(i=0;i<8;i++)

   {P0=m;

    delay(100);

     m<<=1;

        }

     }

    if(w==2)

  {

     for(j=0;j<2;j++)

     { n=0X01;

       for(i=0;i<8;i++)

           {P0=n;

    delay(100);

    n<<=1;

    }

      }

  }

   if(w==3)

     {  for(i=0;i<2;i++)

 {P0=0X55;

          delay(100);

          P0=0XAA;

  delay(100);

          }

      }

  if(w==4)

   {n=0X01;

     for(i=0;i<8;i++)

{P0=n;

 delay(200);

 n<<=1;

 }

     k=0x80;

     for(i=0;i<8;i++)

  {P0=k;

   delay(200);

   k>>=1;

   }

    }

 }

}

void dong()interrupt 2

{ w++;

 if(w==5)

 {w=0;}

 } 

 

void delay(unsigned int i) 

  {  unsigned int j,k;

     for(k=0;k

 for(j=0;j<255;j++);

   }

 每按P3.3一次都会出现不同的流水灯,不过必须等他执行完一种花样才会响应按的另一种。

回答2:

是用外部中断?还是内部计时中断?