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

programmation du pic 16f7876



  1. #1
    issamty

    programmation du pic 16f7876


    ------

    Bonjour,tous .
    j'ai redige ce programme en laguage C du pic en utilisant le compiler CCS C, son but est de gener des impulsions afin de commander un petit moteur , j'ai pris en consideration le compteur 0 ( 8 bits ) pour les interruptions du pic 16f876 j'ai mis en oeuvre 2 boutons ( chacune a un sens ).

    quelqu'un peut me dire si programme est juste sinon ou est la ou les fautes .

    Code:
    #include <16f876.h> 
    #fuses HS,NOWDT,NOPROTECT 
    #use delay(clock=20000000) 
    //******************* 
    // variables globales 
    //******************* 
    int16 COMPTEUR1; 
    int COMPTEUR2, SENS; 
    int1 SIGNAL; 
    //****************** 
    // DEFINE 
    //****************** 
    #define TIME 4 // TIMER=3 --> 256-3=253 pas 
    #define 18MS 360 // 360*50=18000µs 
    #define AV 40 // 40*50 =2000µs 
    #define AR 20 // 20*50 =1000µs 
    #define STOP 30 // 30*50 =1500µs 
    #define PORT_SIGNAL PIN_B0 
    #define ENTREE1 PIN_B5 
    #define ENTREE2 PIN_B2 
    //****************** 
    //Interruptions 
    //****************** 
    #int_timer0 // Interruption toutes les (4*250)/20000000 = 50µs 
    main_int () { 
    set_timer0(TIME); 
    if (++COMPTEUR1 == 360) { 
    COMPTEUR1=0; 
    COMPTEUR2=0; 
    SIGNAL=1; 
    output_high(PORT_SIGNAL); 
    } 
    else { 
    if (SIGNAL==1) { 
    if (COMPTEUR2++ == SENS) { 
    SIGNAL=0; 
    output_low(PORT_SIGNAL); 
    } 
    } 
    } 
    } 
    //********************** 
    // Fonctions 
    //********************** 
    void init_timer () { 
    set_timer0(TIME); 
    setup_counters(RTCC_INTERNAL,WDT_18MS); 
    enable_interrupts(INT_RTCC); 
    enable_interrupts(GLOBAL); 
    } 
    //********************** 
    // Programme principal 
    //********************** 
    main() { 
    init_timer(); 
    while (TRUE) { // boucle sans fin 
    if ((Input(ENTREE1)==1) && (Input(ENTREE2)==0)) 
    SENS=AV; 
    if (((input(ENTREE1)==0) && (input(ENTREE2)==0))|| ((input(ENTREE1)==1) && (input(ENTREE2)==1))) 
    SENS=STOP; 
    if ((input(ENTREE1)==0) && (input(ENTREE2)==1)) 
    SENS=AR; 
    } 
    }

    et merci d'avance .

    -----
    Dernière modification par HULK28 ; 08/03/2009 à 13h01. Motif: Ajout des balise CODE

Discussions similaires

  1. Programmation PIC
    Par katmai dans le forum Électronique
    Réponses: 4
    Dernier message: 07/08/2008, 19h40
  2. programmation pic
    Par mymysande dans le forum Électronique
    Réponses: 0
    Dernier message: 05/05/2008, 18h02
  3. erreur 0X00 programmation PIC plus questions sur les PIC
    Par ROTT dans le forum Électronique
    Réponses: 4
    Dernier message: 22/07/2007, 14h36
  4. programmation PIC
    Par Mr.Volt dans le forum Électronique
    Réponses: 2
    Dernier message: 18/08/2006, 14h38
  5. Programmation En Pic
    Par MEMOR dans le forum Électronique
    Réponses: 7
    Dernier message: 18/05/2006, 08h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.