By Michael J. Horan

PIC Code for the LightTouch

Back to softPot report.

DEFINE OSC 20

DEFINE  ADC_BITS        10    
DEFINE  ADC_CLOCK       3      
DEFINE  ADC_SAMPLEUS    15      

input porta.0

ADCON1 = %10000010

adcVar  VAR WORD    ' ADC  result
dutyCycle var byte 

' LED right row
led1 var portb.7
led2 var portb.6
led3 var portb.5
led4 var portb.4
led5 var portb.3
led6 var portb.2
led7 var portb.1
led8 var portb.0
led9 var portd.7
led10 var portd.6
led11 var portd.5
led12 var portd.4


' LED left row
led13 var portc.5
led14 var portc.4
led15 var portd.3
led16 var portd.2
led17 var portd.1
led18 var portd.0
led19 var portc.3
led20 var portc.2
led21 var portc.1
led22 var portc.0
led23 var porte.2
led24 var porte.1


output led1
output led2
output led3
output led4
output led5
output led6
output led7
output led8
output led9
output led10
output led11
output led12
output led13
output led14
output led15
output led16
output led17
output led18
output led19
output led20
output led21
output led22
output led23
output led24


main:
low led1
low led2
low led3
low led4
low led5
low led6
low led7
low led8
low led9
low led10
low led11
low led12
low led13
low led14
low led15
low led16
low led17
low led18
low led19
low led20
low led21
low led22
low led23
low led24


  ADCIN 0, adcVar

  ' convert ADC value to a byte value:
  dutyCycle = adcVar / 4

  if (5<dutyCycle) and (dutyCycle<20) then
   high led1
   high led2
   high led3
   endif

  if (21<dutyCycle) and (dutyCycle<40) then
   high led3
   high led4
   high led5
   endif

  if (41<dutyCycle) and (dutyCycle<60) then
   high led5
   high led6
   high led7
   endif

  if (61<dutyCycle) and (dutyCycle<80) then
   high led7
   high led8
   high led9
   endif

  if (81<dutyCycle) and (dutyCycle<100) then
   high led9
   high led10
   high led11
   endif

  if (101<dutyCycle) and (dutyCycle<120) then
   high led11
   high led12
   high led13
   endif

  if (121<dutyCycle) and (dutyCycle<140) then
   high led13
   high led14
   high led15
   endif

  if (141<dutyCycle) and (dutyCycle<160) then
   high led15
   high led16
   high led17
   endif


  if (161<dutyCycle) and (dutyCycle<180) then
   high led17
   high led18
   high led19
   endif

  if (181<dutyCycle) and (dutyCycle<200) then
   high led19
   high led20
   high led21
   endif

  if (201<dutyCycle) and (dutyCycle<220) then
   high led21
   high led22
   high led23
   endif

  if (221<dutyCycle) and (dutyCycle<255) then
   high led23
   high led24
   endif

 serout2 portc.6, 16468, ["dutyCycle= ", DEC dutyCycle, 10, 13]

goto main