Arduino Uno não mantém a programação após desenergizado

Já tentei o botão de reset, mas não funcionou.

Seguem os programas:

*nesse primeiro, alimento o arduino apenas pelo cabo USB conectado ao computador e ao próprio conector da placa, mas ao retirar o cabo e depois conectá-lo novamente o programa não volta a funcionar direto, somente ao reiniciar o computador

const int xpin = A0;
const int ypin = A1;
const int zpin = A2;

void setup()
{

Serial.begin(9600);

analogReference(EXTERNAL);

pinMode(xpin, INPUT);
pinMode(ypin, INPUT);
pinMode(zpin, INPUT);

}

void loop()
{

Serial.print("z");
delay(10);
Serial.print(analogRead(xpin));

Serial.print("x");
delay(10);
Serial.print(analogRead(ypin));

Serial.print("y");
delay(10);
Serial.print(analogRead(zpin));

}

*o próximo programa testei com o arduino alimentado pela bateria, como nessa imagem: http://mlb-s2-p.mlstatic.com/cabo-adaptador-alimentaco-arduino-bateria-9v-3839-MLB4864657802_082013-O.jpg com um adaptador ligado à bateria de 9V e ao conector da placa. Quando upo o programa somente com a alimentação do cabo USB como no programa acima, funciona normalmente, mas quando retiro o cabo USB e alimento com a bateria, a programação não funciona.

#include <EEPROM.h>

const int xpin = A0;
const int ypin = A1;
const int zpin = A2;

int addr = 0;

void setup()
{

analogReference(EXTERNAL);

pinMode(xpin, INPUT);
pinMode(ypin, INPUT);
pinMode(zpin, INPUT);

}

void loop()
{

int x = analogRead(xpin)/4;
EEPROM.write (addr,x);
delay(100);

int y = analogRead(ypin)/4;
addr = addr + 1;
EEPROM.write (addr,y);
delay(100);

int z = analogRead(zpin)/4;
addr = addr + 1;
EEPROM.write (addr,z);
delay(100);

addr = addr + 1;

if (addr == 512)
addr = 0;

delay(1000);

}

Em ambos os programas tento enviar ou gravar informações de três eixos de um sensor, respectivamente, os quais liguei aos pinos A0, A1 e A2 do Arduino e a alimentação do sensor liguei ao pino 3.3V do arduino.