Mon exercice: • Calculer le délai maximum possible à l'aide de trois boucles à la fréquence d'horloge de 1 MHz. (Réponse 49,94 s)Calcul du délai à partir de 3 boucles imbriquées
delay: ldi r23,$FF ;Initialise 3rd loop counter
loop3: ldi r24,$FF ;Initialise 2nd loop counter
loop2: ldi r25,$FF ;Initialise 1st loop counter
loop1: dec r25 ;Decrement the 1st loop counter
brne loop1 ;and continue to decrement until 1st loop counter = 0
dec r24 ;Decrement the 2nd loop counter
brne loop2 ;If the 2nd loop counter is not equal to zero repeat the 1st loop, else continue
dec r23
brne loop3
ret ;Return
Je suis en train de calculer le délai maximum en utilisant les 3 boucles, la réponse est apparemment 49,94 s et je suis vraiment mal, il était beaucoup plus simple avec 2 boucles imbriquées.
Voici ce que j'ai essayé, mais la réponse est loin.
33*((255*3)-1) + 17*((33*3)-1) + 11*3
ldi
-1 cycle d'horloge, brne
1 ou 2 cycles d'horloge
Architecture: ATmega8535
'ldi r23, $ FF; Initialise le 3ème compteur de boucle 17' <- Votre commentaire ne correspond pas au code. Vous utilisez également 17 et 33 dans votre tentative de calcul. D'où avez-vous tiré ces valeurs? Et si vous vouliez le délai maximum possible, ne devriez-vous pas initialiser les compteurs à 0? – Michael
quelle architecture est-ce? l'ajouter à la balise –