Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

programmation des pic sous ccs c



  1. #1
    chachah

    programmation des pic sous ccs c

    bonjour, je suis débutant en programmation en c des pic donc je planche actuellement sur l'instruction switch case , je suis entrain de programmer un
    16F877 avec 2 boutons poussoir connecter sur RB0 et RB1 donc quand j'appuis sur RB0 j'allume une led sur RC0 et RB1 une led sur RC1 ,le principe c'est apprendre à utiliser l'instruction switch case ce n'est pas l'allumage des led je sais qu'il a d'autre programme j'ai fait ce programme mais sa ne marche pas la simulation c'est par proteus

    #include <16F877.h>
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=8000000)
    #define inter1 pin_b0
    #define inter2 pin_b1
    #define led1 pin_c1
    #define led2 pin_c2

    void main(){
    int x=0 ;
    x=inter1;
    x=inter2;
    switch(x){
    case'1':
    if(x==1)
    output_high(pin_c1);
    break;
    case'2':
    if(x==1)
    output_high(pin_c2);
    break; }
    }
    merci de m'expliquer le fonctionnement de cette instruction

    -----


  2. Publicité
  3. #2
    guillaume83

    Re : programmation des pic sous ccs c

    bonsoir, votre bonheur cijoint.
    les base du c pour pic18F mais le c reste du c.
    @+
    Fichiers attachés Fichiers attachés

  4. #3
    chachah

    Re : programmation des pic sous ccs c

    bonjour, je n'arrive toujours pas à comprendre le principe de cette instruction, j'ai essai avec un autre exemple qui a le même principe mais sa donne rien , y'a t'il quelle-qu’un qui peut me débloquer voila le programme que j'ai fait
    #include <16F877.h>
    #fuses HS,NOWDT,NOPROTECT
    #use delay(clock=10000000)
    #byte port_b=0x03
    #byte port_c=0x03
    Int8 val ;


    Void main() {
    val=input_b(); / recupérer l'entrée du port_b dan't la valeur est soit 00000001,00000010,00000011,par une variable (val)

    while((val>= 0x01& val<=0x03)) / l'interval pour le switch qui va correspendre aux adresses du port_b
    while(true){
    Switch(val)
    {
    Case 0x01: / je met Rb0=1 par le bouton poussoir
    output_c(0x01); / la sortie de Rc0=1
    Break; / attendre
    Case 0x03: / je met Rb0=1,Rb1=1
    output_c(0x00); / sortie de Rc0=0,Rc1=0
    Break;
    while(true)
    {
    output_c(val); / executer la recuperation des données sur le port C
    }
    }
    }
    }

  5. #4
    guillaume83

    Re : programmation des pic sous ccs c

    bonjours,
    en premier, un petit conseil pour plus de lisibilitée de ton code , créer des espaces et des décalage pour les differents blocs:


    main{
    .......
    ......
    .......

    if{
    ......
    ......
    }//end if

    for{
    .....
    }//end for
    ......
    ......
    .....
    }//end main



    Ca permet d'y voir plus clair et de bien repérer les groupes et les fins de bloc ( if{........})

    pour le switch case:
    cela permet de remplacer une série de if, tu pourrais aussi ecrire
    if (portc==1){faire quelque chose}
    if (PORTC==0){faire autre chose}
    en general on utilise les if quand il n'y a pas baucoup de test.

    qu'as tu exactement comme problémes?
    je crois qu'il manque une } à la fin du dernier case .
    @+
    Dernière modification par guillaume83 ; 05/09/2011 à 14h10.

  6. #5
    guillaume83

    Re : programmation des pic sous ccs c

    voici un exemple de switch:
    Code:
            switch(OUTPacket.CMD)
            {
    
    
             case READ_VERSION:
             INPacket._byte[2] = MINOR_VERSION;
             INPacket._byte[3] = MAJOR_VERSION;
                  counter=0x04;
                    break;
    
    
    	    case WRITE_RAM  :
    		flagbits.demare_echantillon=1;
    	//	delai=OUTPacket._byte[1];
            counter = 0x03;
                    break;
    
    	    case READ_RAM  :
    		//ad.add=OUTPacket._word[1]; 
    		//ad.adds.addl=OUTPacket._byte[1];
    		//ad.adds.addh=OUTPacket._byte[2];
    		lecture64b(OUTPacket._word[1]);			
            counter = 64;
                    break;
    		
    		case TEST_RAM :
    		testram();
            counter=0x01;
    		break;
    
    		case ECRIRE_OCTET :
    		ad.adds.addl=OUTPacket._byte[1];
    		ad.adds.addh=OUTPacket._byte[2];
    		ecrireunoctet(OUTPacket._byte[3]);
    		counter=0x01;
    		break;
    
    		case LECTURE_OCTET :
    		ad.adds.addl=OUTPacket._byte[1];
    		ad.adds.addh=OUTPacket._byte[2];
    		//INPacket._byte[0]= 6; 
    		INPacket._byte[1]= lectureoctet();
    		counter=0x02;
    		break;
    
            case ID_BOARD:
              counter = 0x01;
                    if(OUTPacket.ID == 0)
                    {
                        mLED_3_Off();mLED_4_Off();
                    }
                    else if(OUTPacket.ID == 1)
                    {
                        mLED_3_Off();mLED_4_On();
                    }
                    else if(OUTPacket.ID == 2)
                    {
                        mLED_3_On();mLED_4_Off();
                    }
                    else if(OUTPacket.ID == 3)
                    {
                        mLED_3_On();mLED_4_On();
                    }
                    else
                        counter = 0x00;
                    break;
    
                    
                case RESET:
                    Reset();
                    break;
                    
                default:
                    Nop();
                    break;
            }//end switch()
    @+
    Dernière modification par guillaume83 ; 05/09/2011 à 14h19.

  7. A voir en vidéo sur Futura
  8. #6
    dededu72

    Re : programmation des pic sous ccs c

    rajoute le case : défaut ou un truc du genre

  9. Publicité
  10. #7
    chachah

    Re : programmation des pic sous ccs c

    merci pour votre explication mon porbleme est que je n'arrive pas à comprendre l'utilisation en met quoi dans le switch je sait que c'est une variable et on met quoi dans le case c'est pour cela que j'essai de faire sa avec bouton poussoir et des leds ,en essayant de mettre en pratique la variable qui est normalement le bouton poussoir et la led qui est un récupérateur de cette variable , pour mon programme je le compile ,mais quand je le simule sur isis sa ne donne rien ,donc j’aimerai bien que vous me corrigiez mon programme merci infiniment

  11. #8
    HULK28

    Re : programmation des pic sous ccs c

    Citation Envoyé par chachah Voir le message
    merci pour votre explication mon porbleme est que je n'arrive pas à comprendre l'utilisation en met quoi dans le switch je sait que c'est une variable et on met quoi dans le case c'est pour cela que j'essai de faire sa avec bouton poussoir et des leds ,en essayant de mettre en pratique la variable qui est normalement le bouton poussoir et la led qui est un récupérateur de cette variable , pour mon programme je le compile ,mais quand je le simule sur isis sa ne donne rien ,donc j’aimerai bien que vous me corrigiez mon programme merci infiniment
    Commence à y aller par étapes:

    Code:
    #define BP1 PORTB.F1
    #define BP2 PORTB.F2
    #define LED1 PORTB.F3
    #define LED2 PORTB.F4
    
    PORTB=0;
    TRISB=0b11100111; // port 3 et 4 en sortie pour les leds, le reste en entrée
    
    unsigned char n_BP = 0; //déclaration de la variable qui reçoit le résultat de test_BP();
    
    unsigned short test_BP(){
    
    if (BP1) return(1);
    if (BP2) return(2);
    }
    
    main(){
    .........
    n_BP = test_BP();
    
    .........
    
    switch(n_BP) // la variable: là tu envoies la variable à traiter issue d'une reconnaissance du BP appuyé par exemple en utilisant la fonction juste au dessus.
            { 
            case 1 :   LED1 = 1;break; // C'est le BP n°1 donc on allume la led n°1
            case 2 :   LED2 = 1; break;// etc...
            defaut   : LED1=0; 
                          LED2=0; break; //Si c'est pas BP1 ou BP2 alors on allume rien du tout.
            }
    }
    Pas tester du tout bien sur mais c'est pour te mettre sur la voie.
    Si ça fonctionne tu compliqueras ensuite petit à petit, test après test, tant que ça ne fonctionne pas ne vas pas plus loin.
    @+
    Dernière modification par HULK28 ; 06/09/2011 à 23h38.
    Tout est bien qui finit.

  12. #9
    guillaume83

    Re : programmation des pic sous ccs c

    bonjour,
    si le code compile , c'est casi sur que le programme est ecri correctement .
    apres une simulation simule ce que tu lui donne , elle ne c'est pas par avance ce que tu veus faire.
    donc si tu n' as pas configuré les ports ou l'oscillateur forcement les tests et opérations du programmes
    s'effectueront avec les mauvaises données.
    comme le dit HULK commence par le debut.
    essai en premier d'allumer une led aprés le démarage du programme et configration des ports.
    puit tu pourras passer a des tests de boutons .
    (une simulation sous mpal c18 permet de voi l'interieur des registrs et les variables, c'est quand même fachement plus facile pour "voire ce qui cloche".
    je ne sais pas si ccs et isi permettent ca , mais pour l'apprentissage et le débogage d'un µp c'est mieux de savoir ce qui cepasse dedans et pouvoir suivre l'évolution des variables)
    @+

  13. #10
    HULK28

    Re : programmation des pic sous ccs c

    Relis toi Guillaume s'il te plait, rien ne presse quand tu réponds.
    Tout est bien qui finit.

  14. #11
    guillaume83

    Re : programmation des pic sous ccs c

    Houlala!!!!!! encore endormi ce matin.

  15. #12
    dededu72

    Re : programmation des pic sous ccs c

    si si ccs le permet, dans mplab, tu à les watch qui sont utilisable en débogage

  16. Publicité
  17. #13
    guillaume83

    Re : programmation des pic sous ccs c

    Ha!!!! Donc il peut "regarder" un peu ces variables et le comportement de son programme avec le simu de ccs et quand tout semble au point il passe sue isi.
    @+

Sur le même thème :

Discussions similaires

  1. Programmation des PIC 18F452 en C
    Par biganos dans le forum Électronique
    Réponses: 3
    Dernier message: 17/11/2009, 17h50
  2. Programmation sous Flowcode d'un PIC 16F84
    Par bboytom dans le forum Électronique
    Réponses: 9
    Dernier message: 18/03/2009, 17h02
  3. programmer les pic avec CCs
    Par karim3181 dans le forum Électronique
    Réponses: 1
    Dernier message: 18/03/2007, 15h59
  4. Réponses: 0
    Dernier message: 18/03/2007, 15h43
  5. Programmation des PIC
    Par joe.ldn dans le forum Électronique
    Réponses: 0
    Dernier message: 10/05/2005, 00h12