Give that a shot, see what happens. The scaling is 'fixed' for now, and needs to be worked on...Code:@ DEVICE pic12F629, INTRC_OSC_NOCLKOUT ; Using Internal Clock, no clock out @ DEVICE pic12F629, WDT_ON ; Enable Watch dog timer @ DEVICE pic12F629, PWRT_ON ; Enable Power-up timer @ DEVICE pic12F629, MCLR_OFF ; Disable MCLR pin @ DEVICE pic12F629, BOD_ON ; Enable Brown-out detect @ DEVICE pic12F629, CPD_OFF ; EEPROM Protect @ DEVICE pic12F629, PROTECT_OFF ; Code Protect off data 0, 100 , 250 trisio=$fe:intcon=0:cmcon=7:servoout var gpio.0:serlimitsw var gpio.1 potin var gpio.2:minsw var gpio.4:maxsw var gpio.5:posit var byte minposit var byte:maxposit var byte:low servout read 0,MinPosit:read 1,MaxPosit Start: gosub GetServoPosition : pulsout servoout, posit : pause 20 if setlimitsw = 1 then 'check min max buttons if minsw = 1 then MinPosit = Posit : write 0, MinPosit : pause 25 if maxsw = 1 then MaxPosit = Posit : write 1, MaxPosit : pause 25 endif goto start GetServoPosition: high potin:pause 1:rctime potin,1,Posit:posit=posit*2 if posit < 100 then posit = 100 if posit > 250 then posit = 250 if setlimitsw = 0 then 'apply limits if Posit < MinPosit then Posit = MinPosit if Posit > MaxPosit then Posit = MaxPosit endif return
Bookmarks