新聞中心

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

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

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

        /*-----------------------------------------------
        功能:燈對稱移動閃爍(雙閃爍)

        本文引用地址:http://www.104case.com/article/170895.htm

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

        #includeREG52.H>
        #define uint unsigned int
        void delay(uint);
        main()
        {
        uint comp1=0xfe;
        uint comp2=0x80;
        P1=0x7e;
        delay(30000);
        while(1)
        {
        P1=0xff;
        comp1=1;
        comp1|=0x01;
        comp2>>=1;
        P1=comp1;
        P1^=comp2;
        delay(30000);
        if(P1==0xe7)
        {
        comp1=1;
        comp1|=0x01;
        comp2>>=1;
        }

        if(comp1==0x7f)
        {
        comp1=0xfe;
        comp2=0x80;
        }
        }
        }
        void delay(uint cnt)
        {
        while(cnt--);
        }


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

        只循環一次,而沒有一直循環下去,出錯地方在:

        通過添加一條測試語句:

        if(comp1==0x7f)
        {
        comp1=0xfe; comp2=0x80;
        P1=0x00; delay(30000);

        }

        發現if語句沒有被執行,自然繼續左右移動:

        1111 11111111 1111^0000 0000==11111 1111

        所以看起來是執行了一次while中的代碼。

        具體為什么不行,還不清楚……

        更正下列代碼后,能夠實現功能。

        if(P1==0x7e)
        {
        comp1=0xfe;
        comp2=0x80;
        }

        或者:

        if(comp2==0x01)
        {
        comp1=0xfe;
        comp2=0x80;
        }

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


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 深泽县| 德安县| 玉门市| 义乌市| 福鼎市| 杭州市| 绩溪县| 玉龙| 常德市| 房山区| 临朐县| 宕昌县| 长海县| 临泽县| 承德县| 涞水县| 资溪县| 新密市| 贵州省| 那坡县| 邛崃市| 达孜县| 尼玛县| 改则县| 微山县| 陆河县| 屏南县| 法库县| 合阳县| 紫金县| 吴江市| 游戏| 田东县| 凌源市| 息烽县| 昌黎县| 汶上县| 重庆市| 德化县| 黎川县| 成都市|