erreur de syntaxe, probleme langage C

erreur de syntaxe, probleme langage C - C - Programmation

Marsh Posté le 09-05-2011 à 14:34:03    

voila j'ai un souci, je voudrais créer un programme me permettant d'automatiser l'entretien de cuve ( d'eau )  
des capteur de niveau pour le remplissage, des capteurs de niveaux pour stopper le remplissage , et un capteur pour stopper la vidange quand celle ci est déclancher ....je suis absolument novice, je voudrais enfet que les deux premier point soit autonomes et tourne continuellement,et qu'un utilisateur puisse a tout moment déclancher une vidange, mais aussi le remplissage et un filtrage ... il faudrais alors sortir de la boucle principal ....je me debat un peu et voila se que je suis parvenu a faire...maintenant je bloque un peu je ne sais pas trop quoi faire....MERCI D'AVANCE POUR VOTRE AIDE
 

Code :
  1. #include <p18f452.h>  // cette librairie me bloque lorsque je veux configurer les ports...( 18F452 )  
  2. #define cuve1nivB PORTA.1
  3. #define cuve1nivH PORTA.2
  4. #define cuve2nivB PORTC.0
  5. #define cuve2nivH PORTC.1
  6. #define captvidC1 PORTB.3
  7. #define captvidC2 PORTB.4
  8. #define vidangeC1 PORTD.0
  9. #define vidangeC2 PORTD.1
  10. #define remplisC1 PORTB.7
  11. #define remplisC2 PORTB.6
  12. #define selection PORTA.4
  13. #define confirmer PORTB.0
  14. #define EV1cuve1 PORTD.4
  15. #define EV1cuve2 PORTD.3
  16. #define EV2cuve1 PORTD.7
  17. #define EV2cuve2 PORTD.6
  18. PORTA = 0x..;
  19. PORTB = 0x..;
  20. PORTC = 0x..;
  21. PORTD = 0x..;
  22. void main (void)
  23. {
  24. int cuve1nivB,cuve2nivB,cuve1nivH,cuve2nivH,selection,confirmer;  // BUILD FAILLED : syntaxe error !! ( capteurs de niveau des cuve )  
  25.     if(cuve1nivB==1)
  26.     {
  27.     remplisC1=1;
  28.     }
  29. else
  30. {
  31. if(cuve2nivB==1)
  32.     {
  33.     remplisC2=1;
  34.     }
  35.     else
  36.      {
  37.        if(cuve1nivH==1)
  38.         {
  39.           remplisC1=0;
  40.         }
  41.          else
  42.           {
  43.            if(cuve2nivH==1)
  44.              {
  45.               remplisC2=0;
  46.               return(s);
  47.              }
  48.           }
  49.      }
  50. }
  51.     if(selection=1,confirmer=1)break; // 2BP, permettant a l'opperateur d'intervenir ...  
  52.     printf("selectionner la cuve" );
  53.    
  54.           if(selection=1)printf("cuve1" );
  55.              {
  56.                if(confirmer=1)break;
  57.                printf("selectionner l'opperation sur cuve 1" );
  58.                  {   
  59.                     if(selection=1)printf("remplissage cuve 1" );
  60.                     if(confirmer=1)remplisC1=1;
  61.                            if(cuve1nivH=1)remplisC1=0;else
  62.                            while(1);
  63.                  }
  64.    
  65.                     else
  66.                     if(selection=1)printf("degazage cuve 1" );
  67.                  {
  68.                        if(confirmer=1)EV1cuve1=1,EV2cuve1=2;
  69.                            tempo ( x heures , x minutes);
  70.                        EV1cuve1=0,EV2cuve1=0;
  71.                  }
  72.                     else
  73.                     if(selection=1)printf("vidange cuve 1 " );
  74.                  {
  75.                        if(confirmer=1)vidangeC1=1
  76.                               if(captvidC1=1)tempo( x minutes ) vidangeC1=0;
  77.                               else    while(1)
  78.                  }
  79.                while(1);
  80.              }
  81.           else
  82.           if(selection=1)printf("cuve2" );
  83.                 {
  84.                if(confirmer=1)break;
  85.                printf("selectionner l'opperation sur cuve 2" );
  86.                   {
  87.                     if(selection=1)printf("remplissage cuve 2" );
  88.                        if(confirmer=1)remplisC2=1;
  89.                            if(cuve2nivH=1)remplisC2=0;else
  90.                            while(1);
  91.                   }
  92.                     else                   
  93.                     if(selection=1)printf("degazage cuve 2" );
  94.                   {
  95.                        if(confirmer=1)EV1cuve2=1,EV2cuve2=2;
  96.                            tempo ( x heures , x minutes);
  97.                        EV1cuve2=0,EV2cuve2=0;
  98.                   }
  99.                     else
  100.                     if(selection=1)printf("vidange cuve 2" );
  101.                    {
  102.                         if(confirmer=1)vidangeC2=1;
  103.                         if(captvidC2=1)tempo( x minutes ) vidangeC2=0;
  104.                         else    while(1);
  105.                    }
  106.                 } 
  107.                while(1);
  108.           while(1);
  109.    }


