// arlotto 2006 c18 sur 18F4520 carte PICDEM2+ // démonstration c18 entrées / sorties logiques // Pour pouvoir utiliser les broches RB4 à RB0 en // E/S logiques il est pratique de mettre PBADEN sur OFF // Avec PBADEN = ON RB4:RB0 peuvent être utilisées comme // entrées analogiques supplémentaires (AN8 à AN12) #include // configuration #pragma config OSC = HS #pragma config WDT = OFF #pragma config LVP = OFF #pragma config PBADEN = OFF // Si PBADEN = ON RB4:RB0 sont analogiques au reset ! // une manière pratique de redéfinir les bits // en fonction de leur utilisation sur la carte #define S2 PORTAbits.RA4 #define S3 PORTBbits.RB0 #define LED2 PORTBbits.RB2 #define TRIS_LED2 TRISBbits.TRISB2 #define LED1 PORTBbits.RB1 #define TRIS_LED1 TRISBbits.TRISB1 #define LED3 PORTBbits.RB3 void main(void) { int cpt=0; char etat=0; PORTBbits.RB3 = 0 ; TRISBbits.TRISB3 = 0 ; // RB3 en sortie LED2=0; TRIS_LED2=0; LED1=0; TRIS_LED1=0; for (;;) { // un simple interrupteur if(S2==0) { LED2=1; } else { LED2=0; } // comptage des appuies sur S3 switch (etat) { case 0 : if(PORTBbits.RB0==0) { LED3=1; cpt++; etat=1; } break; case 1 : if(PORTBbits.RB0==1) { LED3=0; etat=0; } break; } // allumage de LED1 après 4 appuis if(cpt>=4) { LED1=1; cpt=0; } } }