Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

16F88 et CCP1 sous mikroC



  1. #1
    bypbop

    16F88 et CCP1 sous mikroC


    ------

    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 ...

    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;
    }
    }
    Est ce que qq'un peux m eclaircir sur le sujet ...

    Cordialement,
    bypbop

    -----
    Images attachées Images attachées

Discussions similaires

  1. Problème utilisation DS1307 sous MikroC
    Par Wapaca dans le forum Électronique
    Réponses: 8
    Dernier message: 20/03/2014, 16h45
  2. MikroC et entrée sur Pic 16F88 (projet modelisme)
    Par bypbop dans le forum Électronique
    Réponses: 11
    Dernier message: 26/01/2012, 23h09
  3. Programmation dsPIC sous mikroC for dsPIC
    Par flash68 dans le forum Électronique
    Réponses: 8
    Dernier message: 10/03/2009, 08h31
  4. Soucis de Prog sous Mikroc
    Par M_Makia dans le forum Électronique
    Réponses: 2
    Dernier message: 28/02/2007, 11h56
  5. Conflit CCP1 & CCP2 en mode Compare
    Par HULK28 dans le forum Électronique
    Réponses: 3
    Dernier message: 03/12/2006, 21h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.