新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機單按鍵控制LED發光的程序

        單片機單按鍵控制LED發光的程序

        作者: 時間:2012-12-01 來源:網絡 收藏
        51的程序,就是用一個與P3_0引腳連接的按鍵控制P2_0相連LED的亮和滅兩種狀態。按一次按鍵燈亮,再按一次按鍵燈滅。再按一次又亮,再按一次燈又滅,本程序出自網:http://www.51hei.com,經過測試已經可以成功運行。
        #include "AT89X51.H"
        void main(void) // 主程序
        {
        bit mark; //定義位變量
        unsigned int n; //定義循環變量
        while(1) //無限循環
        {
        if (P3_0==0) //如果按鍵按下
        {
        for(n=0;n1000;n++); //延時一段時間,等待按鍵完全按下
        mark=~mark; //翻轉標記
        while(!P3_0) //等待按鍵彈起
        for(n=0;n1000;n++); //等待按鍵完全彈起
        }
        P2_0=mark; //點亮或是關滅LED燈
        }}
        while(1) //無限循環
        {
        if(ldelay==1 ) //若是時間溢出標記為1,處理如下語句
        {
        ldelay=0; //清除時間溢出標記
        P2=ledp[ledi]; //讀出一個表格值送到P2口
        ledi++; //指向下一個表格值
        if(ledi==4)
        {
        ledi=0; //到了最后一個燈就換到第一個
        sp--; //速度級別減1
        if (sp==3) //如果速度級別減到3
        sp=23; // 恢復速度最慢的級別23
        }}}}
        timer0() interrupt 1 //定時器0中斷服務程序
        {
        static unsigned int kk; //定義靜態局部變量
        kk++; //每次中斷服務,kk加1
        if(kk==(100*sp)) //最少次數為100*sp=300,時間為300次*0.25ms
        //最多次數為2300次,時間為2300次*0.25ms
        //如果kk=(100*sp),執行如下語句
        {
        kk=0;
        ldelay=1; //當kk值與100*sp值相等,將ldelay標記置1,則處理燈亮與顯示速度
        } }


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安达市| 根河市| 特克斯县| 蒙城县| 台湾省| 凤凰县| 邢台市| 长乐市| 清新县| 治多县| 新闻| 乳源| 邯郸市| 大厂| 桃园市| 横山县| 高台县| 六枝特区| 五大连池市| 沈丘县| 雷州市| 阳新县| 喀喇沁旗| 宁蒗| 茂名市| 额尔古纳市| 玛曲县| 廉江市| 景宁| 郴州市| 河东区| 南丹县| 海淀区| 宁德市| 彝良县| 靖宇县| 修水县| 桂阳县| 岑溪市| 邵阳市| 榕江县|