專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

花樣燈c程序(1)

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2010年09月16日   【字體:
/*-----------------------------------------------
功能:花樣燈(實現(xiàn)多種閃爍)

作者:fei yu

日期:2010-6-15

------------------------------------------------*/

#include<reg52.h>
#define uint unsigned int
void delay(uint);
main()
{ 
        uint fre=0x04;
        uint fre1,fre2;
        uint comp1=0xfe,comp2=0x80;
        while(1)
        {
                /*----------------------------------------------------------------------------------

                         模塊一:循環(huán)單向閃爍,只有一個燈亮

                                  執(zhí)行3次,轉(zhuǎn)入下一種閃爍

                ----------------------------------------------------------------------------------*/
                P1=0xfe;
                while(1!=fre--)
                {
                        fre1=0x08;
                        while(1!=fre1--)
                        {
                                delay(30000);
                                P1<<=1;
                                P1|=0x01;
                                if(P1==0x7f)
                                {
                                        delay(30000);        
                                        P1=0xfe;
                                }
                        }       
                }
                /*----------------------------------------------------------------------------------

                           模塊2:循環(huán)單向閃爍,只有兩個燈亮

                                    3次,轉(zhuǎn)入下一種閃爍執(zhí)行 

                ----------------------------------------------------------------------------------*/
                P1=0xfc;
                while(3!=fre++)
                {
                        fre2=0x04;
                        while(1!=fre2--)
                        {
                                delay(30000);
                                P1<<=2;
                                P1|=0x03;
                                if(P1==0x3f)
                                {
                                        delay(30000);
                                        P1=0xfc; 
                                }
                        }     
                }
                /*----------------------------------------------------------------------------------
                                    模塊3:循環(huán)往復(fù)閃爍,只有一個燈亮

                                                 執(zhí)行3次,轉(zhuǎn)入下一種閃爍                
                ----------------------------------------------------------------------------------*/
                P1=0xfe;
                fre1=0x04;
                while(1!=fre1--)
                {
                        while(P1!=0x7f)
                        {
                                delay(30000);
                                P1<<=1;
                                P1|=0x01;               
                        } 
                        while(P1!=0xfe)
                        {
                                delay(30000);
                                P1>>=1;
                                P1|=0x80;               
                        }
                }
                /*----------------------------------------------------------------------------------  
                                          模塊4:全亮全滅

                                    執(zhí)行3次,轉(zhuǎn)入下一模塊                 
                ----------------------------------------------------------------------------------*/
                while(3!=fre1++)
                {
                        delay(30000);
                        P1=0x00;
                        delay(30000);
                        P1=0xff;            
                }
                /*----------------------------------------------------------------------------------
                                   模塊5:順次點亮或者熄滅,

                            多個燈亮,執(zhí)行3次,轉(zhuǎn)入下一模塊                
                ----------------------------------------------------------------------------------*/
                while(1!=fre1--)
                {
                        P1=0xfe;
                        while(P1!=0x00)
                        {
                                delay(30000);
                                P1<<=1;               
                        } 
                        delay(30000);
                        P1=0x80;
                        while(P1!=0xff)
                        {
                                delay(30000);
                                P1>>=1;
                                P1|=0x80;
                        }
                }         
                /*----------------------------------------------------------------------------------        
                                  模塊6:順次點亮或者熄滅,多個燈亮,

                                 一次點亮兩個,執(zhí)行3次,轉(zhuǎn)入下一模塊                          
                ----------------------------------------------------------------------------------*/
                while(3!=fre1++)
                {        
                        P1=0xfc;
                        while(P1!=0x00)
                        {
                                delay(30000);
                                P1<<=2;
                        }
                        delay(30000);
                        P1=0xc0;
                        while(P1!=0xff)
                        {
                                delay(30000);
                                P1>>=2;
                                P1|=0xc0;
                        }
                        delay(30000);
                }       
                /*----------------------------------------------------------------------------------         
                                   模塊7:雙端對稱往返閃爍

                                   執(zhí)行3次,進行下一輪循環(huán)                          
                ----------------------------------------------------------------------------------*/
                P1=0x7e;
                delay(30000);
                while(1!=fre1--)
                {
                        fre2=0x00;
                        while(6!=fre2++)
                        {
                                P1=0xff;
                                comp1<<=1;
                                comp1|=0x01;
                                comp2>>=1;
                                P1&=comp1;
                                P1^=comp2;
                                delay(3000000);
                                if(P1==0xe7)
                                {
                                        comp1<<=1;
                                        comp1|=0x01;
                                        comp2>>=1;
                                }
                                if(comp2==0x01)
                                {
                                        comp1=0xfe;
                                        comp2=0x80;
                                }
                        }
                }
        }       
}
void delay(uint cnt)
{
  while(cnt--);
}
關(guān)閉窗口

相關(guān)文章