Bon voila,voici mes progrès en programmation,voici un programme que j'ai écrit.
Il faut surement optimisé ça mais ça fonctionne bien.Code:#define BP1 PORTB.B1 #define BP2 PORTB.B2 #define LEDR PORTA.B0 #define LEDB PORTA.B1 unsigned char bascule1; unsigned char bascule2; bit seconde; unsigned int compteur; void interrupt() { if (INTCON.INTF == 1) // interruption sur RB0 { INTCON.INTF = 0; if (BP1 == 1) { bascule2 = 0; compteur = 976; // time 250ms bascule1++; } if (BP2 == 1) { bascule1 = 0; bascule2++; } } if (INTCON.T0IF == 1) // interrutpion TMRO { INTCON.T0IF = 0; compteur++; } } void main() { CMCON = 7; // comparateur inactif PCON = 0b00001000; // int oscf interne 4MHZ OPTION_REG = 0b11000000; // pull up inactif et int rising RB0 INTCON = 0b10110000; // GIE, T0IE et INTE activé PORTA = 0; // int 0V PORTB = 0; // int 0V TRISA = 0; // int full sortie TRISB = 0b00000111; // int RB0,RB1 et RB2 en entrée compteur = 0; bascule1 = 0; bascule2 = 0; seconde = 0; while(1) { if (compteur == 976) { seconde++; compteur = 0; } if (bascule1 == 1) { LEDR = 0; bascule2 = 0; if (seconde == 1) { LEDB = 1; } if (seconde == 0) { LEDB = 0; } } if (bascule1 == 2) { LEDB = 0; if (seconde == 1) { LEDR = 1; } if (seconde == 0) { LEDR = 0; } } if (bascule1 == 3) { LEDR = 0; bascule1 = 0; } if (bascule1 == 0) { seconde = 0; compteur = 0; } if (bascule2 == 1) { LEDR = 0; bascule1 = 0; LEDB = 1; } if (bascule2 == 2) { LEDB = 0; LEDR = 1; } if (bascule2 == 3) { LEDR = 0; bascule2 = 0; } } }
BP1 permet de choisir le clignotement de la led bleu ou de la led rouge ou OFF.BP1 sert a choisir entre laisser la bleu comme couleur fixe ou la rouge ou OFF.
Dans la mode clignotement je peut en sortir en activant le mode couleur fixe et inversement.
-----