So, you're saying I should add this mode change code
NO!
In each mode function, you call buttoncheck(), but you don't end the mode when a switch is pressed. Why not?
Your buttoncheck() needs some work. It should return a value - the switch that was pressed. It should NOT diddle a global variable. Every time you call it, you should take action on what it returns. In most cases, that simply means returning from the function in which you call it.