• <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 來源:網絡 收藏

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

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

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

    #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 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 普宁市| 中方县| 潼关县| 正定县| 蒙阴县| 高阳县| 扎兰屯市| 高唐县| 安顺市| 望谟县| 石屏县| 广东省| 新绛县| 玉门市| 静海县| 安宁市| 肇东市| 德格县| 游戏| 台前县| 东城区| 浑源县| 麻城市| 张家界市| 甘肃省| 北海市| 桑植县| 靖西县| 平泉县| 宣恩县| 石景山区| 大埔区| 梨树县| 十堰市| 溧水县| 尉氏县| 获嘉县| 攀枝花市| 霍城县| 青河县| 涞源县|