****************** Constant Definitions ****************** symbol setting = C.1 ;read voltage on pin 6 symbol control = C.2 ;PWM occurs on pin 5 symbol frequency = 199 ;frequency fixed at 5kHz symbol num = 5 ;slope numerator symbol denom = 8 ;slope denominator symbol int = 130 ;y-intercept (stalls below this) ;Note: The pot setting will be between 0 - 1023. For the ;motor used in the prototype, the duty cycle should ;range from about 15% to 99%. The relation y = mx + b ;transforms the former into the latter, where ;m=num/denom and b=int. Arrange these for integer arithmetic ;with no implicit order of operations. ;****************** Variable Definitions ****************** symbol speed = w0 ;current speed selected symbol prev = w1 ;previous value ;********************** Main Program ********************** pgm: prev = 0 main: dirs = %00000100 readadc10 setting,speed ;check the setting speed = num*speed/denom+int ;transform to useable range if speed != prev then ;update if changed pwmout control,frequency,speed prev = speed ;save updated speed endif goto main ;and start all over again end