New problem ... voltage is always 12

here's my program:

the part under full " voltage = (x * m / 10000) * 3 doesnt seem to work properly... what am i doin wrong...?


'************************************************* ***************
'* Name : F767_LCDBM *
'* Author : Ryan Barrett *
'* Notice : Copyright (c) 2005 Rytech Computing *
'* : All Rights Reserved *
'* Date : 6/24/2005 *
'* Version : 1.1 *
'* Notes : LCD BATTERY MONITOR PROGRAM * *
'* : *
'************************************************* ***************
define OSC 20
Define LOADER_USED 1
DEFINE LCD_DREG PORTC
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 0
' Set LCD Register Select port
DEFINE LCD_RSREG PORTB
' Set LCD Register Select bit
DEFINE LCD_RSBIT 5
' Set LCD Enable port
DEFINE LCD_EREG PORTB
' Set LCD Enable bit
DEFINE LCD_EBIT 4
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 8
' Set number of lines on LCD
DEFINE LCD_LINES 2
' Set command delay time in us
DEFINE LCD_COMMANDUS 2000
' Set data delay time in us
DEFINE LCD_DATAUS 50
ADCON1 = 4
SLOW VAR BYTE
NORMAL VAR BYTE
FAST VAR BYTE
statusled var portb.6
statusled2 VAR portb.7
mspeedraw VAR Byte
x var byte
voltage var WORD
m con 195
' sets up the i/o ports on pic
TRISA = %00000000
TRISB = %00000011
TRISC = %00000000
ADCON1 = 7
' sets initial values to variables
SLOW = 45
NORMAL = 127
FAST = 254
' flashes statusled led 4 times to signal program start
HIGH statusled
PAUSE 1000
LOW statusled
PAUSE 500 'flash leD
HIGH statusled
PAUSE 1000
LOW statusled
PAUSE 500 'flash leD
HIGH statusled
PAUSE 1000
LOW statusled
PAUSE 500 'flash leD
HIGH statusled
PAUSE 1000
LOW statusled 'flash leD
PAUSE 5000
HIGH statusled
PAUSE 5000
LOW statusled
input portb.0
INPUT portb.1
Lcdout $fe, 1
LCDOUT $fe, $80,"RYTECH",$fe, $C0,"COMPUTING"
PAUSE 2000
GOTO loop
loop:

mspeedraw = 0
'GOSUB togglestatusleds


' ATTEMPT TO CHECK THE INPUT LEVELS AT 2 PINS on PORTB.0 and PORTB.1
' calculates the motor speed setting based on the 2 inputs
If portb.0 = 1 Then mspeedraw = (mspeedraw + 1)
IF portb.1 = 1 THEN mspeedraw = (mspeedraw + 2)
GOTO outputit
' ATTEMPT TO OUTPUT HPWM TO THE MOTOR DRIVER BOARD BASED ON mspeedraw
' DEBUG INDICATION ON STATUSLED & STATUSLED2
' if slow
GOTO LOOP
outputit:
IF mspeedraw = 1 THEN SLOWSPEED
' if normal speed
IF mspeedraw = 2 THEN NORMALSPEED
' if full speed
IF mspeedraw = 3 THEN FULLSPEED
IF mspeedraw = 0 ThEN NOSPEED
GOTO LOOP
SLOWSPEED:
'HPWM 1, SLOW, 1000
Lcdout $fe, 1, "slow"
pause 100
HIGH statusled
LOW statusled2
GOTO loop
NORMALSPEED:
Lcdout $fe, 1, "normal"
PAUSE 100
LOW statusled
HIGH statusled2
GOTO LOOP
FULLSPEED:
Lcdout $fe, 1, "full"
pause 100
HIGH statusled
HIGH statusled2
ADCON0 = $41
Pauseus 50 ' Wait for channel to setup
ADCON0.2 = 1 ' Start conversion
Pauseus 50 ' Wait for conversion
x = ADRESH
voltage = (x * m / 10000) * 3
Lcdout $fe, 1, "x=", #x
PAUSE 2000
LCDOUT $FE, $C0, #voltage
pause 3000
GOTO LOOP
NOSPEED:
Lcdout $fe, 1, "none"
pause 100
LOW statusled
LOW statusled2
GOTO loop

flashstatusled:
low statusled
pause 500
high statusled
pause 1000
Low statusled
RETURn
GOTO LOOP
'toggle status led test
togglestatusleds:
HIGH statusled
LOW statusled2
pause 400
HIGH statusled2
low statusled
pause 400
low statusled
LOW statusled2
pause 400
RETURN
GOTO LOOP
nostatusleds:
LOW statusled
LOW statusled2
pause 1000
RETURN
GOTO loop
bothstatusleds:
HIGH statusled
HIGH statusled2
pause 1000
RETURN
Goto loop