Fonction En C [Résolu]

Signaler
Messages postés
9
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
10 mai 2011
-
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
-
Bonjour

Alors je dois transformer les fonctions MIL, CEN, DIX et UNI en une seule je sais qu'il faut mettre des argument genre void fonction(argument) mais je suis bloqué la car je ne sais pas commetn faire. Un petit coup de pouce ne sera pas de refu :)



#include <mega103.h>
#include <delay.h>

unsigned char M;
unsigned char C;
unsigned char D;
unsigned char U;

void MIL(void)
{
    if(M==0)
    {
        PORTB= 0xC0;
    }
    
    if(M==1)
    {
        PORTB=0xF9;
    }
     
    if(M==2)
    {
        PORTB=0xA4;
    }  
    
    if(M==3)
    {
        PORTB=0xB0;
    }

    if(M==4)
    {
        PORTB=0x99;
    }
    
    if(M==5)
    {
        PORTB=0x92;
    }
    
    if(M==6)
    {
        PORTB=0x82;
    }  
    
    if(M==7)
    {
        PORTB=0xF8;
    } 
    
    if(M==8)
    {
        PORTB=0x80;
    }
    
    if(M==9)
    {
        PORTB=0x90;
    } 
    
    PORTE=0x01;
    delay_us(65);
}

void CEN(void)
{
    if(C==0)
    {
        PORTB= 0xC0;
    }
    
    if(C==1)
    {
        PORTB=0xF9;
    }
     
    if(C==2)
    {
        PORTB=0xA4;
    }  
    
    if(C==3)
    {
        PORTB=0xB0;
    }

    if(C==4)
    {
        PORTB=0x99;
    }
    
    if(C==5)
    {
        PORTB=0x92;
    }
    
    if(C==6)
    {
        PORTB=0x82;
    }  
    
    if(C==7)
    {
        PORTB=0xF8;
    } 
    
    if(C==8)
    {
        PORTB=0x80;
    }
    
    if(C==9)
    {
        PORTB=0x90;
    } 
    
    PORTE=0x02;
    delay_us(65);
}
void DIX(void)
{
    if(D==0)
    {
        PORTB= 0xC0;
    }
    
    if(D==1)
    {
        PORTB=0xF9;
    }
     
    if(D==2)
    {
        PORTB=0xA4;
    }  
    
    if(D==3)
    {
        PORTB=0xB0;
    }

    if(D==4)
    {
        PORTB=0x99;
    }
    
    if(D==5)
    {
        PORTB=0x92;
    }
    
    if(D==6)
    {
        PORTB=0x82;
    }  
    
    if(D==7)
    {
        PORTB=0xF8;
    } 
    
    if(D==8)
    {
        PORTB=0x80;
    }
    
    if(D==9)
    {
        PORTB=0x90;
    } 
    
    PORTE=0x04;
    delay_us(65);
}

void UNI(void)
{
    if(U==0)
    {
        PORTB= 0xC0;
    }
    
    if(U==1)
    {
        PORTB=0xF9;
    }
     
    if(U==2)
    {
        PORTB=0xA4;
    }  
    
    if(U==3)
    {
        PORTB=0xB0;
    }

    if(U==4)
    {
        PORTB=0x99;
    }
    
    if(U==5)
    {
        PORTB=0x92;
    }
    
    if(U==6)
    {
        PORTB=0x82;
    }  
    
    if(U==7)
    {
        PORTB=0xF8;
    } 
    
    if(U==8)
    {
        PORTB=0x80;
    }
    
    if(U==9)
    {
        PORTB=0x90;
    } 
    
    PORTE=0x08;
    delay_us(65);
}

void main(void)
{   
    DDRB= 0xFF;
    PORTB= 0x00;
    
    DDRE= 0xFF;
    PORTE= 0x00;
    
    while(1)
    {
        M=9;
        C=8;
        D=7;
        U=1;
        
        MIL();
        CEN();
        DIX();
        UNI();
    }
}



PS: compilateur CVAVR.

2 réponses

Messages postés
9
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
10 mai 2011

C'est bon résolu .
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
A la place des "if" utilise "switch" le code n'en sera que plus lisible et maintenable.


louis