ADC auto conversion and serial monitor transmit problems

I am using Arduino Uno for a project where I am sensing the ADC voltage.
To verify the that ADC is sensing correctly, I am passing the value using Serial.read function and reading the value in the serial monitor.
My problem is that the Serial.read value does not change even though the actual voltage is changing.
I have enabled ADC auto conversion based on Timer1 overflow and I can observe that ADC_vect is called every interrupt. But the value transmitted to Serial Monitor does not vary. My observation is that ADC input voltage just before or after calling Serial Monitor is read properly. But when I subsequently change the ADC input voltage, the new value is not shown in the Serial Monitor.

void setup(){
     
   // ADC settings-------------------------------------------------
   ADMUX = 0; // Reset ADC Mux Select register
   ADMUX |= (0 << ADLAR) | // ADC right adjust result
            (0 << REFS1) | 
            (1 << REFS0) ; // AVcc with external cap at AREF pin, Select ADC channel 0
   ADCSRA = 0; //  Reset ADC control status register A
   ADCSRB = 0; //  Reset ADC control status register B
   ADCSRA |= (1 << ADEN) | //Enable ADC
             (1 << ADATE) | // ADC Auto trigger enable
             (1 << ADIE) | // Enable ADC interrupt
             (1 << ADPS2) | 
             (1 << ADPS1) | 
             (0 << ADPS0) ; // ADC prescalar 64
   ADCSRB |= (1 << ADTS2) | 
             (1 << ADTS1) |
             (0 << ADTS0) ;// ADC auto trigger source TIMER1 overflow at BOTTOM 
   DIDR0 = 0; // Reset Digital Input disable register 0
   DIDR0 |= 0x3F; // Disable digital input at pins A0-A5
 
  //ADC start conversion
  ADCSRA |= (1 << ADSC); 

}

ISR(ADC_vect){
  ADCVAL[0] = (ADCH << 8) | ADCL; 
} 

void loop(){
 if (Serial.available() > 0){
       readASCII = Serial.read(); // read the incoming byte:
       if(readASCII == 'd'){ 
        temp = ADCVAL[0];
        Serial.println(temp, HEX);
       }
       else {asm ("nop\n\t"); }
    }
}

Ok, I figured out the problem 20 mins after posting here. I was reading the ADC register in the wrong order:

 Correct: ADCVAL[0] = ADCL | (ADCH << 8);
Wrong: ADCVAL[0] = (ADCH << 8) | ADCL ;