PULSEIN/de
Contents |
= (**COPIED FROM ENGLISH PAGE**) === Action
Returns the number of units between two occurrences of an edge of a pulse.
Syntax
PULSEIN var , PINX , PIN , STATE
Remarks
var |
A word variable that is assigned with the result. |
PINX |
A PIN register like PIND |
PIN |
The pin number(0-7) to get the pulse time of. |
STATE |
May be 0 or 1.
0 means sample 0 to 1 transition. 1 means sample 1 to 0 transition. |
ERR variable will be set to 1 in case of a time out. A time out will occur after 65535 unit counts. With 10 uS units this will be after 655.35 mS.
You can add a bitwait statement to be sure that the PULSEIN statement will wait for the start condition. But when using the BITWAIT statement and the start condition will never occur, your program will stay in a loop.
The PULSIN statement will wait for the specified edge.
When state 0 is used, the routine will wait until the level on the specified input pin is 0. Then a counter is started and stopped until the input level gets 1.
No hardware timer is used. A 16 bit counter is used. It will increase in 10 uS units. But this depends on the XTAL. You can change the library routine to adjust the units.
See also
ASM
The following ASM routine is called from mcs.lib
_pulse_in (calls _adjust_pin)
On entry ZL points to the PINx register , R16 holds the state, R24 holds the pin number to sample.
On return XL + XH hold the 16 bit value.
Example
Dim w As Word pulsein w , PIND , 1 , 0 'detect time from 0 to 1 print w End
Languages | English • Deutsch |
---|