欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

        標題: 實時間鐘帶一路報警輸出 [打印本頁]

        作者: newchp    時間: 2009-12-13 22:47
        標題: 實時間鐘帶一路報警輸出
        //有一路報警輸出,可設置報警時間
        //實間時間請調整TH1,TL1值使更準確
        //designed by ljc,gdwm ceramic com,.ltd
        #include<at89x51.h>
        #define uchar unsigned char
        #define uint unsigned int
        #define segment P0  //數碼管顯示
        #define wei P2   //數碼管位控制
        uchar hour,min,sec;  //定義小時,分
        uchar ms;               //當前毫秒
        uchar alarm_h1,alarm_m1;//報警設置,hour,minute;
        uchar alarm_h2,alarm_m2;
        sbit flash=P1^0;        //秒閃爍標志
        sbit seth=P3^0;      //小時設置
        sbit setm=P3^1;   //分設置
        sbit seta1h=P3^2;  //alarm1 set
        sbit seta1m=P3^3;  //alarm1 set
        sbit alarm_out=P1^7;    //設定時間到,報警輸出
        bit hour_min_sign;      //時,分設置標志
        bit pop_key;            //鍵彈起標志
        uchar code design[10]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60};//0,1,2,3,4,5,6,7,8,9
        //*************************************************
        //**********
        void delay(uint i)
        {   uint j;
            for(;i>0;i--)
         for(j=0;j<120;j++)
         {;}
        }
        //*************************************************
        //**********
        void initial()
        {   TMOD=0x01;
            TH0=0X3C; //50ms定時
         TL0=0xc0;
            EA=1;
            ET0=1;
         TR0=1;
         //報警時間初使化
         alarm_h1=7;
         alarm_m1=0;
         alarm_h2=14;
         alarm_m2=0;
        }
        //*************************************************
        //**********
        void time0_int() interrupt 1
        {   TH0=0x3c;
            TL0=0xc0;
            if(ms<20)
            {   ms++;}
         else
         {   ms=0;
             sec++;
             if(sec>59)
             {   sec=0;
              min++;
           if(min>59)
           {   min=0;
                  hour++;
                  if(hour>=24)
               {   hour=0;}
           }
          }
         }
         if(ms>10){flash=1;}
         else{flash=0;}
        }
        //************************************************
        //*********
        void display(uchar h,m,ah1,am1)
        {   uchar hh,hl,mh,ml,hh1,hh2,mm1,mm2;
            hh=h/10;
         hl=h%10;
         mh=m/10;
         ml=m%10;
         hh1=ah1/10;hh2=ah1%10;mm1=am1/10;mm2=am1%10; //報警時間顯示
         //
         segment=design[hh];
         wei=0xef;
         delay(2);
         //
         segment=design[hl];
         wei=0xdf;
         delay(2);
         //
         segment=design[mh];
         wei=0xbf;
         delay(2);
         //
         segment=design[ml];
         wei=0x7f;
         delay(2);
         //報警顯示
         segment=design[hh1];
         wei=0xfe;
         delay(5);
         segment=design[hh2];
         wei=0xfd;
         delay(2);
         segment=design[mm1];
         wei=0xfb;
         delay(2);
         segment=design[mm2];
         wei=0xf7;
         delay(2);
        }
        //************************************************
        //鍵防拌處理**********
        void scan_key(bit set_h_m)
        {   if(!set_h_m)
            {   delay(30);
             if(!set_h_m)
          {   delay(10);
              hour_min_sign=1;
          }
          else{hour_min_sign=0;}
         }
         while(set_h_m&hour_min_sign)//等街鍵彈起
         {   delay(30);
             if(set_h_m&hour_min_sign)
          {   delay(10);
                 pop_key=1; 
          }   //鍵彈起標志
          hour_min_sign=0;
         }                          
        }
        //時間設置****************************************
        //**********
        void time_set()
        {   pop_key=0;
            scan_key(seth);
            if(pop_key)      //小時鍵按下,小時加1
         {
             if(hour>23)
          {   hour=0;}
          else{hour++;}
          display(hour,min,alarm_h1,alarm_m1);
         }
         pop_key=0;
         //
         scan_key(setm);    //分鍵按下,分加1
         if(pop_key)      
         {
             if(min>59)
          {   min=0;}
          else{min++;}
          display(hour,min,alarm_h1,alarm_m1);
         }
         pop_key=0;
        }
        //***********************************************
        //報警時間設置:小時,分鐘*
        //有報警時間設置功能,延時關閉功能
        void alarm()                 

         //報警1
         pop_key=0;
         scan_key(seta1h);              //報警1設置
         if(pop_key)
         {   alarm_h1++;
             if(alarm_h1>23)
          {   alarm_h1=0;}
         }
         pop_key=0;
         display(hour,min,alarm_h1,alarm_m1);
         scan_key(seta1m);
         if(pop_key)
         {   alarm_m1++;
             if(alarm_m1>59)
          {   alarm_m1=0;}
         }
         display(hour,min,alarm_h1,alarm_m1);  
         if((hour==alarm_h1)&(min==alarm_m1))//相等
            {   alarm_out=0;}     //報警輸出

        //***********************************************
        //*************************  
        void main()
        {   initial();
            for(;;)
         {   time_set();   //時間設置
          display(hour,min,alarm_h1,alarm_m1);
          alarm();
         }
        }

        作者: jackhwang    時間: 2009-12-21 14:43
        大哥是不是在主函數里面少了個while(1)語句!
        作者: jackhwang    時間: 2009-12-21 14:51
        對不起,是我搞錯了。哈哈!
        作者: xi_chang    時間: 2014-5-4 11:02
        謝謝分享
        作者: yangbiliang    時間: 2014-5-25 19:29
        怎么就一函數。。。。。實物圖呢?




        歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1