次の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 でシミュレートすると、19 サイクルで実行されます。コメントされていない場合、46 サイクルで実行されます。
なぜ大きな違いがあるのですか?