IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Réunir plusieurs sous programme


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut Réunir plusieurs sous programme
    Bonjour, mon PPE consiste à créer un détecteur de sur vitesse. Tout d'abord, la personne enclenche un seuil (30,50,70,90,110,130) qui correspond a la vitesse limitée dans la zone ou il roule. Puis la vitesse de rotation de la roue de la voiture est détécter en fonction des fronts montants du signal carré qu'il génere. enfin le programme compare la vitesse seuil à la vitesse de la voiture si il depasse la vitesse, la voiture affiche sur un cadrant LCD : "vous depasser la vitesse limitée"

    J'ai fait les différents sous programme mais je n'arrive pas à les relier et à creer le programme principal c'est pour ça que j'ai besoin de votre aide.

    SOUS-PROGRAMME RECUPERATION DE LA VITESSE SEUIL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    #include <90s8535.h>
    #include <delay.h>
    #include<lcd_V3.h> 
     
    char change;
    long seuil;
     
     
     /********programme lire le seuil sur le PORTD*******/
    int choix()    
    {         
       lcd_init();
       etiq2:       
       	do
       	  {
         	    lcd_gotoxy(0,0);
         	    lcd_putsf("Limitation ?");
         	    lcd_gotoxy(4,1);
         	    lcd_putsf("         ");
         	  }
       	while(PIND==0);
       	lcd_clear();    
     
     
    etiq1:
    switch (PIND)
    {  
    case 0:
    goto etiq2;
    break;
     
    case 1:
    lcd_gotoxy(0,0);
    lcd_putsf("limitation :");
    lcd_gotoxy(5,1);
    lcd_putsf("30km/h");
    change = PIND;
    seuil=80;
    break;
     
    case 2:
    lcd_gotoxy(0,0);
    lcd_putsf("limitation :");
    lcd_gotoxy(5,1);
    lcd_putsf("50km/h");
    change = PIND;
    seuil=121;
    break;
     
    case 4:
    lcd_gotoxy(0,0);
    lcd_putsf("limitation :");
    lcd_gotoxy(5,1);
    lcd_putsf("70km/h");
    change = PIND;
    seuil=170;
    break;
     
    case 8:
    lcd_gotoxy(0,0);
    lcd_putsf("limitation :");
    lcd_gotoxy(5,1);
    lcd_putsf("90km/h");
    change = PIND;
    seuil=218;
    break;
     
    case 16:
    lcd_gotoxy(0,0);
    lcd_putsf("limitation :");
    lcd_gotoxy(5,1);
    lcd_putsf("110km/h");
    change = PIND;
    seuil=257;
    break;
     
    case 32:
    lcd_gotoxy(0,0);
    lcd_putsf("limitation :");
    lcd_gotoxy(5,1);
    lcd_putsf("130km/h");
    change = PIND;
    seuil=310;
    break;
     
    default:
    lcd_gotoxy(1,0);
    lcd_putsf("Erreur");
    change = PIND;
    goto etiq1;
    break;
    }
    while(1)
    {
    if (change=!PIND)
    {
    goto etiq1;
    }
    }
    return seuil;
    }

    SOUS PROGRAMME RECUPERER VITESSE DE LA VOITURE (AVEC FRONTS MONTANTS)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #include<90S8535.h>
    #include <lcd_v3.h>
    #include<string.h>
    #include<stdlib.h>
    #include<cnv2003.h>
    float chrono; unsigned int i, tempo, tempomax=2;
     
     
    void valide_interrupt_tim0()
    {TIMSK=0x01;}
     
    void init_timer0()
    {TCCR0=0x05;
    TCNT0=61;}
     
    interrupt[TIM0_OVF]void_timer0_ovf()
    {i = i+1;
    chrono=i*0.025;
    tempo=chrono;
    TCNT0=61;}
     
    void inhibe_interrupt_tim0()
    {TIMSK=0x00;} 
     
    main()
    { 
    int seuil,vitesse;
    DDRD=0x00;
    PORTD=0;  
    lcd_init();
    lcd_clear();
    while(1)
     {    seuil=0;i=0;tempo=0;
          valide_interrupt_tim0();
          init_timer0();
          #asm("sei") 
             do
             {  
              while(PIND.0==0);
              while(PIND.0!=0);
              seuil=seuil+1;
     
              }
         while(tempo<tempomax);
         #asm("cli")
         inhibe_interrupt_tim0(); 
         vitesse=seuil;
     
     
    lcd_gotoxy(0,0); 
    lcd_puts(cnv_itoa(vitesse));
    }}

    SOUS-PROGRAMME COMPARER VITESSE AU SEUIL ET AFFICHER MESSAGE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <90s8535.h>
    #include <delay.h>
    #include<lcd_V3.h>
     
    char compa(long seuil, long vitesse)
    { 
    if(vitesse>seuil)
    lcd_putsf ("Ralentissez");
    {return 1;}
    else
    lcd_putsf ("Vitesse OK");
    {return 0;}
    ;
    }

    Pouvez vous m'aider à relier ces codes ???
    Merci aux Développeur

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Quelques remarques qui ne vont pas faire avancer ton problème mais qui permettront peut être de mieux l'exposer.

    D'abord, ton code, soigne la présentation. Un code est plus souvent lu qu'écrit, il faut donc que le lecteur se retrouve rapidement dedans. Il y a plusieurs standards d'écriture et d'indentation qui font que l'on arrive assez rapidement à lire mais le tien n'en respecte aucun.

    Si je prends ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char compa(long seuil, long vitesse)
    { 
    if(vitesse>seuil)
    lcd_putsf ("Ralentissez");
    {return 1;}
    else
    lcd_putsf ("Vitesse OK");
    {return 0;}
    ;
    }
    et que je le réécris de manière à peu près standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    char compa(long seuil, long vitesse)
    { 
       if(vitesse>seuil)
          lcd_putsf ("Ralentissez");
       {
          return 1;
       }
       else
       lcd_putsf ("Vitesse OK");
       {
          return 0;
       }
       ;
    }
    Je vois immédiatement qu'il y a un problème et que même ce code ne devrait pas compiler, le bloc "if ... else" est mal formé et ne correspond pas à la syntaxe attendue et que le ";" à la fin ne sert pas à grand chose.

    Autre chose, ce que tu appelle des sous programmes, en C cela s'appelle des fonctions cela ne change rien au raisonnement mais autant parler le même langage.

    Ensuite, visiblement ton code, c'est quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tant que toujours
       appel à la fonction RECUPERATION DE LA VITESSE SEUIL
       appel à la fonction RECUPERER VITESSE DE LA VOITURE (AVEC FRONTS MONTANTS)
       appel à la fonction COMPARER VITESSE AU SEUIL ET AFFICHER MESSAGE
    fin tant que
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    Tous d'abord mon code commence par ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <90s8535.h>
    #include <delay.h>
    #include<lcd_V3.h>
    #include<string.h>
    #include<stdlib.h>
    #include<cnv2003.h>
    main()
    {goto 
    goto 
    goto
    }
    mais j'en c'est pas plus pouvez-vous m'aidez svp j'ai plus que deux semaines

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 461
    Par défaut
    Il faut absolument que tu évites les gotos injustifiés, surtout si c'est un projet scolaire !

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/06/2009, 13h08
  2. [z/OS] Plusieurs appels à un même sous-programme
    Par toomsounet dans le forum Cobol
    Réponses: 5
    Dernier message: 17/09/2007, 11h05
  3. Plusieurs sous-programmes ou un programme avec plein de conditions ?
    Par svagrim dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 09/07/2007, 19h26
  4. [langage] les sous programmes
    Par giverny dans le forum Langage
    Réponses: 6
    Dernier message: 21/07/2003, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo