encerrar programa

Aqui não existe o conceito de parar o programa.

Existe o conceito do programa fazer algo para responder a um evento.

No teu caso...

void programa_que_funciona_muito_bem(void) {};

void setup(){}

unsigned char flag = 0; 
void loop(){

if (botao_apertado == TRUE && flag == 0) {
    programa_que_funciona_muito_bem();
    flag = 1;
}

if (botao_apertado == FALSE) {
    flag = 0;
}
}

Quando apertas o botão, ele corre a funcao programa_que_funciona_muito_bem() uma vez. Quando soltas o botão, o Arduino fica pronto a correr de novo a funcão quando carregares no botão de novo.