微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 为什么中断中的参数可以不用全局变量设置,仍可以进行累加

为什么中断中的参数可以不用全局变量设置,仍可以进行累加

时间:10-02 整理:3721RD 点击:
如下中断程序中num只是在中断程序中定义,而不是全局变量,怎么还能进行num++;累加到20呢?一般子程序的num如果只是局部变量都只能在子程序中有效,跳出子程序,num就得重新累加吗?
void T0_time() interrupt 1
{
   uchar num;
  TH0=(65536-45872)/256;
   TL0=(65536-45872)%256;
   num++;
  if(num==20)         
   {
      num=0;
   sec++;
   if(sec==60)      
    {
      sec=0;
   min++;
   if(min==60)   
       min=0;
      }
   
}
}

本函数有效   出了这个函数 就不好用了

关键这个是中断程序呀,50毫秒才进入一次呀,还是能累加呀,不应该呀

怎么不应该  又不是静态变量 不会清空的

uchar num 前 应改为 static uchar num = 0,否则 num 只能加到 1

我试了,num可以加到20

我试了,num可以加到20

那么其他的子程序为什么不定义全局变量,num会清空呢

不会啊  你可以试试

谢谢,我用keil软件调试了一下可以的,回家的时候再用板子试一下,不过我记得上次一次程序就是参数没有定义全局变量,才造成无法累加;我再找找我以前的程序看看。谢谢耐心解答

谢谢,我用keil软件调试了一下可以的,回家的时候再用板子试一下,不过我记得上次一次程序就是参数没有定义全局变量,才造成无法累加;我再找找我以前的程序看看。谢谢耐心解答

谢谢,我用keil软件调试了一下可以的,回家的时候再用板子试一下,不过我记得上次一次程序就是参数没有定义全局变量,才造成无法累加;我再找找我以前的程序看看。谢谢耐心解答

谢谢,我用keil软件调试了一下可以的,回家的时候再用板子试一下,不过我记得上次一次程序就是参数没有定义全局变量,才造成无法累加;我再找找我以前的程序看看。谢谢耐心解答

谢谢,我用keil软件调试了一下可以的,回家的时候再用板子试一下,不过我记得上次一次程序就是参数没有定义全局变量,才造成无法累加;我再找找我以前的程序看看。谢谢耐心解答

谢谢,我用keil软件调试了一下可以的,回家的时候再用板子试一下,不过我记得上次一次程序就是参数没有定义全局变量,才造成无法累加;我再找找我以前的程序看看。谢谢耐心解答

恩 可以的 只有静态变量 每次进入才会清零的static

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

网站地图

Top