We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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; } } =============================================
Oleg Sergeev, as I stated before, the micro controller is working fine by receiving the pulses. Every time it counts 1000 pulses it increases a variable and its value is displayed on port 2. I need to write this new value to memory and re-write it once it changes. I have that (read/write) function working as well by itself, but when I put it together with the "receiving pulses" function, it does not work. I think it's the interrupts that are not well configured. Do you have any ideas?