Aller au contenu


Contenu de nebukadnezare

Il y a 9 élément(s) pour nebukadnezare (recherche limitée depuis 05-mai 13)


#65430 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 07:43 dans Programmation

:D  un Bize c'est quelqu'un de très sympa. 




#65426 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 04:25 dans Programmation

ok voila sa marche nickel en modifiant le temps de la condition " if(Button(&PORTD,0,500,0)) .... super sympa mike118 t'est un BIZE :). mais n’empêche ,s'il y a des truc en trop ou d'éventuel amélioration je t'en prie.




#65425 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 04:14 dans Programmation

 while(1) {

           if(plus==0){delay_ms(100);if(plus==0)                      // BP PLUS TEMPS
        {  if(count<TMAX)  count++;}}

           if(moins==0){delay_ms(100);if(moins==0)                    //BP MOINS TEMPS
        {  if(count>TMIN) count--;}}
           
           
           if (Button(&PORTD, 0, 1, 0)) {oldstate = 1;delay_ms(10);   //CONDITION POUR UTILISE LE BP PLUS ET MOINS
           if (oldstate && Button(&PORTD, 1, 5, 0))                   //POUR UNE MEMORISATION
             {
               EEPROM_Write(0x00, count);                             // MEMORISATION DES VALEURS
               delay_ms(10);
               EEPROM_Write(0x01, count>>1);
               delay_ms(10);oldstate = 0;}}

          
          if(start==0)                                                // BP DEBUT DECOMPTAGE
          { count--; delay_ms(100);
                {if (count == TMIN)                                   // CONDITION
                {PORTC=0xff;                                          // ACTIVATION RELAY.
                delay_ms(2000);                                       // ...2S
                count= (EEPROM_Read(0x01)<<1);
                count  |=EEPROM_Read(0x00);
                PORTC=0;
                 } } }

Encore une petit amélioration, mais des fois au lieu qu'il mémorise il acrémente ou décrémente .




#65423 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 03:38 dans Programmation

et aussi le premier code que je t'ais envoyer n’étais qu'un test pour que je comprenne bien les BP




#65422 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 03:36 dans Programmation

unsigned short mask (unsigned short num){
switch(num)
{
case 0:return         0x7e;
case 1:return         0x30;
case 2:return         0x6d;
case 3:return         0x79;
case 4:return         0x33;
case 5:return         0x5b;
case 6:return         0x5f;
case 7:return         0x70;
case 8:return         0x7F;
case 9:return         0x73;

//case 0: PORTB        = 63; break;
//case 1: PORTB        = 6; break;
//case 2: PORTB        = 91; break;
//case 3: PORTB        = 79; break;
//case 4: PORTB        = 102; break;
//case 5: PORTB        = 109; break;
//case 6: PORTB        = 125; break;
//case 7: PORTB        = 7; break;
//case 8: PORTB        = 127; break;
//case 9: PORTB        = 111; break;
}
}
#define bouton_plus PORTD.RD0
#define bouton_moins PORTD.RD1
#define bouton_start PORTD.RD2
#define bouton_select PORTD.RD3
#define appui_bouton(b) (!(b))
#define TEMPS_MAX 9999
#define TEMPS_MIN 0
#define TICK_DELAY_MS 1
unsigned int count = 0;
unsigned int count1 = 0;
unsigned int count2 = 0;
unsigned int count3 = 0;
unsigned int count4 = 0;
unsigned int meme = 2;
unsigned int nombre;

unsigned short i;
void Interrupt(){

                
                
                
                count4= (count/1000)%10;                        // AFFICHAGE 0000
                count3= (count/100)%10;
                count2 = (count/10)%10;
                count1 = count%10;
                if(i==0) {PORTA = 0xf7; portb=mask(count1);}
                if(i==1) {PORTA = 0xfb; portb=mask(count2);}
                if(i==2) {PORTA = 0xfd; portb=mask(count3);}
                if(i==3) {PORTA = 0xfe; portb=mask(count4);}
                i++;if (i==4) i=0 ;
                INTCON = 0xA0;
                TMR0   = 6;
                 }


void main(void)
{
  OPTION_REG   = 0x82;
  TMR0         = 6;
  INTCON       = 0xA0;
  count= (EEPROM_Read(0x01)<<1);
  count  |=EEPROM_Read(0x00);


TRISA = 0x00;
TRISB = 0x00;
PORTA = 0x00;
PORTB = 0x00;
TRISD = 0xff;
PORTD = 0x00;
TRISC = 0x00;
PORTC = 0x00;
          
           while(1)
        {
           if(appui_bouton(bouton_plus))                               // BP PLUS TEMPS
        {  if(count<TEMPS_MAX) delay_ms(50); count++;}

       if(appui_bouton(bouton_moins))                                  //BP MOINS TEMPS
        { if(count>TEMPS_MIN) delay_ms(50);count--;}
           
         if(appui_bouton(bouton_moins)&&appui_bouton(bouton_plus))    //PLUS ET MOINS POUR LA MEMORISATION
        {   delay_ms(2000);
            EEPROM_Write(0x00, count);                                // Mémorisation de la valeur
            delay_ms(10);
            EEPROM_Write(0x01, count>>1);
            delay_ms(10);}

          
          if(appui_bouton(bouton_start))                              // BP DEBUT DECOMPTAGE
          { count--; delay_ms(500);
                {if (count == TEMPS_MIN)                              // CONDITION
                {PORTC=0xff;                                          // ACTIVATION PORTC RELAY 3S
                delay_ms(3000);
                count= (EEPROM_Read(0x01)<<1);
                count  |=EEPROM_Read(0x00);
                PORTC=0;
                 } } }



} }

ok voila rien ne vaut une photo et un code, si tu veux je peut t’envoyer le fichier ISIS 7.9 et le code source pour bien voire . le code marche bien sauf que des fois sa ne mémorise pas directement. si tu voie des truck a nettoyer au niveau code n’hésite pas .

NB. sa fait que 2 mois que je programme alors soit clément :)

