This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Using the External Interrupt 1

Hi there, I am trying to get a signal to the P89LPC932 Micro Controller by using the External interrupt 1 (P1.4). I never tried this before and I am also a beginner programming. Can anyone help me figuring out why this program does not work. The interrupt is supposed to be edge triggered and every time an interrupt occurs a counter (NPulses) is incremented til it gets to 1000 pulses. then it goes back to zero. I think my problem is configuring the timers registers, but I am not too sure.

Here is the code.
Thank you,

============================================
#include <Reg932.h>
#include <stdio.h>

void init(void);
void brkrst_init(void);
void Pulses_recieved (void);
unsigned long NPulses; //amount of pulses received
unsigned int Glass;
void ToggleC1Input (void);
sbit Pulse = P1^4;
int Glassid, count;

void Main(void)
{
P2 = 0x00;
NPulses = 0;
Glass = 10;
Glassid = 0;
count = 0;
init();
brkrst_init();
Pulses_recieved();
}

void init(void)
{
P1M1 = 0xFF; // Input only
P1M2 = 0x00;
P2M1 = 0x00; // push pull output
P2M2 = 0xFF;
ES = 1; EA = 1;
}

void brkrst_init(void) // This function allows ISP entry through the UART break detect
{
AUXR1 |= 0x40; // enable reset on break detect, pg. 102
SCON = 0x50; // select the BRG as UART baud rate source, pg. 60
SSTAT = 0x00;
//TCON = 0x04;
BRGR0 = 0x70; // 9600 BAUD at 11.0592 MHz. Hex 0470= 1136 decimal
BRGR1 = 0x04;
BRGCON = 0x03; // enable BRG, pg. 59
}

void UART(void) interrupt 4
{
RI = 0;
}

void Pulses_recieved(void)
{
while(1)
{
TCON = 0x40;
IEN0 = 0x04;
EA = EA | 1;
}
}

void ExtPulses (void) interrupt 2
{
NPulses++;
if (NPulses == 1000)
{
NPulses = 0;
Glassid++;
P2 = Glassid;
}
}
=============================================

0