在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 七彩燈綜合C程序

            七彩燈綜合C程序

            作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
            /*此程序是一款普通的彩燈,它的功能主要有四種模式:

            第一種模式:開機四種顏色以0.5秒速度循環(huán)1次,然后
            在白顏色上停止循環(huán),即顯示白光第二種模式:按下功
            能鍵后,它以1秒速度四種顏色不停的循環(huán)第三種模式:
            當按鍵按下后,它會記住第二種模式的顏色,比如第二種
            模式現(xiàn)在亮得是綠色,你按下按鍵時,它會先閃一下,然
            后在綠顏色上停下來第四模式:當你再按下開關時,它
            自動回到模式一下,(當然還可以寫出三種顏色)
            本程序是第一個版本,第二版功能更強大參見:
            http://www.51hei.com/mcu/1531.html*/
            #include
            #define uint unsigned int
            #define uchar unsigned char
            sbit RJ=P2^5;//紅燈IO口
            sbit GJ=P2^6;//綠燈IO口
            sbit BJ=P2^7;//蘭燈IO口
            sbit key=P1^4;//按鍵IO口
            uchar ding3,yin,x;//分別為定時器變量,標志位變量,以及顏色標志位變量
            bit a=1,b,c;//分別為模式1.2.3標志位
            /*******************************/
            /***********延時子程序***********/
            /*******************************/
            void delay(uint z)
            {
            uint x,y;
            for(x=100;x>0;x--)
            for(y=z;y>0;y--);
            }
            /*******************************/
            /********按鍵處理子程序********/
            /*******************************/
            void sk()
            {
            switch(yin)//執(zhí)行一鍵多功能程序
            {
            case 0:if(key==0)//如果0與yin比較相等,則執(zhí)行break前的所有內(nèi)容
            {
            delay(100);//延時
            if(key==0)//再次確認是否有按下
            {
            yin++;//將變量加1,此句很重要,作用是以使下次按下時好執(zhí)行下一開關語句
            a=0;//將a變?yōu)?
            c=0;
            b=1;//將b變?yōu)?,即打開按鍵程序中的第二段程序
            x=0;//清掉顏色計數(shù)變量,以便它從紅色開始循環(huán)
            while(!key);//按鍵放開了嗎?
            }
            }
            break;//退出開關語句
            case 1: if(key==0)//如果1與yin比較相等,則執(zhí)行大括號內(nèi)容
            {
            delay(100);//延時
            if(key==0)//再次確認是否有按下
            {
            yin++;//將變量加1,此句很重要,作用是以使下次按下時好執(zhí)行下一開關語句
            b=0;
            c=1;//打開第三種模式標志位,即鎖定狀態(tài)
            a=0;
            x=0;//清掉顏色計數(shù)變量,以便它從紅色開始循環(huán)
            while(!key);//按鍵放開了嗎?
            }
            }
            break;//退出開關語句
            case 2: if(key==0)//如果2與yin比較相等,則執(zhí)行大括號內(nèi)容
            {
            delay(100);//延時
            if(key==0)//再次確認是否有按下
            {
            b=0;//將b變?yōu)?,即關閉上一次功能
            c=0;//關閉上前面的功能
            a=1;//打開第1次功能,即0.5秒循環(huán)閃爍
            yin=0;
            x=0;//清掉顏色計數(shù)變量,以便它從紅色開始循環(huán)
            while(!key);//按鍵放開了嗎?
            }
            }
            break;//退出開關語句
            }
            }
            /*******************************/
            /*******三種模式顯示子程序******/
            /*******************************/
            void xian()
            {
            uchar m;//模式3變量
            if(a!=0)//第一種模式以0.5秒速度循環(huán)閃爍一次,然后在白光處停下來
            {
            if(ding3>=10)//定時器到了0.5秒嗎?
            {
            ding3=0;
            x++;//將標志位加1,以便進入下一種顏色
            switch(x)
            {
            case 1:RJ=1;GJ=0;BJ=0;//亮紅光
            break;
            case 2:RJ=0;GJ=1;BJ=0;//亮綠光
            break;
            case 3:RJ=0;GJ=0;BJ=1;//亮蘭光
            break;
            case 4:RJ=1;GJ=1;BJ=1;a=0;//亮白光,//將標志位a清0,以便再次循環(huán)
            break;
            }

            本文引用地址:http://www.biyoush.com/article/201611/323394.htm

            }
            }
            if(b!=0)//第二種模式以1秒速度一直循環(huán)閃爍。
            {
            if(ding3>=20)
            {
            ding3=0;
            x++;
            switch(x)
            {
            case 1:RJ=1;GJ=0;BJ=0;m=x;//將x變量內(nèi)給m保存起來,以便進入模式三時能準確的鎖定一種狀態(tài)
            break;
            case 2:RJ=0;GJ=1;BJ=0;m=x;
            break;
            case 3:RJ=0;GJ=0;BJ=1;m=x;
            break;
            case 4:RJ=1;GJ=1;BJ=1;m=x;x=0;
            break;
            }
            }
            }
            if(c!=0)//第三種模式記住模式二時按鍵按下的顏色,然后鎖定。
            {
            RJ=0;GJ=0;BJ=0;
            delay(550);
            switch(m)//判斷上一次模式三的狀態(tài),然后確定顯示哪種顏色
            {
            case 1:RJ=1;GJ=0;BJ=0;
            break;
            case 2:RJ=0;GJ=1;BJ=0;
            break;
            case 3:RJ=0;GJ=0;BJ=1;
            break;
            case 4:RJ=1;GJ=1;BJ=1;
            break;
            }
            c=0;//將標志位清0,以便再次循環(huán)
            }
            }
            /*******************************/
            /*************主程序************/
            /*******************************/
            void main()
            {
            RJ=0;//將R LED關閉
            GJ=0;//將G LED關閉
            BJ=0;//將B LED關閉
            TMOD=0X01;//寄存器工作方式
            EA=1;//開總中斷
            TR0=1;//開定時器
            ET0=1;//開定時器中斷
            TH0=(65536-50000)/256;//賦值給高位
            TL0=(65536-50000)%256;//賦值給低位
            while(1)
            {
            sk();//調(diào)用按鍵子程序
            xian();//調(diào)用顯示子程序
            }
            }
            void zhong() interrupt 1//T1中斷服務程序
            {
            TH0=(65536-50000)/256;//賦值給高位
            TL0=(65536-50000)%256;//賦值給低位
            ding3++;//將按鍵計數(shù)器加1
            }



            評論


            技術專區(qū)

            關閉