avr单片机中断函数无法调用全局变量
时间:10-02
整理:3721RD
点击:
我用的单片机是atmeg16 我在定时器的溢出中断函数中使用了一个主函数的全局变量,结果发现在中断函数里这个全局变量一直是不变(好像一直是0),不是主函数中所赋的值,这是怎么回事? 中断函数应该没用问题,因为我在中断函数里把这个全局变量换成常量是正常的。
全局变量一旦定义是不能改变的!局部变量可以!且这个定义在所有的单片机里都是通用的。
不能改变的是什么意思? 全局变量值不能被改变吗? 那不就是常量了
对,就是常量。我以为你知道故没过多的解释。
在定义全局变量时如果在中断中想调用,需要在定义时加volatile 例如:volatile unsigned char a=0;
问题解决了,是因为我又定义了一个名称一样的局部变量
局部变量和全局变量的概念是不同的好吧?