Formation aux PIC

On Sep 26, 8:43 am, Laurent CLAUDE :

|> "Le langage C" par Kernighan & Ritchie. |> (35 Euros) ISBN : 2-10-048734-5 |>

formatting link

Il me semble que tu n'as pas bien saisi :

Le C est un language qui ne *depend pas* de la cible materielle. Un des interets du C est justement de ne pas etre specifique a une machine : il n'existe pas un C pour Microchip, un autre pour Motorola/Freescale, un autre pour Intel, etc ... Un *meme* programme C correctement ecrit pourra etre compile, suivant le uC cible, en differents codes machine, destines a plusieurs uC differents, provenant de fabricants differents. (exception faite des routines bas niveau specifiques au uC) C'est le compilateur qui transcrit le C en language machine qui va generer du code executable pour un uC particulier.

Donc ta question "apprendre le C pour du PIC" n'a pas de sens, car le C n'est pas destine a un uC particulier, comprends-tu ?

Apprendre le C est *independant* du fait d'apprendre les PIC. Que tu utilises un PIC, un 68HC16, ou un uP Intel, la connaissance du C te servira toujours, quel que soit le hardware que tu utiliseras.

Apprendre le C n'est certainement pas inutile !

Reply to
Jean-Christophe
Loading thread data ...

// Le 25/09 a 11h22 Slartibartfast :

char *p = "stn", *s = "Si tu racontes n'importe quoi c'est normal" " que tu te fasses tailler un costard."

*strrchr( s, *p++ ) = *(p+1); *strrchr( s, *p++ ) = *p; printf( "%s \n", s );

// ;-)

Reply to
GuessWhat

Jean-Christophe a écrit :

Ha... je m'attendais a cette réponse ! C'est confirmé : ma question était stupide !!!

Merci Laurent

Reply to
Laurent CLAUDE

"Laurent CLAUDE" a écrit

=================== Il existe de nombreux outils (compilateurs) pour les µC PIC en langage C, tous à peu près semblables quand aux instructions et structures du standard_C , ( pour ceci , n'importe quel cours ou document concernant le "langage C" conviendra ) ... mais tous différents en ce qui concerne les bibliothèques très spécifiques, de fonctions et l'ecriture de la gestion des outils du µC concerné. Exemple comparatif ici de quelques compilateurs PIC (commerciaux)

formatting link

Reply to
maioré

J'esp=E8re que tu ne manipules pas les pointeurs comme =E7a dans tes programmes embarqu=E9s.

--

-Stan

Reply to
Stan

On Sep 26, 8:11=A0pm, Stan :

|> J'esp=E8re que tu ne manipules pas les pointeurs |> comme =E7a dans tes programmes embarqu=E9s.

Ca marche tres bien, merci !

Reply to
GuessWhat

Tu t'es d=E9ja demand=E9 o=F9 =E9tait r=E9serv=E9 l'espace m=E9moire de 'p'= et 's' ? Et comment on appelle ces d=E9clarations ?

--

-Stan

Reply to
Stan

On Sep 26, 4:19=A0pm, Laurent CLAUDE

|> C'est confirm=E9 : ma question =E9tait stupide !!!

Nooon pas du tout : il n'y a pas de question stupide, ce qui serait stupide c'est de ne pas chercher a comprendre.

Reply to
Jean-Christophe

On Sep 26, 9:19=A0pm, Stan

|> Tu t'es d=E9ja demand=E9 o=F9 =E9tait r=E9serv=E9 l'espace m=E9moire de = 'p' et 's' ? |> Et comment on appelle ces d=E9clarations ?

Ca fait 20 ans que je code en C, merci. As-tu compris ce que fait ce code, juste en le lisant, sans le faire tourner ?

Reply to
GuessWhat

e 'p' et

Quelle r=E9ponse pertinente.

Pourquoi, il est sens=E9 =EAtre difficile =E0 comprendre ( en plus d'avoir un comportement ind=E9fini ) ?

A moins d'avoir confondu char *p avec char p[] ?

--

-Stan

Reply to
Stan

maioré a écrit :

Ouais !! merci très bon lien C'est aussi ce type de réponse que j'appelais avec cette question ! cdlt,

Reply to
Laurent CLAUDE

On Sep 26, 10:09 pm, Stan :

C'est quoi cette agression, quel est ton probleme ? Il faut ta permission pour ecrire du C ?

Je constate juste que tu ne reponds pas. Fais tourner ce code avec un compilo ANSI.

Tu n'as jamais =E9crit char *str =3D "texte"; au lieu de char str[] =3D "texte";

Tu devrais essayer, juste par curiosit=E9. Pour le reste, je n'ai pas l'intention de me battre avec toi, j'ai pass=E9 l'age.

Reply to
GuessWhat

"GuessWhat" a écrit dans le message de news: snipped-for-privacy@s6g2000vbp.googlegroups.com... On Sep 26, 8:11 pm, Stan :

au hasard : ça remplace costard par connard ?

mais ton programme ne marchera jamais sur un µC, les constantes (la chaine s et p) sont stockées en ROM et ne seraient pas modifiables ou sous unix/windows tu aurais droit à une belle erreur de segmentation.

il faut faire :

char *s=strdup("......");

et free(s) à la fin (bien que ça ne serve absolument à rien dans ce cas vu qu'il n'y a que ça comme code et qu'ensuite le programme sort :-) )

Pascal

Reply to
Pinball-Man

On Sep 27, 10:03 am, "Pinball-Man" :

Bingo !

Qui parle de uC ? Je parle de C, pas de la cible mat=E9rielle.

Un compilo ANSI a qui on d=E9clare const char *s =3D "texte"; va maintenir le pointeur 's' et la chaine ASCII constantes, car c'est bien cela la sens du mot "const".

Un compilo ANSI a qui on d=E9clare char *s =3D "texte"; va stocker le pointeur et la chaine ASCII en RAM, et permettra donc leur modification a tous deux. Si ce n'est pas le cas alors le compilo n'est pas ANSI.

Aucune raison d'avoir une erreur de segmentation ! Ce code ne cause probl=E8me qu'=E0 certaines personnes, et non =E0 un compilateur C qui respecte la norme ANSI.

Reply to
GuessWhat

On Sep 26, 10:09 pm, Stan :

C'est exactement la meme chose.

Reply to
Jean-Christophe

"Pinball-Man" a écrit dans le message de news:

4abf2a62$0$31796$ snipped-for-privacy@news.free.fr...

======== Ou alors on peut ecrire

char *p[] = "stn";

Reply to
maioré

On Sep 27, 1:08=A0pm, "maior=E9" :

|>> char *p =3D "stn"

Certainement pas. char *p[] designe un tableau de pointeurs. Il ne peut donc etre initialise avec une chaine de caracteres.

Reply to
Jean-Christophe

Aussi nul en programmation qu'en =E9lectronique.

Reply to
Slartibartfast

Pas tout =E0 fait, surtout lors de la d=E9claration.

char *p =3D "toto"; p[2] =3D 'i'; /* affectation sur le const : r=E9sultat ind=E9fini*/

char p[] =3D "toto"; p[2] =3D 'i'; /* ok */

la premi=E8re version est un h=E9ritage des anciens compilo, pr=E9serv=E9 p= our une compatibilit=E9 avec des millions de lignes d=E9j=E0 =E9crite.

Les programmeurs s=E9rieux pr=E9f=E9rent d=E9clarer : const char* p =3D "to= to", ce qui controle toute modif =E0 la compilation.

--

-Stan

Reply to
Stan

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.