Tengo un problema con la interrupción en 16f690

0

Estoy usando pic16f690 y mikroc pro. Quiero crear una interrupción en Rb4 y Rb5 (en esos pines que tengo codificador) y cuando llegó el intertept, quiero encender el LED. Pero el compilador me da un error: 74 317 Operador '.' no es aplicable a estos operandos 'INTCON' MyProject.c ¿Dónde me equivoqué? Por favor, ayúdame.

void interrupt()   
{
   if ( INTCON.RBIF==1)
   {
        LED=1;         
        INTCON.RBIF = 0;        // Clear interrupt flag

   }//end intcon.RBIF if
}//end ISR

void main()
{
    OPTION_REG=0x80;
    ANSEL=0x00;
    ANSELH=0x00;

    CM1CON0=0x00;
    CM2CON0=0x00;

    T1CON=0x00;

    TRISA=0b00000011;
    PORTA=0x00;

    TRISB=0b00111111;
    PORTB=0xff;

    TRISC=0x00;
    PORTC=0x40;

    INTCON.RBIF = 0;     // Clear interrupt flag prior to enable
    INTCON.RBIE = 1;     // enable on change interrupts
    INTCON.GIE  = 1;     // enable Global interrupts
    

2 respuestas

1

Su plantilla es un poco defectuosa. Tienes que esperar en cualquier lugar hasta que se desborde una interrupción.

Por favor, intente la plantilla que edité a continuación.

void main()   
{   
    OPTION_REG=0x80;  
    ANSEL=0x00;
    ANSELH=0x00; 
    CM1CON0=0x00;        
    CM2CON0=0x00; 
    T1CON=0x00;
    TRISA=0b00000011; PORTA=0x00;
    TRISB=0b00111111; PORTB=0xff; 
    TRISC=0x00; PORTC=0x40;
    INTCON.RBIF = 0; // Clear interrupt flag prior to enable  
    INTCON.RBIE= 1; // enable on change interrupts  
    INTCON.GIE = 1; // enable Global interrupts 
    while(1){__delay_us(1)} 
}


void interrupt isr(void)  
{ 
   if ( INTCON.RBIF==1)  
   { 
      LED^=1; //Invert for test.
      INTCON.RBIF = 0; 
   }
}
    
respondido por el O.Blue
0

El compilador está intentando decirle algo: está utilizando definiciones de bits incorrectas. El 16F690 no tiene bits llamados RBIF y RBIE , en su lugar tiene RABIF y RABIE . ¡Siempre lea la hoja de datos antes de escribir cualquier código!

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas