新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 時間可調的定時鬧鐘C51程序

        時間可調的定時鬧鐘C51程序

        作者: 時間:2012-10-31 來源:網絡 收藏

        void jia() //加1子函數
        {
        if(cnt==2) //判斷key1按下的次數是否為2
        {
        miao++; //是,則秒加1
        if(miao>59) //判斷秒是否大于59,是,則秒清零
        miao=0;
        }
        if(cnt==3) //以下含義同上
        {
        fen++;
        if(fen>59)
        fen=0;
        }
        if(cnt==4)
        {
        shi++;
        if(shi>23)
        shi=0;
        }
        if(cnt==5)
        {
        miao2++;
        if(miao2>59)
        miao2=0;
        }
        if(cnt==6)
        {
        fen2++;
        if(fen2>59)
        fen2=0;
        }
        if(cnt==7)
        {
        shi2++;
        if(shi2>23)
        shi2=0;
        }
        }
        void jian() //減1子函數
        {
        if(cnt==2) //判斷key1按下的次數是否為2,是則秒減1
        {
        miao--;
        if(miao==255) //判斷秒是否減到255,是,則秒清零
        miao=59;
        }
        if(cnt==3)
        {
        fen--;
        if(fen==255)
        fen=59;
        }
        if(cnt==4)
        {
        shi--;
        if(shi==255)
        shi=23;
        }
        if(cnt==5)
        {
        miao2--;
        if(miao2==255)
        miao2=59;
        }
        if(cnt==6)
        {
        fen2--;
        if(fen2==255)
        fen2=59;
        }
        if(cnt==7)
        {
        shi2--;
        if(shi2==255)
        shi2=23;
        }
        }
        void clock() //鬧鈴子函數
        {
        if(miao2==miao) //顯判斷秒的數值是否相等
        if(fen2==fen) //是,在判斷分是否相等
        if(shi2==shi) //是,再判斷時是否相等
        {
        flag1=0; //是,則標志位,flag1清零
        while(!(flag1==100)) //判斷flag1是否到100
        {
        fmq=0; //沒有,則,繼續驅動蜂鳴器響,時間約為:5s
        shijian(); //調用時間子函數
        display(); //調用顯示子函數
        }
        fmq=1;//關閉蜂鳴器
        }
        }
        void main()
        {
        init();//調用初始化子函數
        while(1)
        {
        key_scan(); //調用鍵盤掃描子函數
        shijian(); //時間子函數
        clock(); //鬧鐘子函數
        //顯示子函數
        if(cnt==0||cnt==1||cnt==2||cnt==3||cnt==4||cnt==8)
        {
        display();
        }
        if(cnt==5||cnt==6||cnt==7)
        {
        display_1();
        }
        }
        }
        void time0() interrupt 1 //定時器0
        {
        TH0=(65536-50000)/256; //初值50ms
        TL0=(65536-50000)%256;
        flag++; //標志位
        flag1++;
        }


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 望都县| 泸州市| 长治市| 大方县| 新沂市| 盐津县| 德化县| 新疆| 怀化市| 大埔县| 红河县| 天水市| 鄂伦春自治旗| 颍上县| 和龙市| 任丘市| 枣强县| 江川县| 祁阳县| 盐城市| 同心县| 马尔康县| 莱州市| 行唐县| 松滋市| 哈巴河县| 玉溪市| 包头市| 巴楚县| 阜宁县| 宣威市| 巨鹿县| 长葛市| 布拖县| 嘉荫县| 新沂市| 建瓯市| 鱼台县| 阜南县| 沈丘县| 九江县|