You'll need a PIC with onboard A/D to use ADCIN. This works on an F876.
Code:
DEFINE OSC 4
DEFINE ADC_BITS 8 ' Set number of bits in result
DEFINE ADC_CLOCK 2 ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS
SVO_POS VAR BYTE
' 90 deg horn rotation (adjust for servo)
'LEFT CON 100 ' Left position 1mS
'RIGHT CON 200 ' Right position 2mS
' 180 deg horn rotation (adjust for servo)
LEFT CON 70 ' Left position 0.70mS
RIGHT CON 240 ' Right position 2.4mS
TRISA = %00001001 ' RA0 = A/D input
ADCON1.7 = 0 ' RA.3 = +Vref, Set PORTA analog and left justify result
LOW 0 ' Setup RB0 for high-going pulseout
Loop:
ADCIN 0,SVO_POS ' Read A/D channel
IF SVO_POS < LEFT THEN SVO_POS = LEFT
IF SVO_POS > RIGHT THEN SVO_POS = RIGHT
PULSOUT 0,SVO_POS ' Move servo
PAUSE 15 ' ~60Hz update-rate
GOTO Loop ' Forever
Bookmarks