我有以下C代码。
#include <avr/io.h>
int main(void) {
DDRA = 0xFF;
PORTA = 0x00;
while(1) {
/*volatile*/ unsigned long int counter;
for (counter=0; counter<14285L; counter++) {
PORTA = ~PINA; // run to cursor here
}
}
return(0);
}
此代码可用于Atmega128微控制器板。
注意到评论词“volatile”。当我在Atmel Studio中使用“volatile”进行模拟时,它会以19个周期运行。当它没有被评论时,它以46个周期运行。
为什么会有巨大的差异?
答案 0 :(得分:1)
volitile关键字提示编译器不应该进行某些优化,因为由于中断之类的事情,不能假定该值保持不变。没有优化,事情就会变慢。