Hello All,

I am trying to build a telephone line interfacing circuit. There are two switches in the circuit(Pick up (PU) and hang up(HU)) I wait to see the line ringing. If during this time pick up switch is pressed, I pick the line. On hang up switch, I go to hang up the line by activating relay.

If I do this repeatedly, my PIC hangs . It sometimes hnags in hangup code section. (Please see attached code) There is no pattern or timing sequence in this hanging. Things come back to normal after 50-60 seconds.

I have used trisb to make portb high. This trisb stops working when I execute hangup. I have to again pull them all high. This was putting the unit in oscillations earlier. This is working by initializing trisb again,but ideally this type of modification is not required. I need to understan if something is wrong in the code.
I am confused. I need to find out the reason and remedy for this problem as it is very important for my unit to be fault tolerent.Please help
Thanks in advance.

There is another thing I noticed while debugging. I was trying to locate exactly where the code hangs and where the control goes. I found that one serout statement is repeated executed and there is no connection from the program to that serout statement.No other statement in the code block of that serout is executed. Will it be stack overflow case? I am using fixed pointers ie goto statements and not gosubs

Please help
cwmaddy