bonsoir,
j'ai fait ce petit code pour afficher les bits de commande d'une tram IR sur PORTC et les bits d'adresse sur PORTD. j'ai simulé le programme sur isis, il fait le sous-prog d'interruption externe sur RB0 mais je voi plus rien sur les sorti des PortC et D , j'ai vérifier le programme plusieurs fois mais j'ai pas trouvé l'erreur
si quelqu'un peut m'aider
Code:unsigned char x ; unsigned int ir; unsigned char cmd; unsigned char adrs; bit fin_recep; /********************************************************/ void init (){ // // /*********CONFIG_RB0/INT sur front descend***********/ // INTCON = 0xD0 ; //active GIE , PEIE , RBIE // OPTION_REG = 0 ; // // /***********************************************/ /*********CONFIG_LES PORTS****************************/ // TRISB = 0xFF ; // TRISC = 0x00 ; // TRISA = 0x00 ; TRISD = 0x00 ; PORTB = 0 ; // PORTC = 0 ; // } // /**********************************************/ void interrupt() { if(INTCON.INTF){ RA0_bit=0; delay_us(445); // 1/4 bit de start for(x=1;x<14;x++){ if (RB0_bit==0){ ir>>1 ; ir |= 0x8000; //ajouté un 1 Si RB0 = 0 (bit tram = 1) } if (RB0_bit==1){ ir>>1 ; } delay_ms(1777); // atteindre le 1/4 du 2ème bit } fin_recep=1 ; INTCON=0x00; }} void main() { init() ; while(1){ if(fin_recep==1){ ir = ir>>2; cmd = ir; cmd = cmd & 0x3F; //recupéré les 6 bits de cmd adrs = ir>>6; adrs = adrs & 0x1F; // les 5 bits d'adresse fin_recep=0; INTCON = 0xD0 ; } RA0_bit=0; PORTC=cmd ; PORTD=adrs; delay_ms(4000); }}
-----