@ DEVICE PIC12F683,MCLR_OFF,INTRC_OSC_NOCLKOUT,WDT_OFF,BOD_OFF
@ DEVICE PWRT_ON,FCMEN_OFF,IESO_OFF,PROTECT_ON
GrnLED CON 0 ' Green LED
RedLED CON 1 ' Red LED
Vin VAR BYTE ' Allocate A/D variable
DEFINE OSC 8
DEFINE ADC_BITS 8 ' Use 10-bit A/D as 8-bit A/D
DEFINE ADC_CLOCK 3 ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in uS
DISABLE INTERRUPT
ADCON0.0 = 1 ' Turn On A/D
ADCON0.2 = 1 ' A/D channel 3
ADCON0.3 = 1 ' ?
ADCON0.6 = 0 ' VDD is voltage reference
ADCON0.7 = 0 ' Left Justify result
ANSEL = %00111000 ' Set AN3 analog, rest digital
CMCON0 = 7 ' Analog comparators off
'GPIO port pins 0, 1 as outputs
TRISIO.0 = 0
TRISIO.1 = 0
PAUSE 10
start:
ADCON0.1 = 1 ' Start conversion
WHILE ADCON0.1 = 1 ' Wait for conversion to finish
PAUSE 10
WEND
Vin = ADRESH 'Write conversion result
PAUSE 10
'Display results
IF Vin < 70 THEN
LOW GrnLED
HIGH RedLED
ENDIF
IF Vin > 69 AND Vin < 120 THEN
HIGH GrnLED
HIGH RedLED
ENDIF
IF Vin > 119 AND Vin < 180 THEN
HIGH GrnLED
LOW RedLED
ENDIF
IF Vin > 179 THEN
LOW GrnLED
TOGGLE RedLED
ENDIF
PAUSE 250
GOTO start