Salut tout le monde,
voila j'ai essayé d'élaborer un petit programme pour le décodage d'une trame RC5 je l'ai testé ( la led indiquant une erreur s'allume ) mais je suis devant deux probabilités soit que mon programme est incorrect soit que ma télécommande avec laquelle je test n'utilise pas la codage RC5 peut être RC6 et je be dispose pas d'un oscillo pour tester les trames envoyés par ma télécommande
je vais vous montrer mon programme si vous pouvez m'éclaircir mes erreurs
Code:int i,ADRESSE,INSTRUCTION; void erreur(){ portb.f7=1; delay_ms(1000); portb.f7=0; intcon.intf=0; } void led(){ portb.f6=1; delay_ms(1000); portb.f6=0; delay_ms(1000); intcon.intf=0; } void interrupt(){ ADRESSE=0X00; INSTRUCTION=0X00; i=0; // Start delay_us(889/2); for(i=0;i<2;i++){ if (PORTB.F0==0){erreur();} delay_us(889); if (PORTB.F0==1){erreur();} delay_us(889); } // Sauter le bit de commutation et se positionner au 1/4 du 1 bit d'adresse; delay_us(1778+889/2); for(i=0;i<5;i++){ if(PORTB.F0==0){ADRESSE<<=1;delay_us(889);if(PORTB.F0==1){ADRESSE=ADRESSE & 0XFE;} else erreur();} else ADRESSE<<=1;delay_us(889);if(PORTB.F0==0){ADRESSE=ADRESSE | 0X01;} else erreur();} for(i=0;i<6;i++){ if(PORTB.F0==0){INSTRUCTION<<=1;delay_us(889);if(PORTB.F0==1){INSTRUCTION=INSTRUCTION & 0XFE;} else erreur();} else INSTRUCTION<<=1;delay_us(889);if(PORTB.F0==0){INSTRUCTION=INSTRUCTION | 0X01;} else erreur();} if(ADRESSE==0X00 && INSTRUCTION==0X01){led();} } void main(){trisb=0X01;intcon=0X90;option_reg.f6=0; asm SLEEP; }
-----