打印

小弟不才 求帮助!

[复制链接]
1186|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子好学者|  楼主 | 2012-7-22 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void timer_0() interrupt 1
{
static uchar i,second=60;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
  i++;
  if(i==20)//一秒计时
    {
      i=0;
      second--;
      if(second==0)
        {
          if(red)
           {  
             red=0;
             yello=1;
             P1=0xf3;
             second=5;
              }
          else
             if(yello)
               {
                yello=0;
                green=1;
                second=50;
                P1=0xcf;//绿·灯亮
               }
             else
                 if(green)
                   {   
                    green=0;
                    red=1;
                    second=60;//红灯亮50秒
                    P1=0xfc;
                    }
              }
         shi=tab[second/10];//十位显示值处理
            ge=tab[second%10]; //个位显示处理
         }
}  
为什么那个static 我没用的时候 数码管只显示59而不会递减下去,而用了static声明后程序就可以了呢?

相关帖子

沙发
figo20042005| | 2012-7-22 16:07 | 只看该作者
static在中断结束后不会释放空间,仍保持结束时的值,若无static,再次进入中断,i被重新分配空间,赋值就为0.;LZ也可把i设置为全局变量

使用特权

评论回复
板凳
电子好学者|  楼主 | 2012-7-23 17:16 | 只看该作者
我以为是sceond的原因 谢谢  学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

119

帖子

1

粉丝