if ( GPIOD_INPUT_VAL & 0x20 ) { GPIOD_OUTPUT_VAL &=~ 0x40; // <- THIS IS IMPORTANT udelay(250); data = adc_scan(ADC_SCROLLPAD); GPIOD_OUTPUT_VAL |= 0x40; //<- AND THIS