新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 长兴县| 武川县| 徐州市| 肃北| 永靖县| 米易县| 和林格尔县| 罗甸县| 徐汇区| 张北县| 定西市| 浦城县| 荔波县| 灌南县| 利辛县| 五家渠市| 苏尼特左旗| 隆子县| 伊宁县| 乌拉特后旗| 西昌市| 惠东县| 红安县| 济宁市| 定南县| 泰州市| 高陵县| 河南省| 凌源市| 榆林市| 乐都县| 荣成市| 临潭县| 建宁县| 西吉县| 青龙| 淮北市| 江永县| 宁陕县| 隆化县| 武清区|