|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 沉思的牛 于 2015-3-20 21:03 编辑
一次偶然的机会在Atmel官网上下载了AtmelStudio;
因为是用的VS2010的界面,所以非常喜欢这个IDE;
美女镇楼:
美女镇楼
迫不及待的写了一个闪光灯程序进行测试,居然这么简单的程序不行!!
程序如下:
- #include <avr/io.h>
- void Delay(long long z)
- {
- long long x,y;
-
- for(x=z ; x>0 ; x--)
- for(y=110 ; y>0; y--);
- }
- int main(void)
- {
- DDRC=0XFF; //LED接PC口
- PORTC=0XFF; //LED接PC口
- while(1)
- {
- PORTC =~PORTC; //闪光灯
- Delay(500);
-
- }
- }
复制代码
于是各种不服,立马查资料,发现自己太特么心急了;应该好好看看资料的~~
由于编译器优化级别比ICCAVR等级高; Delay是被编译器优化掉了;
只需要在变量前面加上volatile即可 代码如下:
- #include <avr/io.h>
- void Delay(volatile long long z) //使用volatile的正常
- {
- volatile long long x,y;
-
- for(x=z ; x>0 ; x--)
- for(y=110 ; y>0; y--);
- }
- int main(void)
- {
- DDRC=0XFF; //LED接PC口
- PORTC=0XFF; //LED接PC口
- while(1)
- {
- PORTC =~PORTC; //闪光灯
- Delay(500);
-
- }
- }
复制代码
简单地说就是防止编译器对代码进行优化!
当然你也可以更改编译器的优化等级,不用加volatile也可以; 设置如下:
设置优化等级
后期我会把软件和一些资料上传到百度网盘,供大家下载~
|
评分
-
查看全部评分
|