Bonjour à tous
Voila dans le but de faire varier un montage avec ma radio commande j'ai fait un montage avec un 16f88 et un lcd16x2
Voila j'ai cablé mon recepteur de ma radio sur la pin RB3 pour utiliser le module CCP1 et je veux afficher le resultat sur mon ecran lcd..
Dans mes fusibles j'ai bien mis CCP1 on RB3
Comme je débute avec les interruptions j'ai un pe de mal à recuperer la durée du front montant de mon signal recepteur.
J'ai fait ceci mon signal varie mais pas qd je bouge le manche de ma radio ...
Est ce que qq'un peux m eclaircir sur le sujet ...Code:sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connections unsigned temps; unsigned temps_old; char texte1; void interrupt (void){ if(PIR1.CCP1IF == 1 ){ if (CCP1CON == 5) { CCP1CON = 0x04; T1CON = 0; TMR1H = 0; TMR1L = 0; T1CON = 1; PIR1.CCP1IF = 0; //clear CCP flag } if (CCP1CON == 4) { CCP1CON = 0x05; temps =0; temps = CCPR1H; PIR1.CCP1IF = 0; //clear CCP flag } } } void main() { TRISA = 0b00000000; PORTA = 0; PORTB = 0; ANSEL = 0; OSCCON = 0b01111000; CCP1CON = 0x05; //capture CCPR1L=0; CCPR1H=0; T1CON = 0x01; // timer1 ON, internal clock Fosc/4 INTCON.GIE = 1; // active les interruptions INTCON.PEIE =1; PIE1.CCP1IE = 1; // active interruption sur CCP1 PIR1.CCP1IF = 0; // efface le drapeau de l'interruption CCP1 Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1,"Test"); Delay_ms(1000); while(1) { if (temps != temps_old) { PIR1.CCP1IF = 0; IntToStr(temps, texte1); Lcd_Out(1,6,texte1); Delay_ms(1000); PIE1.CCP1IE = 1; } temps_old = temps; } }
Cordialement,
bypbop
-----