a couple of ways
Code:pulsetrain: index=67 while index while !portb.0 :wend ;wait for hi index=index-1 pauseus 600 ;bit period=3*te ie 3*400=1200uS code.0[index]= ~ portb.0 ;sample @midpoint of bit period while portb.0 :wend ;wait for lo wend
;or with some simple time supervision
Code:fail var bit timer var word ext @timer = TMR1L PRELOAD CON 65535-820 ;@8MHz timer prediv 2 each tick=1uS pulsetrain: index=67 t1con=0 fail=0 while index timer=preload while !portb.0 :wend ;wait for hi t1con=$21 index=index-1 pauseus 600 ;bit period=3*te ie 3*400=1200uS code.0[index]= ~ portb.0 ;sample @midpoint of bit period while portb.0 && !pir1.0 :wend ;wait for lo t1con=0 fail=fail | pir1.0 wend
or sample @50,250,450,650,850 uS past transition to hi
where valid result is
11000 for a 1
11110 for a 0
there are endless methods




Bookmarks