1.EEPROM 在默认情况下是要在下载程序时擦除的,这样会导致之前调试写进去的数据在下次烧程序时被擦除,解决办法是设置 系统熔丝位 EESAVE=1,这样就可以保留原理EEPROM中的数据了。。
2.熔丝位的设置不是通过程序中实现的,而是设置编程器来实现的。
3.用AVR studio编程好像全局变量不变,读出的老是0:
很多编译器会对代码进行优化,包括对全局变量的一些优化。
比如 AVR Studio就会对全局变量进行优化。
优化的情况如下:
若在主函数的死循环中不断地对此全局变量进行判断或者其它,编译器不会每次都从原地址取值(原地址即为全局变量所在的位置),而是从缓存中取值(如Rn寄存器)。即使在其它函数中对此全局变量进行了修改(如中断程序或者其它),也不会影响到主函数对此全局变量的判断(即判断出错),解决这种问题的办法就是在定义全局变量时加上volatile关键字(如volatile unsigned char i),以告诉编译器不要对此全局变量进行优化,即每次要用到此全局变量时都从原地址取值。
阅读(2755) | 评论(0) | 转发(0) |