我有以下 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 个周期运行。
为什么会有巨大的差异?