checking if the variable is greater than 0. If so then PortA (0) is high. It seems the program isn't decrementing. The probelm seems to be the RB change interrupt. The increment doesn't register. The interrupt will do other things but it won't increment or decrement.
Any help would be great.
Code: Select all
#include <system.h>
void setup_hardware (void)
{
trisb = (0xff); // PortB are inputs
trisa = (0x00); // PortA are outputs
porta = 0x00;
portb = 0x00;
option_reg =0xc0; // setup external interrupt on rising edge
intcon =0x98; // turn on external interrupt on RB0 & change on RB Interrupts
}
void delay (unsigned int value) // Delay
{
unsigned int i; // create char for delay
for (i = 0; i< value; i++);
}
char count1=0;
char count2=0;
void coil1 (void)
{
count1++;
}
void coil2 (void)
{
count1--;
}
void interrupt (void) // Interrupt handler
{
if (intcon & 0x02) // check INTF interrupt flag
{
intcon= intcon & 0xfd; // clear flag
coil1(); // Call display handler
}
if (intcon & 0x01) //check RBIF interrupt flag
{
intcon= intcon & 0xfe; // clear RBIF bit
coil2(); // call coil 2 handler
}
}
void main (void)
{
setup_hardware();
while(1)
{
if (count1 > 0)
{
porta = 0x01;
}
else
{
porta= 0x00;
}
}
}