Well, all I did is show you how Freescale intended to hardware to be used.
There was another big problem with how you were doing things - the code would be looping around consuming 100% of the cpu time attempting to do a real time task.
It's ok to loop around in some places, but that was a "tight" loop that due to it's purpose could not do much else.
The for(;

loop in main is the called the
foreground task, where as the interrupt in considered the
background task. The way you are doing things now, the motor control task only takes nanoseconds, no more that a few percent of the cpu time. Also the motor control work will preempt the foreground task, so it does not matter that it is just looping around, because the time critical work will happen as it should.
It is ok to do things in the foreground task, like testing if the switch had been pushed and turning the motor off, because now your time critical work is on an interrupt thread, and the pushing of a switch is not time critical as to when the motor goes off.
If you haven't already considered this, changing the value of PULSE will control how fast the motor steps.
Good luck on the rest of your project - if you have more questions we will be here - same bat time same bat channel.