programmation en C (vérification...)
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

programmation en C (vérification...)



  1. #1
    jo-electrons

    programmation en C (vérification...)


    ------

    Bonjour,

    Je suis actuellement en stage en entreprise de BTS système électronique fin de 1ère année. Mon projet consiste à éviter les remplacements systématiques des freins à disque en traitant un signal délivré par la bobine placé avant le frein pour fermer le frein de facon magnétique.

    Je me suis donc proposé à la place de faire une enorme plaque de faire un microcontroleur à la place.
    Le cahier des charges et l'organigramme sont en pièces jointes.

    Mon seul problème est la mise en oeuvre des timers. Ya-t-il une limite de timer? Surement au niveau hardware mais combien pour un microcontrôleur ATMEL 8515(ou ATMEGA).


    Mon programme est le suivant:
    :
    /****************************** ***********************
    This program was produced by the
    CodeWizardAVR V1.25.7a Evaluation
    Automatic Program Generator
    © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 05/06/2009
    Author : Freeware, for evaluation and non-commercial use only
    Company :
    Comments:


    Chip type : ATmega8515
    Program type : Application
    Clock frequency : 8,000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 128
    ****************************** ***********************/

    #include <mega8515.h>
    #include <delay.h>
    #include <math.h>
    #include <time.h>

    #define freinV ~PINA
    #define imageI ~PINA
    #define convertiV ~PINA
    #define economiV ~PINA
    #define ledV ~PINB
    #define ledR ~PINB
    #define ledO ~PINB
    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=T
    PORTA=0x00;
    DDRA=0xFE;

    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTC=0x00;
    DDRC=0xFF;

    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTD=0x00;
    DDRD=0xFF;

    // Port E initialization
    // Func2=Out Func1=Out Func0=Out
    // State2=0 State1=0 State0=0
    PORTE=0x00;
    DDRE=0x07;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    EMCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;

    while (1)
    {
    // Place your code here
    if((freinV==2) && (imageI==3)) {ledO==1} //alimentation correcte?
    else{ledR==1 && return if}
    mise en marche du timer
    }


    if (timer==0)
    {
    convertiV1==convertiV;
    }
    else if (timer==1)
    {
    convertiV2==convertiV;
    convertiV2-convertV1>0;
    if(convertiV2-convertV1>0) go on : ledR=1 && return; //on regarde si il y a une pente montante sur le signal
    }
    else if (timer==2)
    {
    convertiV3==convertiV;
    convertiV3-convertiV2>0;
    } if(convertiV3-convertiV2>0) go on : ledR=1 && return; //on regarde si il y a une pente montante sur le signal
    else if (timer==3)
    {
    convertiV4==convertiV;
    convertiV4-convertiV3>0;
    if(convertiV4-convertiV3>0) go on : ledR=1 && return; //on regarde si il y a une pente montante sur le signal
    }
    else if (timer=4)
    {
    convertiV5==convertiV;
    convertiV5-convertiV4>0;
    if(convertiV5-convertiV4>0) go on : ledR=1 && return; //on regarde si il y a une pente montante sur le signal
    }
    else if (timer=5)
    {
    convertiV6==convertiV;
    convertiV6-convertiV5>0;
    if(convertiV6-convertiV5>0) go on : ledR=1 && return; //on regarde si il y a une pente montante sur le signal
    }
    else // Pourrais-je le virer? parce que je ne sais quoi mettre le déroulement ne peux pas avoir de valeurs aléatoire selon le timer
    {
    printf("Je n'ai aucune phrase de prete pour ton age ");
    }

    ledO=1

    mise en marche timer2
    if (timer==0)
    {
    convertiV1==convertiV;
    }
    else if (timer==1)
    {
    convertiV2==convertiV;
    convertiV2-convertV1<0;
    if(convertiV2-convertV1<0) go on : ledR=1 && return;
    }
    else if (timer==2)
    {
    convertiV3==convertiV;
    convertiV3-convertiV2<0;
    } if(convertiV3-convertiV2<0) go on : ledR=1 && return;
    else if (timer==3)
    {
    convertiV4==convertiV;
    convertiV4-convertiV3<0;
    if(convertiV4-convertiV3<0) go on : ledR=1 && return;
    }
    else if (timer=4)
    {
    convertiV5==convertiV;
    convertiV5-convertiV4<0;
    if(convertiV5-convertiV4<0) go on : ledR=1 && return;
    }
    else if (timer=5)
    {
    convertiV6==convertiV;
    convertiV6-convertiV5<0;
    if(convertiV6-convertiV5<0) go on : ledR=1 && return;
    }
    else
    {
    printf("Je n'ai aucune phrase de prete pour ton age ");
    }


    mise en marche timer3
    if (timer==0)
    {
    convertiV1==convertiV;
    }
    else if (timer==1)
    {
    convertiV2==convertiV;
    convertiV2-convertV1>0;
    if(convertiV2-convertV1>0) go on : ledR=1 && return;
    }
    else if (timer==2)
    {
    convertiV3==convertiV;
    convertiV3-convertiV2>0;
    } if(convertiV3-convertiV2>0) go on : ledR=1 && return;
    else if (timer==3)
    {
    convertiV4==convertiV;
    convertiV4-convertiV3>0;
    if(convertiV4-convertiV3>0) go on : ledR=1 && return;
    }
    else if (timer=4)
    {
    convertiV5==convertiV;
    convertiV5-convertiV4>0;
    if(convertiV5-convertiV4>0) go on : ledR=1 && return;
    }
    else if (timer=5)
    {
    convertiV6==convertiV;
    convertiV6-convertiV5>0;
    if(convertiV6-convertiV5>0) go on : ledR=1 && return;
    }
    else
    {
    printf("Je n'ai aucune phrase de prete pour ton age ");
    }

    ledO=1;


    delay_65ms;

    (economiV<9 && economiV>12)? ledV=1:ledR=1;
    delay_20ms;
    (economiV<9 && economiV>12)? ledV=1:ledR=1;
    delay_20ms;
    (economiV<9 && economiV>12)? ledV=1:ledR=1;
    delay_20ms;
    (economiV<9 && economiV>12)? ledV=1:ledR=1 && return prog;
    delay_20ms;

    return prog;

    }





    Sur cette page de programme, bonne journée

    -----
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  2. #2
    Jack
    Modérateur

    Re : programmation en C (vérification...)

    Mon seul problème est la mise en oeuvre des timers. Ya-t-il une limite de timer?
    Qu'appelles-tu une limite de timer?

    A+

  3. #3
    jo-electrons

    Re : programmation en C (vérification...)

    Au niveau matériel, j'ai regardé, il y a que 2 timer sur le 8515!
    Sinon je suis entrain de regarder les erreurs faitent dans le programme avec le logiciel Cvavr mais bon il y a des choses bizarres.

    Programme à corriger :


    /****************************** ***********************
    This program was produced by the
    CodeWizardAVR V1.25.7a Evaluation
    Automatic Program Generator
    © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 05/06/2009
    Author : Freeware, for evaluation and non-commercial use only
    Company :
    Comments:


    Chip type : ATmega8515
    Program type : Application
    Clock frequency : 8,000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 128
    ****************************** ***********************/

    #include <mega8515.h>
    #include <delay.h>
    #include <math.h>


    #define freinV ~PINA
    #define imageI ~PINA
    #define convertiV ~PINA
    #define economiV ~PINA
    #define ledV ~PINB
    #define ledR ~PINB
    #define ledO ~PINB
    // Declare your global variables here
    char convertiV2;convertiV3;converti V4;convertiV5;convertiV6;conve rtiV7;convertiV8;convertiV9;
    convertiV10;convertiV11;conver tiV12;convertT1;convertT2;conv ertT3;convertT4;convertT5;conv ertT6;
    convertT7;convertT8;convertT9; convertT10;convertT11;convertV 1;convertV2;convertV3;convertV 4;convertV5;
    convertV6;convertV7;convertV8; convertV9;convertV10;convertV1 1;convertV12;

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=T
    PORTA=0x00;
    DDRA=0xFE;

    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTC=0x00;
    DDRC=0xFF;

    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTD=0x00;
    DDRD=0xFF;

    // Port E initialization
    // Func2=Out Func1=Out Func0=Out
    // State2=0 State1=0 State0=0
    PORTE=0x00;
    DDRE=0x07;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    EMCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    }

    void frein(void)
    {


    if((freinV==2) && (imageI==3))
    {ledO==1;} //alimentation correcte?
    else
    {ledR==1 && goon if};



    convertiV1==convertiV;

    delay_ms(19);

    convertiV2==convertiV;
    convertT1==convertV1-convertV2
    (convertT1>0)? go on:ledR=1 && return;

    delay_ms(18);

    convertiV3==convertiV;
    convertT2==convertV2-convertV3
    (convertT2>0)? go on:ledR=1 && return; //on regarde si il y a une pente montante sur le signal

    delay_ms(19);

    convertiV4==convertiV;
    convertT3==convertV3-convertV4
    (convertT3>0)? go on:ledR=1 && return; //on regarde si il y a une pente montante sur le signal

    delay_ms(18);

    convertiV5==convertiV;
    convertT4==convertV4-convertV5
    (convertT4>0)? go on:ledR=1 && return; //on regarde si il y a une pente montante sur le signal

    delay_ms(19);

    convertiV6==convertiV;
    convertT5==convertV5-convertV6
    (convertT5>0)? ledO=1:ledR=1 && return; //on regarde si il y a une pente montante sur le signal





    convertiV7==convertiV;

    delay_ms(6);

    convertiV8==convertiV;
    convertT6==convertV7-convertV8
    (convertT6<0)? go on:ledR=1 && return;

    delay_ms(5);

    convertiV9==convertiV;
    convertT7==convertV8-convertV9
    (convertT7<0)? go on:ledR=1 && return;

    delay_ms(6);

    convertiV10==convertiV;
    convertT8==convertV9-convertV10
    (convertT8<0)? go on:ledR=1 && return;

    delay_ms(5);

    convertiV11==convertiV;
    convertT9==convertV10-convertV11
    (convertT9<0)? go on:ledR=1 && return;

    delay_ms(6);

    convertiV12==convertiV;
    convertT10==convertV11-convertV12
    (convertT10<0)? ledO=1:ledR=1 && return;






    delay_ms(65);

    (economiV<9 && economiV>12)? ledV=1:ledR=1;
    delay_ms(20);
    (economiV<9 && economiV>12)? ledV=1:ledR=1;
    delay_ms(20);
    (economiV<9 && economiV>12)? ledV=1:ledR=1;
    delay_ms(20);
    (economiV<9 && economiV>12)? ledV=1:ledR=1 && return prog;
    delay_ms(20);
    }}

  4. #4
    invite364755f0

    Re : programmation en C (vérification...)

    meme s'il y a que 2 timer materiel, avec ca, tu peux faire bcp plus de timer logiciel!

  5. A voir en vidéo sur Futura
  6. #5
    jo-electrons

    Re : programmation en C (vérification...)

    Voici mon nouveau programme:
    Code:
    /****************************** ***********************
    This program was produced by the
    CodeWizardAVR V1.25.7a Evaluation
    Automatic Program Generator
    © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 05/06/2009
    Author : Freeware, for evaluation and non-commercial use only
    Company :
    Comments:


    Chip type : ATmega8515
    Program type : Application
    Clock frequency : 8,000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 128
    ****************************** ***********************/

    #include <mega8515.h>
    #include <delay.h>
    #include <math.h>


    #define freinV ~PINA.1
    #define imageI ~PINA.2
    #define convertiV ~PINA.3
    #define economiV ~PINA.4
    #define ledO ~PORTB.1
    #define ledR ~PORTB.2
    #define ledV ~PORTB.3
    #define warning ~PORTB.4

    // Declare your global variables here
    unsigned char convertiV1,convertiV2,converti V3,convertiV4,convertiV5,conve rtiV6,convertiV7,convertiV8,co nvertiV9;
    unsigned char convertiV10,convertiV11,conver tiV12,convertT1,convertT2,conv ertT3,convertT4,convertT5,conv ertT6;
    unsigned char convertT7,convertT8,convertT9, convertT10,convertV1,convertV2 ,convertV3,convertV4,convertV5 ;
    unsigned char convertV6,convertV7,convertV8, convertV9,convertV10,convertV1 1,convertV12,ledRR,ledOO,ledVV ;

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=T
    PORTA=0x00;
    DDRA=0xFE;

    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTC=0x00;
    DDRC=0xFF;

    // Port D initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTD=0x00;
    DDRD=0xFF;

    // Port E initialization
    // Func2=Out Func1=Out Func0=Out
    // State2=0 State1=0 State0=0
    PORTE=0x00;
    DDRE=0x07;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    EMCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;





    while((freinV<=0 && imageI<=0)) //alimentation correcte?
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;

    //--------------------------------------------------------//

    convertiV1=convertiV;

    delay_ms(19);


    convertiV2=convertiV;
    convertT1=convertV1-convertV2;
    while(convertT1<=0) //Pente montante?
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}


    delay_ms(18);

    convertiV3=convertiV;
    convertT2=convertV2-convertV3;
    while(convertT2<=0) //
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(19);

    convertiV4=convertiV;
    convertT3=convertV3-convertV4;
    while(convertT3<=0) //
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(18);

    convertiV5=convertiV;
    convertT5=convertV4-convertV5;
    while(convertT4<=0) //
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(19);

    convertiV6=convertiV;
    convertT5=convertV5-convertV6;
    while(convertT5<=0)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    //--------------------------------------------------------------//


    convertiV7=convertiV;

    delay_ms(6);

    convertiV8=convertiV;
    convertT6=convertV7-convertV8;
    while(convertT6>=0) //pente descendante?
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(5);

    convertiV9=convertiV;
    convertT7=convertV8-convertV9;
    while(convertT7>=0)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(6);

    convertiV10=convertiV;
    convertT8=convertV9-convertV10;
    while(convertT8>=0)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(5);

    convertiV11=convertiV;
    convertT9=convertV10-convertV11;
    while(convertT9>=0)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(6);

    convertiV12=convertiV;
    convertT10=convertV11-convertV12;
    while(convertT10>=0)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    //--------------------------------------------------------//

    convertiV1=convertiV;

    delay_ms(19);


    convertiV2=convertiV;
    convertT1=convertV1-convertV2;
    while(convertT1<=0) //Pente montante?
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(18);

    convertiV3=convertiV;
    convertT2=convertV2-convertV3;
    while(convertT2<=0) //
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(19);

    convertiV4=convertiV;
    convertT3=convertV3-convertV4;
    while(convertT3<=0) //
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(18);

    convertiV5=convertiV;
    convertT5=convertV4-convertV5;
    while(convertT4<=0) //
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(19);

    convertiV6=convertiV;
    convertT5=convertV5-convertV6;
    while(convertT5<=0)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;

    //-------------------------------------------------------------//



    delay_ms(65);

    while(9<economiV<12) //tension d'économie normalement à 10V correcte?
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(20);

    while(9<economiV<12)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(20);

    while(9<economiV<12)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(20);

    while(9<economiV<12)
    {ledRR=1;}
    ledOO=1;
    PORTB.2=ledRR;
    PORTB.1=ledOO;
    if(ledRR==1)
    {ledOO=0;
    PORTB.4=1;
    return;}

    delay_ms(20);

    while(9<economiV<12)
    {ledRR=1;}
    ledVV=1;
    PORTB.2=ledRR;
    PORTB.3=ledVV;
    if(ledVV==1)
    {ledOO=0;
    PORTB.3=1;
    return;} //led verte =>frein fonctionne correctement , si led orange en vérification , si led rouge =>mauvais fonctionnement
    }

    Est-ce que le return fait revenir au départ du programme?

  7. #6
    jo-electrons

    Re : programmation en C (vérification...)

    A mon sens je dois alléger les répétitions de groupe d'instruction mais aussi les variables qui sont vraiment de trop!

Discussions similaires

  1. vérification alim
    Par jef9200 dans le forum Électronique
    Réponses: 4
    Dernier message: 30/11/2008, 20h48
  2. un vérification
    Par inviteaf3c03b7 dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 22/09/2008, 21h18
  3. Verification
    Par invite52469444 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 30/09/2007, 16h09
  4. Verification
    Par invite47810f95 dans le forum Chimie
    Réponses: 2
    Dernier message: 27/05/2006, 21h36
  5. verification
    Par invite319e33a2 dans le forum Chimie
    Réponses: 8
    Dernier message: 09/12/2004, 17h40
Découvrez nos comparatifs produits sur l'informatique et les technologies.