Chinaunix首页 | 论坛 | 博客
  • 博客访问: 332396
  • 博文数量: 50
  • 博客积分: 961
  • 博客等级: 准尉
  • 技术积分: 495
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-07 08:30
文章分类

全部博文(50)

文章存档

2015年(2)

2014年(1)

2013年(4)

2012年(18)

2011年(25)

分类: Delphi

2012-02-08 12:00:32

    AVR Studio编译器会对代码进行了优化,包括对全局变量的一些优化。
优化的情况如下:
    若在主函数的死循环中不断地对此全局变量进行判断或者其它,编译器不会每次都从原地址取值(原地址即为全局变量所在的位置),而是从缓存中取值(如Rn寄存器)。即使在其它函数中对此全局变量进行了修改(如中断程序或者其它),也不会影响到主函数对此全局变量的判断(即判断出错)。
 
    解决这种问题的办法就是在定义全局变量时加上volatile关键字(如volatile unsigned char i),以告诉编译器不要对此全局变量进行优化,即每次要用到此全局变量时都从原地址取值。

阅读(3552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~