Is it on a F886?
You MUST NOT set the GO/DONE bit at the same time you enable the ADC converter (Data Sheet page 106, Note in the box).
Also you do not setup the ADCON1. It is commented.
Try this:
Code:
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 10/2/2018 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
'PIC16F886
#config
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
#endconfig
define osc 4
include "lcd886.bas"
CM1CON0 = 0 'Comparator Off
CM2CON0 = 0 'Comparator Off
Define ADC_BITS 10 'Set number of bits in result (10)
Define ADC_CLOCK 3 'Set clock source (3=rc)
Define ADC_SAMPLEUS 50 'Set sampling time in microseconds (50us)
TRISA = %00000001 'Set PORTA.0 as input
TRISB = %00000000 'Set PORTB as outputs
TRISC = %00000000 'Set PORTC as outputs
ANSEL = %00000001 'Set PORTA.0 as analog
ANSELH = %00000000 'The rest ports are digital
ADCON0 = %11000001 'Set adc channel = AN0
ADCON1 = %10000000 'SETUP ADC RIGHT JUSTIFY SET REFV to VDD & VSS
PORTA = 0
PORTB = 0
PORTC = 0
light var PORTA.3
tc var word
'--------light is ON and initialize the LCD ---------
pause 300
high light
gosub lcdrst
lcdout $fe, $80,"TEST"
gosub lcdrst
'---------------------PROGRAM------------------------
MAIN:
ADCON0.1=1
gosub read_tc
lcdout $fe, $80, #tc," " ' I put some space here when you go from large result to 1 digit result.
pause 200
goto main
end
'---------------------Read AN0------------------------
read_tc:
WHILE ADCON0.1 = 1:WEND 'WAIT FOR CONVERSION
tc.HIGHBYTE = ADRESH
tc.LOWBYTE = ADRESL
return
'--------------------lcd reset------------------------
lcdrst:
lcdout, $fe, 1
pause 10
return
Ioannis
Bookmarks