Bonsoir,
Ce programme est écrit en mikropascal, s'il vous plait aidez moi pour le convertir en microC
MerciCode:t := ADC_read(0); // lecture du convertisseur tlong := t*1000; // multiplier la valeur lue par 1000 pour ne pas perdre cette valeur après la virgule lorsqu'on divise par 1024 t := longint(tlong shr 10) // division entière par 1024 qui est 2 exp 10 ça revient à décaler les bits de 10 positions à droite exemple si je veux diviser un nombre par 2 exp 5 je décale tout simplement ses bit à droite de 5 position c'est plus rapide ! on obtient t variant de 0 à 999 car le max c'est la division entière de 1023/1024000 le rapport cyclique à afficher est de la forme (ch0).(ch1)(ch2) exemple 0.34 ch0 := t div 1000; // diviser t par 1000 ici ch0 est toujours égale à 0 car t ne dépasse pas 999 lcd_chr(2,1,48+ch0); // on affiche (ch0) lcd_chr(2,2,'.'); // on affiche (.) juste après (ch0) ch1 := integer(t div 100)mod 10; // ch1 est le reste de la division par 10 de t divisé par 100 exemple on suppose que t = 645 donc ici ch1 = 6 lcd_chr(2,3,48+ch1); // affichage de ch1 juste après le (.) on obtient (ch0).(ch1) ch2 := integer(t div 10)mod 10; //ch2 est le reste de la division par 10 de t divisé par 10 exemple on suppose que t = 645 donc ici ch2 = 4 lcd_chr(2,4,48+ch2);// affichage de ch2 juste après le (ch1) on obtient (ch0).(ch1)(ch2) j:=2*(ch2+13*ch1); // on recalcule le rapport cyclique ici je ne suis pas d'accord avec ce calcul car il y a beaucoup d'erreurs en effet le rapport cyclique de Pwm_Change_Duty doit être compris entre 0 et 255 moi je fait tout simplement t divisé par 4 -->j:= (t shr 2); c'est plus précis Pwm_Change_Duty(j); // changement du rapport cyclique
-----