programmation C du 12f629 - Page 11
Répondre à la discussion
Page 11 sur 14 PremièrePremière 11 DernièreDernière
Affichage des résultats 301 à 330 sur 412

programmation C du 12f629



  1. #301
    mictour

    Re : programmation C du 12f629


    ------

    ... Voici ce que je lis :

    IMPORTANT : GIE should normally NOT be set or cleared in

    the interrupt routine.
    GIE is AUTOMATICALLY cleared on

    interrupt entry by the CPU and set to 1 on exit (by

    RETFIE). Setting GIE to 1 inside the interrupt service

    routine will cause nested interrupts if an interrupt is

    pending. Too deep nesting may crash the program ! */

    Alors ?

    .. Mais elle y est Autant pour moi !
    Qu'attends-tu de ce test if ((sec==1200).(CAN>531)) ?

    A suivre ... mictour.

    -----

  2. #302
    marc2009

    Re : programmation C du 12f629

    Oui tu lis ça, donc GIE est automatiquement effacée ... et ne doit pas être mis dans la routine d'interruption ( ou j'ai mal compris )

    Qu'attends-tu de ce test if ((sec==1200).(CAN>531)) ?
    bah il démarre le moteur que si sec==1200 ( donc 20minutes passées, et si le résultat de la conversion est supérieur à 531 points nan ?

  3. #303
    mictour

    Re : programmation C du 12f629

    ... en résumé, GIE est automatiquement mis à zéro à l'entrée dans l'interruption
    et remis à un à la sortie ( pour éviter les redéclanchements).
    Au programmeur de valider ou non les interruptions dan son programme !

    Je te propose un petit bout de programme que j'avais modifié (avec l'aide de Microchip !!)
    pour un forum... en fait une petite maquette base de temps .

    #pragma chip PIC16F876
    #pragma config WDTE = off // Envoie le toutou dans sa niche !
    #include "int16CXX.h"

    bit in1 @ PORTB.0;
    bit out1 @ PORTA.1;
    bit flag1;
    char val1, val2, var1, var2, var3;

    #pragma origin 4
    interrupt intr(void)
    {
    int_save_registers


    if(TMR1IF)
    {
    TMR1H = 0x80;
    var1++;
    if (var1 > 59)
    {
    var1 = 0;
    var2++;
    if (var2 > 59)
    {
    var2 = 0;
    var3++;
    if (var3 > 12)
    {
    var3 = 1;
    flag1 = !flag1;
    }
    }
    }
    }
    TMR1IF = 0;

    int_restore_registers
    }

    void init(void)
    {
    ADCON1 = 0b.0000.0110; // PORTA en digital
    PORTA = 0b.0000.0000;
    TRISA = 0b.0000.0000; // tout en sortie
    PORTB = 0b.0000.0000;
    TRISB = 0b.0000.0001; // B0 en entrée
    OPTION = 0b.1100.0000; // Bit 6 = 1 pour interruption sur front montant
    INTE = 1;
    GIE = 1;
    }

    void main(void)
    {
    init();
    do // Boucle d'attente ..
    {
    if ((val1>10) && (val2 <4))
    nop();
    }
    while(1);
    }
    // ce bout de Prg tourne sur simulateur.


    if ((sec==1200).(CAN>531)) J'ecrirais if ((sec==1200)&&(CAN>531)) { ..} mais bon, si cà marche ...

    Pendant que j'y pense, ta bêêête à des comparateurs ?

    Bonne prog, mictour.

  4. #304
    marc2009

    Re : programmation C du 12f629

    Ton programme rejoint en partie le mien, avec quelques exceptions près

    Sinon, bah si j'ai bien compris, GIE n'est pas à mettre dans le programme ... j'en conclus que cc5x s'en occupe tout seul lors de la compilation ?!

    if ((sec==1200).(CAN>531)) J'ecrirais if ((sec==1200)&&(CAN>531)) { ..} mais bon, si cà marche ...
    j'ai pas encore essayé de compiler ... mais cc5x gère-t-il les 2 écritures ? ( peut etre )

    Pendant que j'y pense, ta bêêête à des comparateurs ?
    non le schéma électronique ne fait pas motion de comparateur, c'est le travail du pic

  5. #305
    mictour

    Re : programmation C du 12f629

    ... En relisant ton code je viens de voir que le test :
    if ((sec==1200).(CAN>531)) {moteur=1;if(sec==1201) {moteur=0;sec=0;}} ne fonctionnera pas (avec ou sans && ). Je te laisse deviner pourquoi ?

    mictour.

  6. #306
    marc2009

    Re : programmation C du 12f629

    bah je sais pas

    ca serait pas le ">" ?

  7. #307
    marc2009

    Re : programmation C du 12f629

    j'ai rajouté les && :
    Code:
    if ((sec==1200)&&(CAN>531)) {moteur=1;if(sec==1201) {moteur=0;sec=0;}}
    mais quand je compile, j'obtiens :
    Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: "C:\Program Files\bknd\CC5X\CC5X.EXE" pps.c -CC -fINHX8M -p12F675 -I"C:\Program Files\bknd\CC5X" -a -L -Q -V -FM
    CC5X Version 3.3A, Copyright (c) B Knudsen Data, Norway 1992-2007
    --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
    pps.c:
    Chip = 12F675
    RAM: 00h : -------- -------- -------- --------
    RAM: 20h : ==....** ******** ******** ********
    RAM: 40h : ******** ******** ******** ********
    RAM usage: 6 bytes (2 local), 58 bytes free
    Warning[1] D:\travail_PPE\divers\pied_par asol_project\pps.c 55 : Condition (or parts of it) is always false
    (This is superfluous code that can be removed - check for application bugs)
    Warning[2] D:\travail_PPE\divers\pied_par asol_project\pps.c 55 : Condition (or parts of it) is always false
    File 'pps.fcs'
    Optimizing - removed 0 instructions (-0 %)
    File 'pps.var'
    File 'pps.asm'
    File 'pps.lst'
    File 'pps.cod'
    File 'pps.occ'
    File 'pps.hex'
    Total of 85 code words (8 %)
    RESTRICTIONS on commercial usage applies as described in file readme.txt
    Loaded D:\travail_PPE\divers\pied_par asol_project\pps.COD.
    BUILD SUCCEEDED: Tue Apr 28 15:29:50 2009
    effectivement je crois que le > pose problème, ou c'est le 531 ...

  8. #308
    marc2009

    Re : programmation C du 12f629

    j'ai rien dit, je sais pourquoi !!!

  9. #309
    marc2009

    Re : programmation C du 12f629

    Alors voilà le programme modifié :
    Code:
    #pragma chip PIC12F675 // déclaration du pic
    //#pragma library 1
    //#pragma config |= 0x31E1
    #define sortie GPIO
    #define led GPIO2
    #define moteur GPIO1
    char irq;
    uns16 sec;
    uns16 CAN;
    
    #include "int16CXX.h" // fichier interruptions
    //------------------interruption-----------------------
    
    #pragma origin 4
    
    interrupt timer1( void)
    {
    	int_save_registers    // W, STATUS (and PCLATH if required)
    
           //char sv_FSR = FSR;  // save FSR if required
    
           // handle the interrupt (insert application code here)
    		if (TMR1IF) {++irq;TMR1H=6;ADCON0.1=1;TMR1IF=0;}
    
           //FSR = sv_FSR;       // restore FSR if saved
    
           int_restore_registers // W, STATUS (and PCLATH if required)
    
           /* IMPORTANT : GIE should normally NOT be set or cleared in
              the interrupt routine. GIE is AUTOMATICALLY cleared on
              interrupt entry by the CPU and set to 1 on exit (by
              RETFIE). Setting GIE to 1 inside the interrupt service
              routine will cause nested interrupts if an interrupt is
              pending. Too deep nesting may crash the program ! */
       }
    void main(void)
    
    {
    	TRISIO = 0b00111100;
    	OPTION = 0b10101000;
    	sortie = 0b00000010;
    	T1CON =  0b00000001;
    	CMCON =  0b00000111;
    	INTCON = 0b11000000;
    	PIE1 =   0b00000001;
    	ADCON0 = 0b00001001;
    	ANSEL =  0b00001011;
    	TMR1H=6;
    	TMR1L=0;	
    	CAN.high8 = ADRESH;
    	CAN.low8 =  ADRESL;
    for (;;) {
    		if (irq==8) {++sec;irq=0;}
    		if (CAN<531) {led=!led;}
    		if ((sec==1200)&&(CAN>531)) {moteur=1;if(sec==1201) {moteur=0;sec=0;}}
    }
    }
    Bon, il a bien compilé. Merci mictour !

    Par contre, que me conseilles tu de prendre pour les variables sec, irq et CAN ? CAN, tu m'as dit uns16, mais les 2 autres ? ( pour sec, j'ai pris uns16, je sais pas s'il y a plus optimisé ? )

    Merci

  10. #310
    Gérard

    Re : programmation C du 12f629

    Si tu pouvais faire un petit ordinogramme pour qu'on sache ce que tu veux exactement.

    J'ai l'impression qu'on est en train de se perdre un peu.

  11. #311
    marc2009

    Re : programmation C du 12f629

    Mais je t'ai déjà expliqué !

    Le système démarre, attente 20 minutes, démarrage moteur pendant 1 seconde, arret du moteur, attente de nouveau 20 minutes et ainsi de suite ...
    Ca c'est le fonctionnement de base. Si la tension de la batterie passe en dessous d'une certaine tension, alors --> clignotement du voyant ( y en a qu'un seul, il reste allumé dans le fonctionnement de base ) et "pause" du système ( donc pas de démarrage moteur tant que la tension n'est pas supérieure à 531 points )

    Voilà voilou

  12. #312
    mictour

    Re : programmation C du 12f629

    Heu...
    Code:
    if ((sec==1200)&&(CAN>531)) {moteur=1;if(sec==1201) {moteur=0;sec=0;}}
    
    Le fait d'écrire tout sur un ligne rend le code peu lisible.
    
      if ((sec==1200)&&(CAN>531))
       {
         moteur=1;
         if(sec==1201)
          {
          	moteur=0;
            sec=0;
          }
       }
          Vois tu mieux le problème comme ça ?
    Par contre, que me conseilles tu de prendre pour les variables sec, irq et CAN ?
    CAN, tu m'as dit uns16, mais les 2 autres ? ( pour sec, j'ai pris uns16, je sais pas s'il y a plus optimisé ? )


    Facile. Dès qu'un valeur peut dépassé 255 il te faut au moins une variable 16 bits.
    Donc : uns16 sec; uns16 CAN; uns8 irq; unsigned, pas de nombre négatif dans ton cas.

    Bonne soirée, mictour.

  13. #313
    Gérard

    Re : programmation C du 12f629

    On est au message 311, j'ai bien le droit d'oublier.

  14. #314
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    On est au message 311, j'ai bien le droit d'oublier.
    je plaisantais mon cher Gérard

  15. #315
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par mictour Voir le message
    Heu...
    Code:
    if ((sec==1200)&&(CAN>531)) {moteur=1;if(sec==1201) {moteur=0;sec=0;}}
    
    Le fait d'écrire tout sur un ligne rend le code peu lisible.
    
      if ((sec==1200)&&(CAN>531))
       {
         moteur=1;
         if(sec==1201)
          {
          	moteur=0;
            sec=0;
          }
       }
          Vois tu mieux le problème comme ça ?
    Par contre, que me conseilles tu de prendre pour les variables sec, irq et CAN ?
    CAN, tu m'as dit uns16, mais les 2 autres ? ( pour sec, j'ai pris uns16, je sais pas s'il y a plus optimisé ? )


    Facile. Dès qu'un valeur peut dépassé 255 il te faut au moins une variable 16 bits.
    Donc : uns16 sec; uns16 CAN; uns8 irq; unsigned, pas de nombre négatif dans ton cas.

    Bonne soirée, mictour.
    Ah c'est juste un problème de présentation... désolé mais j'ai l'habitude Mais le problème venait justement du type de variable ... donc à part CAN et sec, irq ne dépasse pas 8 .... donc j'hésite entre char, int et uns8 : c'est quoi le plus adapté ? ( en mémoire etc .. )

    pour CAN et sec, j'ai effectivement mis uns16

    ++

  16. #316
    mictour

    Re : programmation C du 12f629

    Bonsoir marc2009,

    Pour les variables, je pense t'avoir répondu...

    Mais le test ne fonctionnera pas.
    une présentation plus "visuelle" permet de mieux repérer ce genre de problème.
    Tu ne vois toujours pas ?
    Les deux instructions :
    moteur=0;
    sec=0;
    seront-elles exécutées ?

    Bonne soirée, mictour.

  17. #317
    marc2009

    Re : programmation C du 12f629

    voilà le programme modifié

    Code:
    #pragma chip PIC12F675 // déclaration du pic
    //#pragma library 1
    //#pragma config |= 0x31E1
    #define sortie GPIO
    #define led GPIO2
    #define moteur GPIO1
    uns8 irq;
    uns16 sec;
    uns16 CAN;
    
    #include "int16CXX.h" // fichier interruptions
    //------------------interruption-----------------------
    
    #pragma origin 4
    
    interrupt timer1( void)
    {
    	int_save_registers    // W, STATUS (and PCLATH if required)
    
           //char sv_FSR = FSR;  // save FSR if required
    
           // handle the interrupt (insert application code here)
    		if (TMR1IF) {++irq;TMR1H=6;ADCON0.1=1;TMR1IF=0;}
    
           //FSR = sv_FSR;       // restore FSR if saved
    
           int_restore_registers // W, STATUS (and PCLATH if required)
    
           /* IMPORTANT : GIE should normally NOT be set or cleared in
              the interrupt routine. GIE is AUTOMATICALLY cleared on
              interrupt entry by the CPU and set to 1 on exit (by
              RETFIE). Setting GIE to 1 inside the interrupt service
              routine will cause nested interrupts if an interrupt is
              pending. Too deep nesting may crash the program ! */
       }
    void main(void)
    
    {
    	TRISIO = 0b00111100;
    	OPTION = 0b10101000;
    	sortie = 0b00000010;
    	T1CON =  0b00000001;
    	CMCON =  0b00000111;
    	INTCON = 0b11000000;
    	PIE1 =   0b00000001;
    	ADCON0 = 0b00001001;
    	ANSEL =  0b00001011;
    	TMR1H=6;
    	TMR1L=0;	
    	CAN.high8 = ADRESH;
    	CAN.low8 =  ADRESL;
    for (;;) {
    		if (irq==8) {++sec;irq=0;}
    		if (CAN<531) {led=!led;}
    		if ((sec==1200)&&(CAN>531)) 
    					{moteur=1;}
    		if(sec==1201) 
    					{moteur=0;sec=0;}
    		if ((sec==1200)&&(CAN<531)) 
    					{sec=1199;}
    }
    }

  18. #318
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    je plaisantais mon cher Gérard
    OUFFFFF, je suis rassuré !

  19. #319
    mictour

    Re : programmation C du 12f629

    Et si on essayait de simplifier un peu, quelque chose comme :
    (à adapter et améliorer bien sur selon ton projet)

    Code:
     
    if (CAN<531)
     {
       led=!led;
     }
     else
     {
      if (sec==1200)
       {
        moteur=1;
       }
      if(sec>1200)   // pour être sur de stopper.
       {
        moteur=0;
        sec=0;
       }
     }
    Pour revenir à une autre question (Lecture du convertisseur) pourquoi pas dans ce test :
    Code:
     
      if (irq==8)
       {
        ++sec;
        irq=0;
        // lecture CAN ...
       }
    Qu'en pense-tu ? mictour.

  20. #320
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par Gérard Voir le message
    OUFFFFF, je suis rassuré !
    c'était ironique ou .. ??

  21. #321
    marc2009

    Re : programmation C du 12f629

    Voilà le nouveau code Mister

    Code:
    #pragma chip PIC12F675 // déclaration du pic
    //#pragma library 1
    //#pragma config |= 0x31E1
    #define sortie GPIO
    #define led GPIO2
    #define moteur GPIO1
    uns8 irq;
    uns16 sec;
    uns16 CAN;
    
    #include "int16CXX.h" // fichier interruptions
    //------------------interruption-----------------------
    
    #pragma origin 4
    
    interrupt timer1( void)
    {
    	int_save_registers    // W, STATUS (and PCLATH if required)
    
           //char sv_FSR = FSR;  // save FSR if required
    
           // handle the interrupt (insert application code here)
    		if (TMR1IF) {++irq;TMR1H=6;TMR1IF=0;}
    
           //FSR = sv_FSR;       // restore FSR if saved
    
           int_restore_registers // W, STATUS (and PCLATH if required)
    
           /* IMPORTANT : GIE should normally NOT be set or cleared in
              the interrupt routine. GIE is AUTOMATICALLY cleared on
              interrupt entry by the CPU and set to 1 on exit (by
              RETFIE). Setting GIE to 1 inside the interrupt service
              routine will cause nested interrupts if an interrupt is
              pending. Too deep nesting may crash the program ! */
       }
    void main(void)
    
    {
    	TRISIO = 0b00111100;
    	OPTION = 0b10101000;
    	sortie = 0b00000010;
    	T1CON =  0b00000001;
    	CMCON =  0b00000111;
    	INTCON = 0b11000000;
    	PIE1 =   0b00000001;
    	ADCON0 = 0b00001001;
    	ANSEL =  0b00001011;
    	TMR1H=6;
    	TMR1L=0;	
    	CAN.high8 = ADRESH;
    	CAN.low8 =  ADRESL;
    for (;;) {
    		if (irq==8) {++sec;irq=0;ADCON0.1=1;}
    
    		if (CAN<531)
     {
       led=!led;
       if (sec==1200) {sec=1199;}
     }
     else
     {
      if (sec==1200)
       {
        moteur=1;
       }
      if(sec>1200)   // pour être sur de stopper.
       {
        moteur=0;
        sec=0;
       }
     }
    
    }
    }

  22. #322
    Gérard

    Re : programmation C du 12f629

    Citation Envoyé par marc2009 Voir le message
    c'était ironique ou .. ??

    Ben oui !

    Bonne nuit.

  23. #323
    mictour

    Re : programmation C du 12f629

    Bonjour marc2009,

    As-tu une idée de la valeur dans "CAN"
    au moment de test if ( CAN < 531) ... ?
    Moi, aucune ! (Selon datasheet : valeur indéterminée).
    ADRESH = xxxx xxxx; ADRESL : idem.

    Bonne journée ... quand même. mictour.

  24. #324
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par mictour Voir le message
    Bonjour marc2009,

    As-tu une idée de la valeur dans "CAN"
    au moment de test if ( CAN < 531) ... ?
    Moi, aucune ! (Selon datasheet : valeur indéterminée).
    ADRESH = xxxx xxxx; ADRESL : idem.

    Bonne journée ... quand même. mictour.
    bah, quand il fait une conversion, ces 2 variables ( ADRESH et ADRESL ) contiennent une valeur non ?

    ps : OPTION, je dois le configurer, ou pas ( je le vire du code ? ) ?

  25. #325
    marc2009

    Re : programmation C du 12f629

    ah, j'avais pas fait attention que j'avais pas modifié le registre ADCON0 oui, les 2 derniers bits devraient être à 1 ...

  26. #326
    mictour

    Re : programmation C du 12f629

    Bonjour marc2009,

    ah, j'avais pas fait attention que j'avais pas modifié le registre ADCON0 oui, les 2 derniers bits devraient être à 1 ...
    Celle-là, je ne l'avais pas vue ! Voyons le datasheet :

    Note: The GO/DONE bit should not be set in the
    same instruction that turns on the A/D.


    Donc ADON pas dans la même instruction que GO.
    De plus ecrire ADCON0 = 0b.0000.1011 (par exemple)
    est beaucoup moins lisible, et donc moins facile à comprendre
    et/ou à modifier que :
    ADFM = n;
    CHS0 = n;
    CHS1 = n;
    ADON = 1;
    GO = 1;

    Et le #323 est toujours d'actualité...
    bah, quand il fait une conversion, ces 2 variables ( ADRESH et ADRESL ) contiennent une valeur non ?
    ... A condition que l'affectation ai lieu !

    Bonne journée, mictour.

  27. #327
    mictour

    Re : programmation C du 12f629

    Ah, j'ai oublié !
    ps : OPTION, je dois le configurer, ou pas ( je le vire du code ? ) ?

    C'est préférable de le configurer, entre autre pour éviter les valeurs indéterminées
    au démarage et reset ..

    Voyons le datasheet :
    Registre OPTION :
    bit 7 GPPU: GPIO Pull-up Enable bit
    1 = GPIO pull-ups are disabled
    0 = GPIO pull-ups are enabled by individual port latch values

    bit 6 INTEDG: Interrupt Edge Select bit
    1 = Interrupt on rising edge of GP2/INT pin
    0 = Interrupt on falling edge of GP2/INT pin
    Donc selon tes besoins.
    bit 5 à bit 0 : tous à zéro.
    ... mictour.

  28. #328
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par mictour Voir le message
    Bonjour marc2009,

    ah, j'avais pas fait attention que j'avais pas modifié le registre ADCON0 oui, les 2 derniers bits devraient être à 1 ...
    Celle-là, je ne l'avais pas vue ! Voyons le datasheet :

    Note: The GO/DONE bit should not be set in the
    same instruction that turns on the A/D.


    Donc ADON pas dans la même instruction que GO.
    De plus ecrire ADCON0 = 0b.0000.1011 (par exemple)
    est beaucoup moins lisible, et donc moins facile à comprendre
    et/ou à modifier que :
    ADFM = n;
    CHS0 = n;
    CHS1 = n;
    ADON = 1;
    GO = 1;

    Et le #323 est toujours d'actualité...
    bah, quand il fait une conversion, ces 2 variables ( ADRESH et ADRESL ) contiennent une valeur non ?
    ... A condition que l'affectation ai lieu !

    Bonne journée, mictour.
    Donc si j'écris
    Code:
    ADON = 1;
       GO = 1;
    ( avec les autres bits du registre ) plutôt que ADCON0=0b.... ça marche ?

    De plus ecrire ADCON0 = 0b.0000.1011 (par exemple)
    est beaucoup moins lisible, et donc moins facile à comprendre
    Mais c'est comme ça pour configurer les registres, je ne vais pas m'amuser à configurer chaque bit de res registres

  29. #329
    marc2009

    Re : programmation C du 12f629

    Citation Envoyé par mictour Voir le message
    Ah, j'ai oublié !
    ps : OPTION, je dois le configurer, ou pas ( je le vire du code ? ) ?

    C'est préférable de le configurer, entre autre pour éviter les valeurs indéterminées
    au démarage et reset ..

    Voyons le datasheet :
    Registre OPTION :
    bit 7 GPPU: GPIO Pull-up Enable bit
    1 = GPIO pull-ups are disabled
    0 = GPIO pull-ups are enabled by individual port latch values

    bit 6 INTEDG: Interrupt Edge Select bit
    1 = Interrupt on rising edge of GP2/INT pin
    0 = Interrupt on falling edge of GP2/INT pin
    Donc selon tes besoins.
    bit 5 à bit 0 : tous à zéro.
    ... mictour.
    oui le bit 7 je vais le mettre à 1, mais pour les autres je vois pas quoi mettre .. je ne veux pas du timer0, et les interruptions, je ne les utilise pas ...

  30. #330
    marc2009

    Re : programmation C du 12f629

    Code:
    #pragma chip PIC12F675 // déclaration du pic
    //#pragma config |= 0x31E1
    #define sortie GPIO
    #define led GPIO2
    #define moteur GPIO1
    uns8 irq;
    uns16 sec;
    uns16 CAN;
    
    #include "int16CXX.h" // fichier interruptions
    //------------------interruption-----------------------
    
    #pragma origin 4
    
    interrupt timer1( void)
    {
    	int_save_registers    // W, STATUS (and PCLATH if required)
    
           //char sv_FSR = FSR;  // save FSR if required
    
           // handle the interrupt (insert application code here)
    		if (TMR1IF) {++irq;TMR1H=6;TMR1IF=0;}
    
           //FSR = sv_FSR;       // restore FSR if saved
    
           int_restore_registers // W, STATUS (and PCLATH if required)
    
           /* IMPORTANT : GIE should normally NOT be set or cleared in
              the interrupt routine. GIE is AUTOMATICALLY cleared on
              interrupt entry by the CPU and set to 1 on exit (by
              RETFIE). Setting GIE to 1 inside the interrupt service
              routine will cause nested interrupts if an interrupt is
              pending. Too deep nesting may crash the program ! */
       }
    void main(void)
    
    {
    	TRISIO = 0b00111100;
    	OPTION = 0b11000000;
    	sortie = 0b00000010;
    	T1CON =  0b00000001;
    	CMCON =  0b00000111;
    	INTCON = 0b11000000;
    	PIE1 =   0b00000001;
    	ANSEL =  0b01000001;
    	ADCON0 = 0b10000001;
    	GO=1;
    	TMR1H=6;
    	TMR1L=0;	
    	CAN.high8 = ADRESH;
    	CAN.low8 =  ADRESL;
    for (;;) {
    		if (irq==8) {++sec;irq=0;GO=1;}
    
    		if (CAN<531)
     {
       led=!led;
       if (sec>1200) {moteur=0;}
       if (sec==1200) {sec=1199;}
     }
     else
     {
      if (sec==1200)
       {
        moteur=1;
       }
      if(sec>1200)   // pour être sur de stopper.
       {
        moteur=0;
        sec=0;
       }
     }
    
    }
    }
    bon, plusieurs choses à demander mon cher mictour ^^

    1) Comment en C faire le "ou" ? ( le "et" c'est le "." ou "&&" )

    2) Est ce que si je mets
    Code:
    ANSEL =  0b01000001;
    ADCON0 = 0b10000001;
    GO=1;
    c'est bon ou la remarque du datasheet est toujours valable, même comme ça ?

    3) La patte GP0, celle dont je vais connecter au pont diviseur, est à mettre en analogique, c'est bien ca ?

    Merci

Page 11 sur 14 PremièrePremière 11 DernièreDernière

Discussions similaires

  1. Probleme de programmation (PIC 12F629 )la seconde fois
    Par alainav1 dans le forum Électronique
    Réponses: 7
    Dernier message: 26/03/2009, 16h06
  2. lire un pic 12f629
    Par invite6ce15d51 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/06/2008, 10h48
  3. Micro- programmes PIC 12f629
    Par invite12ff0607 dans le forum Électronique
    Réponses: 7
    Dernier message: 11/02/2008, 00h46
  4. Quel programateur pour le pic 12f629
    Par jojo86 dans le forum Électronique
    Réponses: 4
    Dernier message: 21/08/2006, 22h04
  5. Programmation 3D
    Par invite769675d7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/11/2005, 06h07
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...