...and this is the original code from this schematic :
Code:
'****************************************************************
'*  Name    : VOLTMETRE.BAS                                      *
'*  Author  : [Erol Tahir Erdal]                                *
'*  Notice  : Copyright (c) 2005 [ETE]                          *
'*          : All Rights Reserved                               *
'*  Date    : 01.03.2005                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE LCD_DREG		PORTB	'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_RSREG	PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	1		'LCD RS bacağı Hangi Bite bağlı ?
DEFINE LCD_EREG		PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3		'LCD Enable Bacağı Hangi bite bağlı ?
define lcd_RWREG    PORTB
define LC_RWBIT     2
DEFINE LCD_BITS		4		'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor
	 
DEFINE	ADC_BITS	10	    ' Set number of bits in result
DEFINE	ADC_CLOCK	3	    ' Set clock source (3=rc)
DEFINE	ADC_SAMPLEUS 50	    ' Set sampling time in uS
     
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_off
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC

ADCON1=%10001110
TRISA=%00010011
TRISB=0
TRISC=0

VOLT    VAR  WORD
HAM     VAR  WORD
HVD     var  word
AMPER   var  word


MV      VAR  BYTE
MA      VAR BYTE

PORTB=0
PORTA=0
VOLT=0
PAUSE 100
LCDOUT $FE,1


BASLA:
       ADCIN 0,HAM
BAK:   IF ADCON0.2=1 THEN BAK
       PAUSE 5
       GOSUB HESAPV
       
       ADCIN 1,HAM
       PAUSE 5
       GOSUB HESAPA
       
       GOSUB EKRAN
       PAUSE 1500
       GOTO BASLA       
       
       
EKRAN:
'       LCDOUT$FE,2,"HAM=",#HAM  'gerekirse okanan ham değerini görmek için
       LCDOUT $FE,$02,"VOLT =",DEC VOLT,",",DEC1 MV 'dec2 yazdık çünki virgülden sonra 2 hane hassasiyetimiz var.
       LCDOUT $FE,$C0,"AMPER=",DEC2 AMPER,",",DEC2 MA 
'       LCDOUT $FE,$C0,"AMPER=",DEC HVD
       RETURN
       
HESAPV: '0-25V değerlerini oukuyup göstermek içindir
       HVD=((HAM+1)*/875)/10 'bu ifade aslında (HAM+1)*625/256 nın karşılığıdır
'CARPAN=625  yani ((25x10)/1024)*256 sonuç 62,5 çıktığı için 625 almak için 
' 10 yerine 100 ile çarpıyoruz. yani CARPAN=((25*100)/1024)*256
       VOLT=HVD/10  'başlangıçta 100 ile çarpılmış halini hesaplamış idik ohalde 100 e böleceğiz
       MV=(HVD)//10 'seaplanan sayını 100 bölünmesinden kalan sayı ondalık hanesidir
      RETURN
'      Formül;
'      Okunacak Maksimum Volt=OMV olsun
'      CARPAN= ((OMV*10)/1024) * 256   veya ((OMV*100)/1024)*256
'      CARPAN değerini 3 haneli rakam olarak kullanmaya gayret edin.
'      şayet  62,5 gibi 2 haneli bir rakam çıkar ise bunu 625 kabul edin ve
'      (OMV * 10) değerini (OMV * 100) olarak kullanın. Sonuçta hesaplanan volt değerini 
'      10 yerine 100'e bölmeniz gerekecek tabiiki. OV hesabında da Yine 100 bölünmüş
'      değerden kalanı hesaplamak gerekecek. Yukarıdaki örnekte olduğu gibi. 
'      Hesaplanacak Volt Değeri =HVD olsun 
'      ADC den okunan Değer HAM olsun
'      HVD=(HAM+1)*/CARPAN    bulunacak değer gerçek volt değerinin 10 ile çarpılmış halidir.
'      Tamsayı VOLT (TV)= HVD/10      veya TV=HVD/100  
'      Ondalık VOLT (OV)= HVD//10     veya OV=HVD//100
'Ekrana yazdırırken;
'      LCDOUT $FE,2,"VOLT:", DEC TV,",",DEC1 OV   veya DEC2 OV olacaktır
HESAPA:
       HVD=(HAM+1)*/250
       AMPER=HVD/100
       MA=HVD//100
       RETURN
Credits to 320volts.com !