Counter in assembly, using interrupt to prevent multiple counts with single push?
You need to "debounce" your switch. This can be done in hardware by adding a small capacitor across the input or in software by checking that the switch maintains its state for long enough.


  Now the other problem is that I need to add the value of 1 once and only once while pressing the button. Imagine the button pressed by 1 minute and it must be not add more than the initial increment of 1.


Now you need a software "one-shot". You need to remember if the button was pressed the last time you looked.

// Pseudo code
if(button) {               // Button was pressed
  if(!buttonMemory) {      // Button was off last time we looked.
    counter ++;            // Increment the counter
    buttonMemory = true;   // Remember the button was pressed.
  }
} else {
  buttonMemory = false;    // Cancel the memory.
}