の運転時間は、次のサブルーチンの(ナノ秒単位)で実行時間を決定し決定しますトリプルネストされた遅延ループ
delay:
push r22
ldi r20, 0x40
del1: nop
ldi r21, 0xFF
del2: nop
ldi r22, 0xFF
del3: nop
dec r22
brne del3
dec r21
brne del2
dec r20
brne del1
pop r22
ret
は、ここに私の仕事です:
ちょうど数を答えるInner loop = 1 + 254(1 + 3) + (1 + 2) = 1020
Middle loop = 1 + 254(1020 + 1 + 3) + (1020 + 1 + 2) = 261 120
Outer loop = 1 + 63(261120 + 1 + 3) + (261120 + 1 + 2) = 16 711 936
Total cycles = 16 711 936 + 2 (push) + 1 (ldi) + 2 (pop) + 4 (ret)
= 16 711 945
サイクル数は問題ありませんが、マイクロコントローラはATMega 2560です。
重複の可能性:https://stackoverflow.com/questions/35750663/calculating-delay-from-3-nested-loops、https://stackoverflow.com/questions/47453737/how-do -avr-assembly-brne-delay-loops-work、https://stackoverflow.com/questions/24097526/how-to-make-a-delay-in-assembly-for-avr-microcontrollers –