新聞中心

        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,則處理燈亮與顯示速度
        } }


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 田林县| 绥棱县| 新闻| 周口市| 京山县| 阿鲁科尔沁旗| 兰西县| 黑水县| 普兰县| 陇西县| 唐山市| 广安市| 大方县| 沿河| 库尔勒市| 阿克| 彭州市| 扶绥县| 汝阳县| 新沂市| 台湾省| 拉孜县| 平顶山市| 海门市| 于田县| 新密市| 梨树县| 连山| 永修县| 普格县| 盖州市| 樟树市| 会泽县| 宜兰市| 大丰市| 大庆市| 渝中区| 雅安市| 灵台县| 临洮县| 大关县|