0

さて、IDE として Code::Blocks を使用し、コンパイラとして Win AVR を使用しています。F_CPU は 8000000UL として選択されます。Atmega32 のコードを書いています。しかし、作成したコード (*.hex ファイル) を Proteus design suite (ISIS) で実行すると、_delay_ms(1000)で 1 秒の遅延が発生しません。書き込みか間違っているかわかりませんが、編集コンポーネントでCKSEL ヒューズ(0100) Int.RC 8MHzに選択しました。どうしたの?お願いします....

4

3 に答える 3

2

コンパイラの最適化を -O0 以外に設定してみましたか? delay * 関数に関するavr-libc ドキュメントから。

これらの関数が意図したとおりに機能するためには、コンパイラの最適化を有効にする必要があり、遅延時間はコンパイル時に既知の定数である式でなければなりません。

于 2012-06-11T15:49:31.127 に答える
1

ただプロテウスのシミュレーションが遅れます。実際のデバイスでは、遅延機能が適切に機能します。時間遅延をシミュレートするには、avr studio プログラムを使用することをお勧めします。

于 2012-08-16T14:08:21.107 に答える