新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機的各種花樣的流水燈c51程序

        基于51單片機的各種花樣的流水燈c51程序

        作者: 時間:2012-09-11 來源:網絡 收藏

        **************************************

        /*-----------------------------------------------
        功能:燈(單向單閃爍+單向雙閃爍)

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

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

        模塊1:循環單向閃爍,只有一個燈亮滅
        執行3次,轉入下一種閃爍

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

        }
        }
        /*-------------------------------------------------------------------

        模塊2:循環單向閃爍,只有兩個燈亮或者滅
        執行3次,轉入下一種閃爍

        --------------------------------------------------------------------*/
        P1=0xfc;
        while(3!=fre++)
        {
        delay(30000);
        P1=2;
        P1|=0x03;
        if(P1==0x3f)
        {
        delay(30000);
        P1=0xfc;
        }
        }
        }
        }
        void delay(uint cnt)
        {
        while(cnt--);
        }

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

        兩個模塊均沒有問題,但是放在一起,并沒有得到想要的結果,

        第一個循環沒有進行完全,且兩個循環的循環的次數與要求的不符。

        錯誤地方在于:模塊1和模塊2的循環控制的只是一次亮滅,更正為:

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

        模塊1:循環單向閃爍,只有一個燈亮滅
        執行3次,轉入下一種閃爍

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

        模塊2:循環單向閃爍,只有兩個燈亮或者滅
        執行3次,轉入下一種閃爍

        --------------------------------------------------------------------*/
        P1=0xfc;
        while(3!=fre++)
        {
        fre2=0x04;
        while(1!=fre2--)
        {
        delay(3000000);
        P1=2;
        P1|=0x03;
        if(P1==0x3f)
        {
        delay(3000000);
        P1=0xfc;
        }
        }
        }
        }
        }
        void delay(uint cnt)
        {
        while(cnt--);
        }

        注意控制語句中fre++和fre--;并且fre1和fre2的初始化不能出錯,

        由于if()語句的出現,fre1和fre2的取值要比預想的減一。

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


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 威宁| 元江| 淮安市| 英德市| 陕西省| 确山县| 金沙县| 高青县| 两当县| 郑州市| 兰考县| 黎川县| 苍溪县| 巫溪县| 灵台县| 洛浦县| 乌恰县| 堆龙德庆县| 翁源县| 福州市| 乡宁县| 高台县| 祁阳县| 柳河县| 台中县| 始兴县| 宣武区| 靖边县| 卢湾区| 绥江县| 汾阳市| 嘉鱼县| 巴楚县| 怀宁县| 贡嘎县| 凉山| 唐山市| 普兰店市| 乐业县| 县级市| 尉犁县|