打印

不计数的问题

[复制链接]
1287|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2010-11-9 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个程序,在主循环加入一部分代码,‘中断里的计数器就不计数了。
主循环加的代码如下:
k=cell_u_alram+cell_d_alram+pile_d_alram+pile_u_alram;
       if((cnt!=cnt1)&&(k==0))
       { //j=cnt%4;
         l=cnt>>4;
         disp_yw(0xb3,0x12,0x08,0x10+l);        //u
         l=cnt&0x0f;
         disp_yw(0xb3,0x13,0x00,0x10+l);        //u
          if(cnt==4) cnt=0;
        switch(cnt)
        {case 0:
         {disp_temp();break;        //显示温度
         }
         case 1:
         {disp_ui(3);              //显示电压电流
          break;
         }
         case 2:
         {disp_temp();break;        //显示温度
         }
         case 3:
         {disp_ui(4);              //显示电压电流
          break;
         }
         default:
          break;
        }
        cnt1=cnt;
       }
中断函数如下:
void timer0_int()   interrupt 1
{
   TR0=0;                      //定时器0停止计数
   TF0=0;
   TH0=0X3B;                   //重装初值
   TL0=0XC0;
   wdi=~wdi;                   //喂狗
   count1++;                     //计数器自加
   count2++;
   count3++;
   if(count1==100)
    count1=0;                 //计数器1复位
    //cnt++;
   if(count1==0)
    ranking++;
   
   if(count2==25)
   {count2=0;                  //计数器2复位
    sound++;
   }
   if(count3==107)
    count3=0;
   if(count3==0)
    cnt++;
   
   if(sound==2) sound=0;        //计数器3复位
   //if(cnt==4) cnt=0;            //计数器4复位
   if(ranking==50) ranking=0;   //计数器5复位
   TR0=1;                       //定时器开始计数
}
cnt和ranking计到1就停止了。
这是怎么回事呀?请高手帮忙,谢谢!

相关帖子

沙发
chen3bing|  楼主 | 2010-11-9 13:04 | 只看该作者
查到问题了,主程序中一个报警标志置位了。
现在又有一个新的问题,
主程序加上这句pile_down2=(float)(pile_down3)/10;       //数据处理
就不计数了。真郁闷!

使用特权

评论回复
板凳
chen3bing|  楼主 | 2010-11-9 17:47 | 只看该作者
中断是进的,有的变量计数,有的不计。
怎么回事呢?
哪儿出了问题呢?

使用特权

评论回复
地板
chen3bing|  楼主 | 2010-11-9 17:54 | 只看该作者
我重新定义了一个变量替换pile_down2,竟然好了。
可是我想不出来为什么,那个变量出什么问题了?

使用特权

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

本版积分规则

439

主题

2540

帖子

2

粉丝