Software Serial Problem (help, please!)

I should not even answer you for your rudeness and terrible way of dealing with people (if you were as smart as you think, you would not be here answering forums). As far as I know, this forum is for people with all levels of arduino programming, from basic to advanced. Again, the program compiled, the rest of the code is working (I had tested part by part, as stated earlier).

You started to get rude, I was just replying with the same kind of words. Unfortunately it seems that you are help-resistant, at least you tell us that we are all wrong when we tell you that parts of your sketch won't work that way.
We have reason to ask all posters on the forum to provide complete sketches because experience shows that very often the problems are in that parts of the code that is not posted. In your case we find enough problems in the excerpts you posted but you know it better and tell us that we point to the wrong stuff.

I assure you that once the program reaches this part

       while (tag == 0)     
          Timer1.attachInterrupt(blink1, freq_x[p]*1000);

and tag is set to 0 it will never leave this while loop again. The while loop just checks that variable "tag" and this variable is not changed inside the loop. If tag should be changed by that ominous "blink1" function you must declare that variable "volatile", otherwise the compiler may optimize it away.

It's up to you if you want to change this or hang on a sketch that will never run correctly. It doesn't make it better if you start to attack people who wants to help you. If you're convinced that your code is correct although we are telling you the opposite provide facts why you think it has to be the way you've done it.

Regarding the variable definitions I agree completely with Delta_G.