zrdzpcb 发表于 2014-10-7 18:07:16

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

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

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

经过我测试,只要是在主函数里面给powerpoint赋值都不能实现,在中断中赋值就可以实现。
定义powerpoint我试过两种方式:
volatile      unsigned      char    powerpoint;和   unsigned      char    powerpoint;
结果都是不能实现的,求各路大神求教,小弟给跪舔
               
         

jxcrg_t35 发表于 2014-10-7 18:39:50

我没用过TICE99IDE,是不是和具体编译器有关

witlong 发表于 2014-10-7 19:39:26

编译时没什么警告吗?

zrdzpcb 发表于 2014-10-8 08:18:28

witlong 发表于 2014-10-7 19:39
编译时没什么警告吗?

编译没错误没提醒,完美通过,不过在实物上不可以。

zrdzpcb 发表于 2014-10-8 08:18:54

jxcrg_t35 发表于 2014-10-7 18:39
我没用过TICE99IDE,是不是和具体编译器有关

这个我也不清楚。。。供应商那边的工程师说没问题的

zrdzpcb 发表于 2014-10-8 08:32:51

实验证明用位判断可以,但是用值不可以

lonely9391 发表于 2014-10-8 21:46:45

"中断中不能调用全局变量"   这到第一次听说,应该是你程序处理的问题

zrdzpcb 发表于 2014-10-9 12:36:24

lonely9391 发表于 2014-10-8 21:46
"中断中不能调用全局变量"   这到第一次听说,应该是你程序处理的问题

试了很久能调用bit定义的,不能调用int和char类型。。。。程序我给很多工程师看过了,都说看不出问题

dsp56789 发表于 2014-10-9 12:43:21

这跟编译有关系吧

gongngei 发表于 2014-10-9 12:52:18

countz1和powerpoint是否同一类型?

gy54321 发表于 2014-10-9 13:17:46

编译器的优化等级太高了吧!

liyang121316 发表于 2014-10-9 22:35:32

是不是被优化掉了,定义成volatile的如何

zrdzpcb 发表于 2014-10-10 08:54:22

liyang121316 发表于 2014-10-9 22:35
是不是被优化掉了,定义成volatile的如何

是已经定义成volatile了。。。最后不知道如何解决,索性把中断间隔加长,在中断里做多个判断了。。,

zrdzpcb 发表于 2014-10-10 08:55:09

gongngei 发表于 2014-10-9 12:52
countz1和powerpoint是否同一类型?

是的,这个刻意试过了

liyang121316 发表于 2014-10-10 09:12:31

powerpoint这个变量你用来干什么了,应该是被优化掉了。你把优化级别调成最低试下。

lingergz 发表于 2014-10-10 14:46:58

之前没遇到这情况,我一般中断里要用到的全局变量都加 Volatile 修饰了

LiuYH 发表于 2014-10-10 14:58:08

没有遇到这种现象啊

cos 发表于 2014-11-24 22:39:42

义隆的C编译器也有这样的要求。可以设标志位跳出后执行

gao_hailong 发表于 2014-11-24 23:30:41

有没有检查下主循环里的赋值代码是否执行了。如果你开启了某些中断,但没有清除标志位可能会一直执行中断而不执行主循环。

jiang887786 发表于 2014-11-25 13:01:20

头文件包含没有吧

硬件小y 发表于 2014-11-25 13:09:45

估计跟你的编译优化等级有关

slzm40 发表于 2014-11-25 13:18:49

可以贴下反汇编的程序么? 这个是没有问题的。看编译器怎么编译了
页: [1]
查看完整版本: 中断中不能调用全局变量,求大神忙帮忙