2017-07-02 17 views
0

J'utilise une boucle for qui va augmenter de 0 à 30000 pour faire un peu de retard entre les états ON/OFF. Comment trouver le délai exact pris par la boucle for. Le code est utilisé pour le micro-contrôleur AT89C51ED2 avec une fréquence d'oscillateur 11.0592 MHZ. J'ai essayé avec des fonctions de retard préférées par certains programmeurs aussi. Mais je ne pouvais pas voir que la LED clignotait.comment calculer le temps nécessaire pour exécuter une instruction en keil c

+0

Votre code est-il en cours d'exécution? Est-ce que la LED est allumée, éteinte ou allumée à moitié? Que se passe-t-il lorsque vous étendez la LED? Est-ce que votre débogueur montre que la boucle est en cours d'exécution? Vous devez déboguer ceci - nous ne pouvons pas aider du tout avec ce que vous nous avez dit, ou avec probablement des problèmes de matériel du tout :( – ThingyWotsit

+0

Oui, il est compilé avec succès et fichier .hex également créé.J'ai choisi P1.0 pour LED En mode de débogage, je peux voir que le P1.0 clignote en utilisant Périphériques-> Ports E/S -> Port 1. Mais dans le matériel ce n'est pas le cas. – userrp1519825

Répondre

1

Soit vous allez et que vous utilisez la fenêtre Dissassembly pour voir les instructions pour votre boucle et calculer le nombre de cycles pour chaque instruction pour votre boucle de 3000 fois ou ...

..go à déboguer, fenêtre ouverte et Registers il y a le paramètre States qui vous indique combien de cycles ont été requis pour une étape spécifique dans votre code. Lors du débogage, déplacez au début de la boucle, enregistrez les états, puis passez en boucle et vérifiez à nouveau. Soustrayez les valeurs et vous avez le nombre d'états.