| ??? 05/19/03 01:02 Read: times |
#45918 - RE: something is happening Responding to: ???'s previous message |
Your code is off base Waqar. And I really will not look at it until you have made more attempt to get it fixed up better. You still have the nerve to show code that has you setting all bits in PORT to ZEROS and then you are trying to look for an input coming from P2.0.
I happen to think you are yet miles away from having it close to correct. When detecting somethng like dialing signal it is necessary to validate the low and high times of the pulse train as it comes in. When you go away from looking at the signal the way you are trying to with 40 or 60 msec delays the input could have changed state many times before you come back to look again. The code I showed in the prior post shows but one way to properly validate the incoming pulse width. I put in place there a lot of instructions but it should be easy to understand. This code shows how to validate the high part of the pulse and to take alternate action if the pulse time is wider than some larger limit. You need to expand this to validate the subsequent low part of the signal. Each time you see a validated high & low time you will know there is a pulse in the current dial sequence to count. This you need to add a pulse counter that increments each time that a high/low valid pair occur. Then whule waiting for the next pulse you would accept a timeout as an expiration of the interdigit period. At this point you know that the current dial number digit is complete and you would move the counter of the number of pulses detected to another buffer that holds the dialed number. After you get a timeout waiting for the first edge after some slowest acceptable dialing rate you can guess that dialing of a number is complete. At this time you would look into the buffer to check if you recognize the number that the user dialed. !! You should now have everything you now need to start running......go! Michael Karas |



