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

標題: 第一次求助,51單片機定時器鬧鐘問題 [打印本頁]

作者: qzh960419    時間: 2017-7-20 10:31
標題: 第一次求助,51單片機定時器鬧鐘問題
這是我自己寫的時鐘程序,沒有用芯片只用了51單片機自帶的定時器設(shè)置的時鐘,請問怎么在這個基礎(chǔ)上加一個鬧鐘?求指點,謝謝。
uchar wei[4]={0XEf,0XDf,0XBf,0X7f};
uchar  LightSign= 0;        // 閃爍標志,=1 時滅, =0 時亮
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
uint a,b,c,d,e,f,t,i,m;
uint a1=0,b1=0,c1=0,d1=0,s1num=0,s2num=0,i1,k1;
void delay(uchar n)
{
  uchar i,j;
   for(i=0;i<n;i++)
   {
for(j=13;j>0;j--)
         { ;
         }
   }
}

void int0(void) interrupt 1
{

        TR0=0;        t++;
    m++;
        if(m==22)
    m=0;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        if(t==11)
        LightSign=s2num;
                  if(t==22)
                {t=0;
                f++;
                LightSign=0; }
                if(f==59)
                {
                f=0;
                d++;
                }
   if(d==10)
   {c++;
    d=0;
   }
   if(c==6)
   {b++;
   c=0;
   }
   if(b==10)
   {a++;
   b=0;
   }
   if(a==2&&b==4){a=b=0;}       
    e=1000*a+100*b+10*c+d;
   TR0=1;
        }

/*********************************************************************/
void Led(int date) //顯示函數(shù)
{
uint w,x,y,z;
  w=date/1000;                         //求千位
  x=date%1000/100;                 //求百位
  y=date%100/10;                 //求十位
  z=date%10;                         //求個位
          P2=0XFF;
          if(LightSign==4)
                  P0= 0xFF;
          else
                  P0=seg7code[w];                 //主函數(shù)一直循環(huán)掃描 在t=11時閃爍,t=2
          P2=wei[0];
          delay(80);
          P2=0XFF;
          if(LightSign==3)
                  P0= 0xFF;
          else
       P0=seg7cade[x];
          P2=wei[1];
          delay(80);                                                               
          P2=0XFF;
          if(LightSign==2)
                  P0= 0xFF;
          else
             P0=seg7code[y];
          P2=wei[2];
          delay(80);
          P2=0XFF;
          if(LightSign==1)
                  P0= 0xFF;
         else
      P0=seg7code[z];
          P2=wei[3];
          delay(80);
          P2=0XFF;                  
}
void jishu()
{  i1=1;
   k1=1;


  while(k1)
  {
  Led(0);
  if(s3==0)
  {
  while(s3==0){;}
  k1=0;
  }
  if(s1==0)
  {while(s1==0){;}
  i1=0;k1=0;s1num=0;
  }
  }
  while(i1)
  {
    if(m==21)          //時間的修改
          {
          m=0;
          d1++;       
          }         
    if(d1==10)
          {c1++;
          d1=0;
          }
    if(c1==10)
     {
     b1++;
     c1=0;
     }
   if(b1==10)
   {a1++;
   b1=0;
   }
   if(a1==10){a1=b1=c1=d1=0;}
    if(s2==0)
   {
   while(s2==0){;}                //計數(shù)暫停
  // j1=t;
   k1=1;
    while(k1)
        {
//        t=j1;
//        t=0;
    e=1000*a1+100*b1+10*c1+d1;
     Led(e);
     if(s3==0){while(s3==0){;}k1=0;}
         if(s1==0){while(s1==0){;}i1=0;s1num=0;s2num=0;k1=0;}        //暫停后清零     計數(shù)后操作
    }
   }
   if(s1==0){while(s1==0){;}i1=0;s1num=0;s2num=0;}        ///直接清零
  e=1000*a1+100*b1+10*c1+d1;
  Led(e); }
  }
void keyscan()
  {
  if(s1==0)
  {         
         while (s1==0) {;}
         s1num++;
         if(s1num==3) {s1num=0;}
         if(s1num==2) {jishu();}
         if(s1num==0) {s2num=0;}
         if(s1num!=0) {s2num=1;}
}
   if(s2==0)
   {
   while (s2==0) {;}
   if(s1num==1)
   {
    s2num++;
        if(s2num==5){s2num=1;}       
        }}
   if(s3==0)        //
   {
   while (s3==0) {;}
   if(s1num==1)
   {
    if(s2num==1)d++;
        if(s2num==2)c++;
        if(s2num==3)b++;
        if(s2num==4)a++;
    e=1000*a+100*b+10*c+d;        }        }
         Led(e);
                 }       
void main()
{
   TMOD=0x01;
   TH0=(65536-45872)/256;
   TL0=(65536-45872)%256;
   EA=1;
   ET0=1;
   TR0=1;
   while(1)
   {   
     e=1000*a+100*b+10*c+d;
     keyscan();       
     Led(e);
}
   }         


作者: ahshmj    時間: 2017-7-20 15:40
你可以按需要設(shè)置一個時間,把實時時間和其比較,如相同,則向接蜂鳴器的IO輸出一個低電平。
作者: qzh960419    時間: 2017-7-20 16:07
ahshmj 發(fā)表于 2017-7-20 15:40
你可以按需要設(shè)置一個時間,把實時時間和其比較,如相同,則向接蜂鳴器的IO輸出一個低電平。

我思路也是這樣,但是加了一個s4之后時鐘和鬧鐘還是只能調(diào)一個。你可以幫我看一下我這個程序s4改該怎么加才可以設(shè)置鬧鐘嗎,s4是用來設(shè)置鬧鐘的單獨按鍵。
作者: qzh960419    時間: 2017-7-20 18:27
求大神指點一二
作者: ahshmj    時間: 2017-7-21 08:45
你可以設(shè)置s4的按鍵動作次數(shù)。例如:如果按鍵次數(shù)=1,進入調(diào)時程序,次數(shù)=2,進入定時程序。按鍵次數(shù)=3,.........

作者: qzh960419    時間: 2017-7-22 10:32
ahshmj 發(fā)表于 2017-7-21 08:45
你可以設(shè)置s4的按鍵動作次數(shù)。例如:如果按鍵次數(shù)=1,進入調(diào)時程序,次數(shù)=2,進入定時程序。按鍵次數(shù)=3,.. ...

對 我也是這樣想的 但是程序設(shè)置之按鍵達不到效果 而且設(shè)置鬧鐘后 設(shè)置時鐘 鬧鐘設(shè)定的時間還在。。




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