competition program skipping over autonomous mode

i am trying to get my robot to start in autonomous mode then user control mode

but for some reason it skips to the user control mode i was wondering if someone could tell me what i’m doing wrong.

#pragma config(Sensor, dgtl1,  rightEncoder,   sensorQuadEncoder)
#pragma config(Sensor, dgtl3,  leftEncoder,    sensorQuadEncoder)
#pragma config(Motor,  port2,           leftMotor,     tmotorVex393HighSpeed, openLoop, reversed, encoder, encoderPort, None, 1000)
#pragma config(Motor,  port3,           rightMotor,    tmotorVex393HighSpeed, openLoop, encoder, encoderPort, dgtl1, 1000)
#pragma config(Motor,  port4,           armMotor,      tmotorVex393, openLoop)
#pragma config(Motor,  port5,           bedMotor,      tmotorVex393, openLoop)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

#pragma platform(VEX)

//Competition Control and Duration Settings
#pragma competitionControl(Competition)
#pragma autonomousDuration(60)
#pragma userControlDuration(60)

#include "Vex_Competition_Includes.c"   //Main competition background code...do not modify!



/////////////////////////////////////////////////////////////////////////////////////////
//
//                         automouse function
//
//                    these codes set the function for automouse modes
//
/////////////////////////////////////////////////////////////////////////////////////////

void pre_auton()
{
	// Set bStopTasksBetweenModes to false if you want to keep user created tasks running between
	// Autonomous and Tele-Op modes. You will need to manage all user created tasks if set to false.
	bStopTasksBetweenModes = false;

	// All activities that occur before the competition starts
	// Example: clearing encoders, setting servo positions, ...
}
void forward(int forwardDistance)
{

	// clears encoders 
	SensorValue[rightEncoder] = 0;
	SensorValue[leftEncoder] = 0;



	while (SensorValue[rightEncoder]<(((forwardDistance * 12 )/(4*3.14))*360)/2-81) 
	{
		motor[rightMotor]=120;
		motor[leftMotor]=120;
	}

}

void backward(int backwardDistance)
{

	// clears  encoder
	SensorValue[rightEncoder] = 0;
	SensorValue[leftEncoder] = 0;



	while (SensorValue[rightEncoder]<(((backwardDistance * 12 )/(4*3.14))*360)/2-81) 
	{
		motor[rightMotor]=-120;
		motor[leftMotor]=-120;
	}


}
void turnRight(int degreeRotation)
{
	SensorValue[rightEncoder] = 0;

	while (SensorValue[rightEncoder]< degreeRotation/2-81)
	{
		motor [rightMotor]=120;
		motor [leftMotor]=-120;
	}
}

void turnLeft(int degreeRotation)
{
	SensorValue[leftEncoder] = 0;

	while (SensorValue[leftEncoder]< degreeRotation/2-70)
	{
		motor [rightMotor]=-120;
		motor [leftMotor]=120;
	}
}




/////////////////////////////////////////////////////////////////////////////////////////
//
//                                 Autonomous Task
//
// This task is used to control your robot during the autonomous phase of a VEX Competition.
// You must modify the code to add your own robot specific commands here.
//
/////////////////////////////////////////////////////////////////////////////////////////

task autonomous()
{

	// .....................................................................................
	// Insert user code here.
	// .....................................................................................

	forward(3);


}

/////////////////////////////////////////////////////////////////////////////////////////
//
//                                 User Control Task
//
// This task is used to control your robot during the user control phase of a VEX Competition.
// You must modify the code to add your own robot specific commands here.
//
/////////////////////////////////////////////////////////////////////////////////////////

task usercontrol()
{
	// User control code here, inside the loop
	while(true)
	{


		{ //driving motor control
			motor[leftMotor]  = vexRT[Ch2];   // Left Joystick Y value
			motor[rightMotor] = vexRT[Ch3];   // Right Joystick Y value
	




		}
	}
	// This is the main execution loop for the user control program. Each time through the loop
	// your program should update motor + servo values based on feedback from the joysticks.

	// .....................................................................................
	// Insert user code here. This is where you use the joystick values to update your motors, etc.
	// .....................................................................................

}

The code seems to be ok (I am getting a value of 434 for the encoder equation when a value of 3 is passed in), so I believe this may be a setup issue.

When you are running the code, are you using a Competition Switch (physical), the Competition Switch Debugger Window (inside ROBOTC, with the Joystick Controller connected to the computer via the Programming Hardware kit), or the FCS software? You will need to use one of these three methods to control which section of the code is being run at any given point; otherwise, the program will revert to the User Control section of the program (which it is doing in this case).

Check out this wiki link for a brief overview of how the Competition Switch Debugger Window works (it’s pretty simple, and emulates the physical Competition Switch): http://www.robotc.net/wiki/VEX2_Competition#Testing_with_VEXnet_-_Debugger

the encoder equation was so that i could convert my input in feet to degrees for the encoder plus for some reason the encoder were not accurate so i plugged in for the -81 and -70 for error. also this is for the skills USA mobile robot competition and we are not able to use the competition switch unfortunately.

is there another way to get the same results through a different program

i tried to tie the autonomous program to a controller button but for some reason it went in circles using the some void functions in my program.