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

2019-07-15 12:39发布

   我用的单片机是atmeg16  我在定时器的溢出中断函数中使用了一个主函数的全局变量,结果发现在中断函数里这个全局变量一直是不变(好像一直是0),不是主函数中所赋的值,这是怎么回事?   中断函数应该没用问题,因为我在中断函数里把这个全局变量换成常量是正常的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
houjue
1楼-- · 2019-07-15 15:53
 精彩回答 2  元偷偷看……
辉仔
2楼-- · 2019-07-15 18:01
houjue 发表于 2016-11-7 20:03
全局变量一旦定义是不能改变的!局部变量可以!且这个定义在所有的单片机里都是通用的。

不能改变的是什么意思? 全局变量值不能被改变吗? 那不就是常量了
houjue
3楼-- · 2019-07-15 21:36
辉仔 发表于 2016-11-7 20:07
不能改变的是什么意思? 全局变量值不能被改变吗? 那不就是常量了

对,就是常量。我以为你知道故没过多的解释。
wolf11111
4楼-- · 2019-07-15 22:37
在定义全局变量时如果在中断中想调用,需要在定义时加volatile 例如:volatile unsigned char a=0;
辉仔
5楼-- · 2019-07-16 00:45
问题解决了,是因为我又定义了一个名称一样的局部变量
houjue
6楼-- · 2019-07-16 01:25
 精彩回答 2  元偷偷看……

一周热门 更多>