新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機跑馬燈強化版

        單片機跑馬燈強化版

        作者: 時間:2016-12-01 來源:網絡 收藏
        程序如下:
        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char//宏定義
        void delay(uint a);//聲明延時函數
        uchar c,d;
        sbit P00=P0^0;
        sbit P30=P3^0;
        sbit P31=P3^1;
        sbit P32=P3^2;//位操作
        bit key_flag=0;//位定義
        void main()
        {
        uint e,h;
        P00=0;
        delay(100);
        P00=1;
        delay(500);
        P00=0;
        TMOD=1;//設定定時器工作方式為1
        TH1=(65536-20000)/256; //定時器高八位裝入初值
        TL1=(65536-20000)%256;//定時器低八位裝入初值
        ET0=1;//啟動定時器中斷
        EA=1;//開啟總中斷
        TR0=1;//開啟定時器
        while(1)
        {
        if(key_flag==1)
        {
        c=0xfe;d=0xfe;
        for(e=8;e>0;e--)
        {if(key_flag==1)
        {for(h=8;h>0;h--)
        {P1=c;
        delay(100);
        c=_crol_(c,1);//左移一位
        }
        P2=d;
        d=_crol_(d,1);//LED跑馬燈主程序
        P30=0;P31=0;//位操作
        delay(100);
        P30=1;P31=1;//位操作
        }
        else P2=0xdb;//P1口電平
        }
        }
        else
        P1=0x7e;//P2口電平
        }
        }
        void delay(uint a)//延時函數
        {
        uint f,g;
        for(;a>0;a--)
        for(f=200;f>0;f--);
        for(g=200;g>0;g--);
        }
        void timer_int0() interrupt 1//聲明中斷函數
        {
        if(P32==0)
        {delay(60);//鍵盤防抖延遲
        if(P32==0)
        key_flag=1^key_flag;//按位異或
        }
        TH1=(65536-20000)/256;//定時器高八位重新裝入初值
        TL1=(65536-20000)%256;//定時器低八位重新裝入初值
        }//此為按鍵檢測,每隔20ms檢測一次


        評論


        技術專區

        關閉
        主站蜘蛛池模板: SHOW| 隆子县| 云林县| 涿州市| 鄂尔多斯市| 甘孜县| 体育| 平阴县| 鹿邑县| 老河口市| 扬中市| 嘉定区| 白城市| 虹口区| 澎湖县| 卓尼县| 青海省| 永州市| 罗山县| 手机| 冕宁县| 新沂市| 察哈| 兰考县| 丰原市| 中山市| 阳曲县| 德昌县| 秦皇岛市| 大关县| 泗阳县| 昌吉市| 方正县| 资源县| 曲松县| 和田县| 河东区| 丰原市| 祁连县| 吴堡县| 德昌县|