Another issue regarding the 16F688.
Setting up the 10-bit ADC I expected a 0 – 1023 range, what I got was 0 to 65472 !!?
Of cause I made some kind of mistake here but nothing that is obvious to me. Also I have a problem with the right justify and getting the decimal point and scaling (Volts) correct. I have tried a few ways to solve it but I’m having trouble to understand the math. Can somebody explain how to do it correctly?
Thanks guys!
Code:
OSCCON = %1110111 'Use Internal OSC at 8MHz
CMCON0 = %0000111 'Comparators off
TRISA = %000100 'PortA 0=output- 1=input
TRISC = %000000 'PortC 0=output- 1=input
ANSEL = %0000100 '(Analog Select) 0=Digital 1=Analog
V VAR WORD
L VAR WORD
T VAR WORD
DEFINE ADC_BITS 10 ' 10-bits
DEFINE ADC_CLOCK 3 ' rc
DEFINE ADC_SAMPLEUS 50 ' Sample time uS
ADCON0 = %00000001 ' ADC in operation
ADCON1 = %11001000 ' rightadjust and Vref+
GOSUB movelcd
PAUSE 500
loop:
GOSUB readv
PAUSE 50
GOTO loop
END
'****************** - SUBS - ************************************
MOVELCD:
DEFINE LCD_DREG PORTC 'Data on PORTC PIN 10,9,8,7
DEFINE LCD_DBIT 0 'Start bit for PORTC
DEFINE LCD_RSREG PORTC 'Register Select (RS)
DEFINE LCD_RSBIT 4 'RS bit PORTC PIN 6
DEFINE LCD_EREG PORTC 'Enable Port PORTC
DEFINE LCD_EBIT 5 'E bit PORTC PIN 5
DEFINE LCD_BITS 4 'bitmode (4-bit)
DEFINE LCD_LINES 2 'number of lines (2)
PAUSE 500
RETURN
'****************************************************************
readv:
ADCIN 2,V ' take reading
T = V
LCDOUT $FE,2,"ADC ", DEC T," "
lCDOUT $FE,$C0,"DCV = ",DEC (V/100),".",dec2 V," "
RETURN
Bookmarks