Message édité par gilou le 09-05-2011 à 14:41:20
Reply

Marsh Posté le 09-05-2011 à 14:34:03   

Reply

Marsh Posté le 09-05-2011 à 14:47:56    

Code :
  1. #define cuve1nivB PORTA.1
  2. ....
  3. int cuve1nivB;

c'est la même chose que  

Code :
  1. int PORTA.1;

Or le point n'est pas autorisé dans les noms de variables en C, d'ou le message du compilateur.
 
De toute façon, avec du code comme

Citation :

   if(selection=1,confirmer=1)break; // 2BP, permettant a l'opperateur d'intervenir ...  


ça a peu de chances de faire ce que tu veux.
 
A+,


Message édité par gilou le 09-05-2011 à 14:54:35

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-05-2011 à 15:28:41    

j'entend bien, je sais que ce n'est pas ainsi je demande justement de l'aide ....  
je decouvre a peine la programmation ...  
je ne peut donc pas rennomer les entrées des differents port que j'utilise ?

Reply

Marsh Posté le 09-05-2011 à 16:12:44    

comment puis-je donc commander dans mon programme de verifier le niveau logique sur l'entrée concerné ??

Reply

Marsh Posté le 09-05-2011 à 17:00:11    

Comme le dit gilou, tu as peu de chances d'arriver à ce que tu veux avec ton niveau actuel en C. Trop d'erreurs pour le moment, toutes te les corriger demanderait une réécriture de ton code.
 
Le mieux à faire je pense est de potasser un peu le langage. Pas forcément à fond pour commencer, mais il faut commencer à étudier tout de même.
Je conseille généralement l'acquisition du livre "Le Langage C", de Kernighan & Ritchie, une référence en la matière et néanmoins facile d'accès.

Reply

Marsh Posté le 09-05-2011 à 17:30:00    

Citation :

je ne peut donc pas rennomer les entrées des differents port que j'utilise ?


Si, mais pas avec un point dans le nom.
#define cuve1nivB PORTA_1 // la, le renommage devrait coller.
 
En C, un nom que tu peux définir, il ne peut s'écrire qu'avec: les lettres a..z et A..Z, les chiffres 0..9, et l'underscore _ et de plus, il ne doit pas commencer par un chiffre.
 
A+,


Message édité par gilou le 09-05-2011 à 17:30:41

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-06-2011 à 13:17:06    

Une erreur importante réside dans tes tests :
if(selection=1) par exemple
pour tester l'égalité il faut utiliser == et non pas =
donc écrire if(selection == 1).
Mais comme l'a dit Elmoricq, il y a trop d'erreurs pour le moment, je mentionnais juste celle-ci pour que tu n'aies pas à chercher indéfiniment pourquoi ton code ne marche pas (sachant qu'elle ne pose pas de problème de compilation)


---------------
http://www.microcontest.com - Site de challenges de programmation : Cryptographie - Multimedia - Intelligence Artificielle - Réseaux - Algorithmique - Mathématiques
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed