For starters...forget the formulas for just a little bit...look at raw numbers.
Do the raw numbers make sense?
For instance, if your Vref is 5v, and the Vin at the analog port is 2.5v, is the raw number 512 (for a 10 bit input) or 128 (for an 8 bit input) ?
If those numbers make sense, then work on the formulas. If they don't, well, then you've probably got something else goofy going on...ports not set up right, TRIS not set right, input circuit not set up right...something...
Some of the changes are marked in bold...some aren't...
Code:DEFINE OSC 20 DEFINE LCD_DREG PORTB 'LCD data port DEFINE LCD_DBIT 4 'LCD data starting bit 0 or 4 DEFINE LCD_RSREG PORTB 'LCD register select port DEFINE LCD_RSBIT 1 'LCD register select bit DEFINE LCD_EREG PORTB 'LCD enable port DEFINE LCD_EBIT 0 'LCD enable bit DEFINE LCD_BITS 4 'LCD bus size 4 or 8 DEFINE LCD_LINES 2 'Number lines on LCD Define ADC_BITS 10 ' Set number of bits in result Define ADC_CLOCK 0 ' Set clock source Define ADC_SAMPLEUS 50' Set sampling time in uS trisa=$ff:trisb=0:trisc=0:adcon1=142:bat_volts var word:raw_in var word Start: ADCIN porta.0, raw_in bat_volts = (raw_in */ 375) LCDout $FE, 1 , "Raw = ", DEC5 raw_in LCDout $FE, $C0, "Volts=", DEC2 (bat_volts/100),".",dec2 (bat_volts//100, " V" pause 200:goto start end




Bookmarks