• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

    本文引用地址:http://www.czjhyjcfj.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 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 东港市| 十堰市| 汤阴县| 兴海县| 扎鲁特旗| 桂阳县| 漯河市| 垦利县| 泾源县| 阿拉尔市| 丁青县| 日土县| 拉萨市| 安义县| 邵阳市| 房山区| 武威市| 连州市| 高碑店市| 绥中县| 余姚市| 房山区| 清原| 灵寿县| 彰化市| 永和县| 阳城县| 达孜县| 崇州市| 泽州县| 鹰潭市| 平谷区| 乡城县| 鞍山市| 赤壁市| 佛冈县| 宜兴市| 河北省| 通州市| 阳春市| 淮北市|