Bonjour à tous, je suis entrain produire un programme pour un PIC 16F876. Ce programme doit envoyer la configuration d'un TDL2A.
Dans la configuration de ce composant, j'aimerai modifier son adresse et son canal manuellement à l'aide d'un switch (interrupteur DIL 6 poles)
En gros , les 3 premiers poles sont utilisé pour l'adresse (le tdl2a peut configurer 7 adresses differentes)
Pour ce qui est de l'adresse pas de soucis je vois comment procéder. En revanche pour ce qui est du choix des canaux (5 canaux configurables), je vois pas comment faire vu qu'il y a 3 valeurs interdites : 101 110 111 (en binaire)
Voici pour le moment mon programme :
**** Merci d'utiliser les balises [CODE] pour poster un programme.Code:#include <16F876.h> #device adc=8 #FUSES NOWDT //No Watch Dog Timer #FUSES HS //High speed Osc (> 4mhz) #FUSES NOPUT //No Power Up Timer #FUSES NOPROTECT //Code not protected from reading #FUSES BROWNOUT //Reset when brownout detected #FUSES NOLVP //No Low Voltage Programming on B3(PIC16) or B5(PIC18) #FUSES NOCPD //No EE protection #FUSES NOWRT //Program memory not write protected #FUSES NODEBUG //No Debug mode for ICD #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) const char ADDR[4]= {'A','D','D','R'}; const char CHAN[4]= {'C','H','A','N'}; char canal,adresse,i; void config_tdl2a() { output_low(PIN_B3); //mode SETUP output_low(PIN_B2);// TDL2A en fonctionnement canal=(input_a() & 0x07); // lecture du port a + masque adresse=(input_a()/8); // lecture du port a + division par 8 for (i=0; i<4; i++) putc (ADDR[i]); putc (adresse); putc (0x0D); delay_ms(10); for (i=0; i<4; i++) putc (CHAN[i]); putc (canal); putc (0x0D); delay_ms(10); } void main() { output_high(PIN_B3);//désactivation du setup output_high(PIN_C6); delay_ms(100); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); config_tdl2a(); output_high(PIN_B3);//désactivation du setup while(1) { putc(0x55); } }
Ma question est : Comment interdire des valeurs en C? (je sais que ce n'est pas difficile mais j'ai pas l'aide avec moi .
En gros ce que j'aimerai faire c'est :
canal=(input_a() & 0x07);
canal = interdiction des valeurs 101,110,111
Merci d'avance
-----