pinMode Analog pin

Hi, do I really need to to set pinMode(AX,INPUT) to analog pins? It will always be an INPUT correct? Should I really do that?

And one final question: I already used all my digital pins of my arduino, can I make digitalWrite(A0,HIGH) to turn the internal pull up resistor? Does it work on analog pins?

The analogRead() function takes care of setting up the pin. You don't need to set it as input. Pins A0 to A5 are digital pins with analog read as a special function. Turning the internal pullup on with
pinMode(Ax, INPUT_PULLUP) makes it more clear what you are doing, I think.

Thanks!

The analogRead() function takes care of setting up the pin. You don't need to set it as input.

Whilst you don't need to set any pin as an input because that is what they default to, I think it makes the intention much clearer if you do, as does using the A* aliases even when using analogRead() which is quite happy to accept 0, 1, 2, 3 etc and translate it to mean the corresponding analogue pin.

int analogRead(uint8_t pin)
{
	uint8_t low, high;

#if defined(analogPinToChannel)
#if defined(__AVR_ATmega32U4__)
	if (pin >= 18) pin -= 18; // allow for channel or pin numbers
#endif
	pin = analogPinToChannel(pin);
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
	if (pin >= 54) pin -= 54; // allow for channel or pin numbers
#elif defined(__AVR_ATmega32U4__)
	if (pin >= 18) pin -= 18; // allow for channel or pin numbers
#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__)
	if (pin >= 24) pin -= 24; // allow for channel or pin numbers
#else
	if (pin >= 14) pin -= 14; // allow for channel or pin numbers
#endif

#if defined(ADCSRB) && defined(MUX5)
	// the MUX5 bit of ADCSRB selects whether we're reading from channels
	// 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high).
	ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5);
#endif
  
	// set the analog reference (high two bits of ADMUX) and select the
	// channel (low 4 bits).  this also sets ADLAR (left-adjust result)
	// to 0 (the default).
#if defined(ADMUX)
	ADMUX = (analog_reference << 6) | (pin & 0x07);
#endif

	// without a delay, we seem to read from the wrong channel
	//delay(1);

#if defined(ADCSRA) && defined(ADCL)
	// start the conversion
	sbi(ADCSRA, ADSC);

	// ADSC is cleared when the conversion finishes
	while (bit_is_set(ADCSRA, ADSC));

	// we have to read ADCL first; doing so locks both ADCL
	// and ADCH until ADCH is read.  reading ADCL second would
	// cause the results of each conversion to be discarded,
	// as ADCL and ADCH would be locked when it completed.
	low  = ADCL;
	high = ADCH;
#else
	// we dont have an ADC, return 0
	low  = 0;
	high = 0;
#endif

	// combine the two bytes
	return (high << 8) | low;
}

No, analogRead() does not handle setting the pin mode for you. Since all pins start as INPUTs, you don’t need to set the pins INPUT - unless you set them to be outputs somewhere else in the code, of course.