中断中不能调用全局变量,求大神忙帮忙

2020-01-21 21:39发布

我是用十速的IC,用提供的TICE99IDE编译调试的,全部用C语言,其中中断函数里面调用变量的句子为

                if(countz1==powerpoint)
                {
                        TRACE_en=11;
                }
               
结果没有作用,而直接用实数就可以
                if(countz1==40)
                {
                        TRACE_en=11;
                }

经过我测试,只要是在主函数里面给powerpoint赋值都不能实现,在中断中赋值就可以实现。
定义powerpoint我试过两种方式:
volatile        unsigned        char    powerpoint;和   unsigned        char    powerpoint;
结果都是不能实现的,求各路大神求教,小弟给跪舔
               
           
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
zrdzpcb
1楼-- · 2020-01-23 19:42
gongngei 发表于 2014-10-9 12:52
countz1和powerpoint是否同一类型?

是的,这个刻意试过了
liyang121316
2楼-- · 2020-01-24 00:48
powerpoint这个变量你用来干什么了,应该是被优化掉了。你把优化级别调成最低试下。
lingergz
3楼-- · 2020-01-24 01:11
之前没遇到这情况,我一般中断里要用到的全局变量都加 Volatile 修饰了
LiuYH
4楼-- · 2020-01-24 01:31
没有遇到这种现象啊
cos
5楼-- · 2020-01-24 07:25
 精彩回答 2  元偷偷看……
gao_hailong
6楼-- · 2020-01-24 12:51
有没有检查下主循环里的赋值代码是否执行了。如果你开启了某些中断,但没有清除标志位可能会一直执行中断而不执行主循环。

一周热门 更多>