微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > avr单片机中断函数无法调用全局变量

avr单片机中断函数无法调用全局变量

时间:10-02 整理:3721RD 点击:
   我用的单片机是atmeg16  我在定时器的溢出中断函数中使用了一个主函数的全局变量,结果发现在中断函数里这个全局变量一直是不变(好像一直是0),不是主函数中所赋的值,这是怎么回事?   中断函数应该没用问题,因为我在中断函数里把这个全局变量换成常量是正常的。

      全局变量一旦定义是不能改变的!局部变量可以!且这个定义在所有的单片机里都是通用的。

不能改变的是什么意思? 全局变量值不能被改变吗? 那不就是常量了

对,就是常量。我以为你知道故没过多的解释。

在定义全局变量时如果在中断中想调用,需要在定义时加volatile 例如:volatile unsigned char a=0;

问题解决了,是因为我又定义了一个名称一样的局部变量

局部变量和全局变量的概念是不同的好吧?

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

网站地图

Top