cllunlu
Member level 4
Hi Everyone,
I have done IOCC1 and IOCC2 pins interrupt with milan.rajnik is edaboard user. Now I have to use IOCRB4-IOCRB7 pins to interrupt. I edited my code similarly, but program doesnt input interrupt routine. IOCRB4-IOCRB7 interrupts are difference IOCRC1 and IOCRC2.
Anyone could help?
Code is:
sbit W1D0 at RB4_bit;
sbit W1D1 at RB5_bit;
sbit W1D0_Direction at TRISB4_bit;
sbit W1D1_Direction at TRISB5_bit;
sbit LED1 at LATA1_bit;
sbit LED2 at LATA2_bit;
sbit LED1_Direction at TRISA1_bit;
sbit LED2_Direction at TRISA2_bit;
#define INPUT 1
#define OUTPUT 0
#define LOW 0
#define HIGH 1
#define ON 1
#define OFF 0
void init()
{
CM1CON0 = 0x00;
CM2CON0 = 0x00;
ANSELA = 0x00;
ANSELB = 0x00;
ANSELC = 0x00;
TRISA = 0xC0;
TRISB = 0x00;
TRISC = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
LATA = 0x00;
LATB = 0x00;
LATC = 0x00;
W1D0_Direction = INPUT;
W1D1_Direction = INPUT;
LED1_Direction = OUTPUT;
LED2_Direction = OUTPUT;
LED1 = OFF;
LED2 = OFF;
Delay_ms(200);
IOCIE_bit = 1;
PEIE_bit = 1;
GIE_bit = 1;
IOCB4_bit=1;
IOCB5_bit=1;
IOCIF_bit = 0;
Delay_ms(50);
}
void interrupt(void)
{
IOCIE_bit = 0;
PEIE_bit = 0;
if(IOCIF_bit)
{
IOCIF_bit = 0;
if(!RB4_bit)
{
LED1=1;
}
else if(!RB5_bit)
{
LED2=1;
}
}
}
void main()
{
init();
while(1)
{
}
}
I have done IOCC1 and IOCC2 pins interrupt with milan.rajnik is edaboard user. Now I have to use IOCRB4-IOCRB7 pins to interrupt. I edited my code similarly, but program doesnt input interrupt routine. IOCRB4-IOCRB7 interrupts are difference IOCRC1 and IOCRC2.
Anyone could help?
Code is:
sbit W1D0 at RB4_bit;
sbit W1D1 at RB5_bit;
sbit W1D0_Direction at TRISB4_bit;
sbit W1D1_Direction at TRISB5_bit;
sbit LED1 at LATA1_bit;
sbit LED2 at LATA2_bit;
sbit LED1_Direction at TRISA1_bit;
sbit LED2_Direction at TRISA2_bit;
#define INPUT 1
#define OUTPUT 0
#define LOW 0
#define HIGH 1
#define ON 1
#define OFF 0
void init()
{
CM1CON0 = 0x00;
CM2CON0 = 0x00;
ANSELA = 0x00;
ANSELB = 0x00;
ANSELC = 0x00;
TRISA = 0xC0;
TRISB = 0x00;
TRISC = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
LATA = 0x00;
LATB = 0x00;
LATC = 0x00;
W1D0_Direction = INPUT;
W1D1_Direction = INPUT;
LED1_Direction = OUTPUT;
LED2_Direction = OUTPUT;
LED1 = OFF;
LED2 = OFF;
Delay_ms(200);
IOCIE_bit = 1;
PEIE_bit = 1;
GIE_bit = 1;
IOCB4_bit=1;
IOCB5_bit=1;
IOCIF_bit = 0;
Delay_ms(50);
}
void interrupt(void)
{
IOCIE_bit = 0;
PEIE_bit = 0;
if(IOCIF_bit)
{
IOCIF_bit = 0;
if(!RB4_bit)
{
LED1=1;
}
else if(!RB5_bit)
{
LED2=1;
}
}
}
void main()
{
init();
while(1)
{
}
}
Last edited: