bonjour,
j'aimerai faire un programme qui me permet quand j'appuie sur un bouton poussoir ca active une première sortie pendant 1s, a la deuxième impulsion que ca soit une deuxième sortie.....etc jusqu'à 16 sortie. j'aimerai aussi adresser mes micro-contrôleur pour que l'une fois que les 16 sortie ont été déclenche que ca passe a un autre.
je débute dans la programmation des pic et j'ai trouvé un début de code mais ca tourne en boucle sur un seul port.
si quelqu'un d'entre vous peut m'aide ca serai très gentilCode:#include "p18f45k20.h" #include "delays.h" #include "04 Switch Input.h" // header file /** V A R I A B L E S *************************************************/ #pragma udata // declare statically allocated uinitialized variables unsigned char LED_Displays; // 8-bit variable /** D E C L A R A T I O N S *******************************************/ #pragma code // declare executable instructions void main (void) { unsigned char Switch_Count = 0; LED_Displays = 0; // initialize TRISD = 0b00000000; TRISC = 0b00000000; // PORTD bits 7:0 are all outputs (0) INTCON2bits.RBPU = 0; // enable PORTB internal pullups WPUBbits.WPUB0 = 1; // enable pull up on RB0 ANSELH = 0x00; // AN8-12 are digital inputs (AN12 on RB0) TRISBbits.TRISB0 = 1; // PORTB bit 0 (connected to switch) is input (1) while (1) { LATD = LED_Displays;// output LED_Display value to PORTD LED LED_Displays <<= 1; // rotate display by 1 if (LED_Displays == 0) LED_Displays = 1; // rotated bit out, so set bit 0 while (Switch_Pin != 0);// wait for switch to be released Switch_Count = 5; do { // monitor switch input for 5 lows in a row to debounce if (Switch_Pin == 1) { // pressed state detected Switch_Count++; } else { Switch_Count = 0; } Delay10TCYx(25); // delay 250 cycles or 1ms. } while (Switch_Count < DetectsInARow); } }
Merci d'avance
-----