微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 下面这个在电子时钟里面的语句是什么意思啊,看不懂,请教一下

下面这个在电子时钟里面的语句是什么意思啊,看不懂,请教一下

时间:10-02 整理:3721RD 点击:
if(set==1)
        a=0xff*shan;
        else{a=0;}
        if(set==2)
        b=0xff*shan;
        else{b=0;}
        if(set==3)
        c=0xff*shan;
        else{c=0;}

单独看这几句不太明白。这个“shan”是啥变量?

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^5;
sbit k2=P3^6;
sbit k3=P3^7;
uchar code duan[]=
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};
uchar hc[8];
uchar jishu,jishu1=0,k,set,shan,a,b,c,time;
char shi,fen,miao;
void delay(uint t)
  {  uchar i;
     while(t--)
     for(i=110;i>0;i--);
   }
void key()
{
        if(k1==0)
       { delay(5);
         while(k1==0);
         if(++set==4)
         set=0;
        }
         if(k2==0)
        { delay(5);
          while(k2==0);
          if(set==1)
           {   if(++miao==60)
               miao=0;
            }
          if(set==2)
            {
             if(++fen==60)  
             fen=0;
             }
          if(set==3)
          {  if(++shi==24)
             shi=0;
          }
       }
        if(k3==0)
          { delay(5);
            while(k3==0);
          if(set==1)
          {
           if(--miao<0)
           miao=59;
          }
           if(set==2)
            {
            if(--fen<0)
          fen=59;
            }
         if(set==3)
            {
         if(--shi<0)
         shi=23;
            }
       }
        if(set==1)
        a=0xff*shan;
        else{a=0;}
        if(set==2)
        b=0xff*shan;
        else{b=0;}
        if(set==3)
        c=0xff*shan;
        else{c=0;}
}
void init()
{
        TMOD=0x01;
        TH0=(65535-5000)/256;
        TL0=(65535-5000)%256;
        EA=1;
        ET0=1;
        TR0=1;
}
void tint() interrupt  1
{TH0=(65535-5000)/256;
TL0=(65535-5000)%256;
if(set!=0)
        {if((k1==0)||(k2==0)||(k3==0))
          time=0;
        if(time>=10)
        {set=0;
        time=0;
        }
            }
    jishu++;
if(jishu==40)
{   jishu=0;
    shan=!shan;
     if(++k==4)
        { k=0;
          time++;
          if(++miao==60)
            {  miao=0;
               if(++fen==60)
                {  fen=0;
                 if(++shi==24)
                 shi=0;
                 }
             }
         }
}
hc[0]=c|shi/10;
hc[1]=c|shi%10;
hc[2]=10;
hc[3]=b|fen/10;
hc[4]=b|fen%10;
hc[5]=10;
hc[6]=a|miao/10;
hc[7]=a|miao%10;
  jishu1++;
   if(jishu1==8)
   jishu1=0;
   P2=(P2+1)%8;
   P0=duan[hc[jishu1]];
     }
void main()
{  init();
     P2=0x00;
     while(1)
     {
                      key();
     }
}

就是哪个按键按下,通过判断set等于几?来判断a,b,c的值。

a b c是代表什么意思

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top