Bonjour tous le monde.
Je souhaite réaliser un petit programme qui possède 2 LED un PIC18f24k22 et 2 boutons poussoirs.
Je souhaite ordonner à mon pic d'allumer une LED pendant 10s lorsque j'appuie sur un BP et de même avec l'autre LED et l'autre BP.
Actuellement j'arrive à le réaliser mais si j'appuie sur le 2nd BP pendant que la 1ère LED est allumée, mon pic ne prend pas en compte l'ordre.
On m'a orienté vers une solution, celle des interruptions. Je saisie le fonctionnement mais je ne sait absolument pas comment cela se code.
Auriez vous des exemples ou une autre solution?
Voici mon code actuellement :
Merci d'avance à ceux qui prendront le temps de lire ce message.Code:#include <stdio.h> #include <stdlib.h> #include <p18F24k22.h> #include "delay.h" #include "delays.h" #include "fonction.h" #pragma config FOSC = XT // XT oscillator #pragma config PLLCFG = OFF // Oscillator used directly #pragma config FCMEN = OFF // Fail-Safe Clock Monitor disabled #pragma config IESO = OFF // Oscillator Switchover mode disabled #pragma config PWRTEN = ON // Power up timer disabled #pragma config BOREN = OFF // Brown-out reset disabled in hardware and software #pragma config WDTEN = OFF // Watch dog timer is sleep, otherwise enabled. SWDTEN has no effect #pragma config MCLRE = EXTMCLR // MCLR pin enabled, RE3 input pin disabled #pragma config STVREN = OFF // Stack full/underflow will not cause Reset #pragma config LVP = OFF // Single-Supply ICSP disabled #pragma config XINST = OFF // Instruction set extension and Indexed Addressing #pragma config DEBUG = ON // Enabled void moteurPorteEntree(void) { if(PORTAbits.RA0 == 1) // porte fermée , l'ouvrir { PORTBbits.RB0 = 1; DelayS(10); } PORTBbits.RB0 = 0; } void moteurPorteGarage(void) // Fonction permettant d'ouvrir ou de fermer la porte du garage { if (PORTAbits.RA1 == 1) // porte fermée, l'ouvrir { PORTBbits.RB1 = 1; DelayS(10); } PORTBbits.RB1 = 0; } void main(void) { TRISA = 0b11111111; TRISB = 0b11000000; TRISC = 0b01111100; RCON = 0b11001111; T0CON = 0b11010000; ADCON1 = 0x0F; ANSELA = 0b00000000; ANSELB = 0b00000000; ANSELC = 0b00000000; while(1) { if(PORTCbits.RC2 == 1) // enclenchement bouton moteur porte d'entree { moteurPorteEntree(); } else if(PORTCbits.RC3 == 1) { moteurPorteGarage(); } } }
-----