Image(s) jointe(s)

  • schema decompteur.jpg



#65415 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 03:33 dans Programmation

C'est presque sa juste que je veux utilisé le BP plus et moins a l'incrementation et decrementation normal mais en plus je veux les utilises pour mémorisé soit en appuie prologer ou simultane,pour le reset et le start pas de problème .et vraiment merci.



#65413 mikroc

Posté par nebukadnezare sur 04 octobre 2015 - 12:45 dans Programmation

#define plus portb.b0
#define moin portb.b1
#define start portb.b2
#define led1  portc.b0
#define led2  portc.b1
#define led3  portc.b2
#define led4  portc.b3

unsigned int oldstate;                                    // Old state flag

void main() {
portb=0x00;
portc=0x00;
trisb=0xff;
trisc=0x00;

 do {
    if(plus==0){delay_ms(300);if(plus==0){led2=1;delay_ms(100);led2=0;} }
    if(moin==0){delay_ms(300);if(moin==0){led3=1;delay_ms(100);led3=0;} }
    if(start==0){led4=1;delay_ms(100);led4=0;}
    
    if (Button(&PORTB, 0, 1, 0)) {oldstate = 1;delay_ms(100);}


    if (oldstate && Button(&PORTB, 1, 5000, 0)) 
    {
      led1=1;delay_ms(1000);led1=0;
      oldstate = 0;
    }
  } while(1);
}

se que j'ai c'est un décompteur,et 4 BP (Plus,Moins,Reset et Start) le but rechercher c'est de mettre le bon timing et le décompter au moyen du BP start toutes en le mémorisant. j'ai essayer de le mémoriser en utilisant START actifs ce qui engendre la mémorisation du dernier temps qui 1, puis j'ais chercher a utilise 2 BP (qui sont Plus et le Moins) avec des pression rapide et suivie; mais en-vain.

voila ce moi j'ai fait mais "il y a toujours un MAIS :)" le problème c'est que j'utilise le PLUS et si je veux diminuer avec le MOIN il passe en mode mémo.

Si tu a une autre idée je suis preneur.




#65408 mikroc

Posté par nebukadnezare sur 03 octobre 2015 - 09:50 dans Programmation

merci mike118 pour l'attention ,justement c'est ce que je veux faire mais je n'y arrive pas, si tu a une ou deux ligne de commande a propose ça serais sympa.




#65404 mikroc

Posté par nebukadnezare sur 03 octobre 2015 - 06:27 dans Programmation

bonjour a tous,

j'ai réalise un décompteur de 4 digit 7seg et 4 boutons poussoirs ,ma question et que je voudrais utilise un des bouton poussoir pour 2 actions sans que l'une n’altère l'autre par exemple le bouton qui incrément les ++ ,si j’appuie plus longtemps il seras utilise pour mémorise la valeur du dernier r décomptage un truck comme sa et merci d’avance.