I am able to get an a2d value from my 877 chip reding value from a potentiometer connected to chip (using chips vdd as vref). after i put the value's from ADRESH into a user register (via W of course) i perform an ADDWF where W=D'55' to see whether or not the A2d value is greater than 200 or not (this is my threshold level i am interested in). the strange thing is that the STATUS carry bit (bit 0) does not stay at 1 like it should when the user register is 201 and greater. using leds, i am able to verify that the status bit will only show a MSB carry when the user register is of the following values: 201 through 207 217 through 231 247 through 255 in the other values the carry bit is 0 as verifed by leds. the pattern seems to be that the status bit will only show a carry when the lower byte of the user register being added to W is between 9 and 15, which coincides with a lower byte carry (STAUS bit 1 D being set). any thoughts? it is very perplexing. some of the code: Main call ad_portc goto Main ad_portc bsf ADCON0,GO ;Start A/D conversion Wait btfsc ADCON0,GO ; Wait for conversion to complete goto Wait movf ADRESH,W ;Write A/D result to PORTC movwf PORTC ;LEDs movwf Throttle movlw D'55' addwf Throttle,W btfss status, 0 FALSE goto false_10 TRUE bsf PORTB,0 GOTO continue_10 false_10 bcf PORTB,0 continue_10 return thanks, jeff -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details. -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details. -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.