Convertir une variable en constante
Fermé
joube31
Messages postés
1
Date d'inscription
mardi 28 janvier 2014
Statut
Membre
Dernière intervention
28 janvier 2014
-
28 janv. 2014 à 09:03
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 28 janv. 2014 à 14:23
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 28 janv. 2014 à 14:23
A voir également:
- Convertir une variable en constante
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir audio en texte word - Guide
- Convertir clavier qwerty en azerty - Guide
1 réponse
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 28/01/2014 à 14:26
Modifié par [Dal] le 28/01/2014 à 14:26
Salut joube31,
Tout d'abord, je n'ai jamais utilisé ce compilateur. Alors prend mon message avec une pincée de sel :-)
Une recherche Google donne la documentation de Delay_us pour ce compilateur pour PIC à la page suivante :
https://download.mikroe.com/documents/compilers/mikroc/pic/help/built-in_routines.htm
Son prototype est :
Note que c'est Delay_us et pas delay_us (majuscule initiale), et note aussi que c'est un
A tout hasard, tu pourrais tester de caster ta variable
Cependant, une hypothèse possible est que que quand la doc parle de "constante", elle veuille dire "constante littérale", comme semblerait l'indiquer l'exemple de code sous cette "built-in routine", qui est une constante littérale. Si c'est le cas, tu devrais certainement comparer cette routine à Vdelay_ms (temporisation en millisecondes), qui elle accepte qu'une variable lui soit passée selon cette doc, alors que la doc de Delay_us (temporisation en microsecondes) indique n'accepter qu'une "constante" (sans autre précision).
Autrement, si tu tiens à garder Delay_us, tu peux toujours faire :
à la place de ce que tu as écrit. Bien sûr, la boucle
Dal
Tout d'abord, je n'ai jamais utilisé ce compilateur. Alors prend mon message avec une pincée de sel :-)
Une recherche Google donne la documentation de Delay_us pour ce compilateur pour PIC à la page suivante :
https://download.mikroe.com/documents/compilers/mikroc/pic/help/built-in_routines.htm
Son prototype est :
void Delay_us(const unsigned long time_in_us);
Note que c'est Delay_us et pas delay_us (majuscule initiale), et note aussi que c'est un
const unsigned longqui doit lui être passé, et pas un
int. Comme c'est une "built-in routine" du compilateur selon la doc (pas une macro comme tu le dis), que c'est du C non standard, le compilateur décide de son fonctionnement comme bon lui semble.
A tout hasard, tu pourrais tester de caster ta variable
Delay_us((const unsigned long)a);et mettre en cohérence le type de
aen le déclarant unsigned long.
Cependant, une hypothèse possible est que que quand la doc parle de "constante", elle veuille dire "constante littérale", comme semblerait l'indiquer l'exemple de code sous cette "built-in routine", qui est une constante littérale. Si c'est le cas, tu devrais certainement comparer cette routine à Vdelay_ms (temporisation en millisecondes), qui elle accepte qu'une variable lui soit passée selon cette doc, alors que la doc de Delay_us (temporisation en microsecondes) indique n'accepter qu'une "constante" (sans autre précision).
Autrement, si tu tiens à garder Delay_us, tu peux toujours faire :
for (n = 0; n < angle; n++) Delay_us(10); Delay_us(1000);
à la place de ce que tu as écrit. Bien sûr, la boucle
forva introduire des délais additionnels par rapport aux microsecondes de temporisation que tu souhaitais, d'autant plus longs que angle est important, que alors je ne sais pas si cela te convient.
Dal