Remebering an Input

Very simple yet I am unable to figure it out. All I want to do is start a MTR with a normally open PB. I am able to turn the motor while the button is held, but I want the MTR to stay on after it's release

if (digitalRead(Start_PB_NO) == HIGH){
    digitalWrite(MAIN_DIR, HIGH);
    digitalWrite(MAIN_ENA, HIGH);
    digitalWrite(MAIN_PUL, HIGH);
    delayMicroseconds(50);
    digitalWrite(MAIN_PUL, LOW);
    delayMicroseconds(50);
    }

When your input goes HIGH, set a variable HIGH.
When your variable is HIGH do your stuff.
Reset your variable LOW when you need to.

First want to note that with a NO switch, if you're looking for a HIGH level to do something when the button is pressed you need a pull-down resistor on that pin or it will do unpredictable things when the switch is open.

A more typical use is to use INPUT_PULLUP with a NO button that grounds the pin when pressed.

The below (compiles but not tested) is written for the levels you used but keep the above in mind.

The idea is to look for a state change of the switch; it was just pressed rather than it is pressed.

What turns the motor off?

//use whatever pins you've assigned
const byte MAIN_DIR = 2;
const byte MAIN_ENA = 3;
const byte MAIN_PUL = 4;
const byte Start_PB_NO = 5;

byte
    lastButton;
bool
    bPulseLevel,
    bMotorRunning;
void setup()
{
    pinMode( MAIN_PUL, OUTPUT );
    digitalWrite( MAIN_PUL, LOW );
    bPulseLevel = false;
    
    pinMode( MAIN_DIR, OUTPUT );
    pinMode( MAIN_ENA, OUTPUT );
    digitalWrite(MAIN_DIR, HIGH);
    digitalWrite(MAIN_ENA, HIGH);

    pinMode( Start_PB_NO, INPUT );
    lastButton = digitalRead( Start_PB_NO );
    bMotorRunning = false;
        
}//setup

void loop()
{
    byte
        currButton;
    static unsigned long
        timePulse;
    unsigned long
        timeNow;
        
    currButton = digitalRead( Start_PB_NO );
    if( currButton != lastButton )
    {
        if( currButton == HIGH )
        {
            timePulse = micros();
            bMotorRunning = true;
            
        }//if
        
        lastButton = currButton;
    }

    if( bMotorRunning )
    {
        timeNow = micros();
        if( (timeNow - timePulse) > 50 )
        {
            bPulseLevel ^= true;
            digitalWrite( MAIN_PUL, (bPulseLevel)?HIGH:LOW );
            timePulse = timeNow;
            
        }//if
        
    }//if
    
}//loop

Thank you guys, i shortened it down a lot more and it works.

  currButton = digitalRead(Start_PB_NO);
  if (currButton != lastButton) {
    if (currButton == HIGH) {
      bMotorRunning = true;
    }

    lastButton = currButton;
  }

  if ( bMotorRunning ) {
    digitalWrite(MAIN_DIR, HIGH);
    digitalWrite(MAIN_ENA, HIGH);
    digitalWrite(MAIN_PUL, HIGH);
    delayMicroseconds(50);
    digitalWrite(MAIN_PUL, LOW);
    delayMicroseconds(50);
  }

  if (digitalRead(Stop_PB_NC) == HIGH) {
    bMotorRunning = false;
  }

Blackfin:
What turns the motor off?

Remove the power plug from the wall?

BTW, placing { and } on lines by themselves can make things easier to read.