...so I'm back !
After solving first problem, I meet another one ... I can not reading two channel ADC.
I try two version of code :
-first variant
Code:
@ __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON & _CP_ON
DEFINE OSC 4
CMCON = 7
OPTION_REG.7= 1
TRISIO = %00001110
GPIO = %00000001
ANSEL = %00110110
ADCON0.7 = 1
adval var word
advalb var word
PAUSE 200
main:
ADCON0.2 = 1
ADCON0.3 = 0
ADCON0.1 = 1
WHILE ADCON0.1 = 1 : WEND
adval.HighByte = ADRESH
adval.LowByte = ADRESL
PAUSE 50
if adval < 950 then
if adval < 940 AND adval > 650 THEN gosub Led1
IF adval < 600 AND adval > 450 THEN gosub Led2
IF adval < 400 AND adval > 150 THEN gosub Led3
IF adval < 100 THEN gosub Led4
endif
ADCON0.2 = 0
ADCON0.3 = 1
ADCON0.1 = 1
WHILE ADCON0.1 = 1 : WEND
adval.HighByte = ADRESH
adval.LowByte = ADRESL
PAUSE 50
if advalb < 950 then
if advalb < 940 AND advalb > 650 THEN gosub Led1
IF advalb < 600 AND advalb > 450 THEN gosub Led2
IF advalb < 400 AND advalb > 150 THEN gosub Led3
IF advalb < 100 THEN gosub Led4
endif
goto main
-second variant
Code:
@ __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON & _CP_ON
DEFINE OSC 4
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 200
CMCON = 7
OPTION_REG = %10000110
TRISIO = %00000110
GPIO = %00000110
ANSEL = %00000110
ADCON0.7 = 1
ADVALA VAR WORD
ADVALB VAR WORD
pAUSE 100
main:
adcin 1, advalA
pause 5
if advalA < 950 then
if advaLA < 940 AND advalA > 650 THEN gosub LED1
IF advalA < 600 AND advalA > 450 THEN gosub LED2
IF advalA < 400 AND advalA > 150 THEN gosub LED3
IF advalA < 100 THEN gosub LED4
endif
adcin 2, advalB
pause 5
if advalB < 950 then
if advalB < 940 AND advalB > 655 THEN gosub LED1
IF advalB < 600 AND advalB > 450 THEN gosub LED2
IF advalB < 400 AND advalB > 150 THEN gosub LED3
IF advalB < 100 THEN gosub LED4
endif
goto main
ONLY "advalA < 100" is sensing and LED4 command is executed ...
Can somebody pointing to the right direction ? Thanks in advance !
Schematic added.
Bookmarks