This is part of Orignal Switch case statement
Code:
void main(void)
{
char str_RPM[]="00000"; // Buffer for RPM string
unsigned char pin_cnt=0; // Counter for PIN digit
unsigned char speed_cnt=0; // Counter for Speed digit
_Bool direction=FORWARD; // Direction flag
char ENT[5]=" "; // PIN string
char CODE[]="0123"; // PIN number
unsigned int set_speed=2400;// Set speed for Motor
_Bool old = 0; // Used to check for RPM updates
_Bool mrun=RUNNING; // Motor running flag
int count=0;
char str[20];
char err;
// Initialisation function calls
Initialise(); // Set up CPU
Init_Ports(); // Set up I/Os
keyscan_4x4_init(); // Set up Keypad scan
Init_PWM(); // Set up PWM
Init_RPM(); // Set up RPM counting
GLCD_Initalize(); // Set up Graphic Display
GLCD_ClearScreen();
state=ST_STARTUP;
Init_Uart0();
while(1)
{
// Start State Machine
switch(state)
{
case ST_STARTUP: // STARTUP STATE
Calc_RPM(counter, str_RPM);//CALCULATE RPM
GLCD_GoTo(7*FONT_WIDTH,0);
GLCD_WriteString(MSG_WELCOME);//DISPLAY WELCOME
GLCD_GoTo(0,2);
GLCD_WriteString(MSG_SPEED);//DISPLAY SPEED
GLCD_GoTo(6*FONT_WIDTH,2);
GLCD_WriteString(str_RPM);//DISPLAY RPM
GLCD_GoTo(12*FONT_WIDTH,2);
if(direction==FORWARD)//DISPLAY FORWARD/REVERSE
GLCD_WriteString(MSG_FORW);
else
GLCD_WriteString(MSG_REVE);
// Display PIN request
GLCD_GoTo(0,6);
GLCD_WriteString(MSG_EPIN);
// Check for key press
character=getcommand(); //command contains character of key pushed
if (character!='X')
{
ENT[pin_cnt]=character;
GLCD_GoTo((pin_cnt+11)*FONT_WIDTH,6);
GLCD_WriteChar(character); //print character to terminal I/O
pin_cnt++;
}
if (pin_cnt > 3) // End of PIN
{
pin_cnt = 0; // Reset PIN digit counter
ENT[4]='\0'; // Terminate PIN string
if (strcmp(ENT,CODE)==0)
{ // PIN correct
state=ST_MAINMENU;
}
else
{ // PIN incorrect
GLCD_GoTo((pin_cnt+11)*FONT_WIDTH,6);
GLCD_WriteString(MSG_CPIN);
}
GLCD_ClearScreen();
}
break;
//--------------End MOTOR START/STOP---------------------------------//
case CHANGESPEEDDIR: //CHANGE DIRECTION/SPEED STATE
character=getcommand(); //command contains character of key pushed
switch(character)
{
case '1': //forward
RAMP_DOWN(direction);
direction=FORWARD;
TA4=65000;
TABSR_4=0;
reload=15000;
TA4=reload;
TABSR_4=1;
break;
case '2': // reverse
RAMP_DOWN(direction);
direction=REVERSE;
TA3=65000;
TABSR_3=0;
reload=15000;
TA3=reload;
TABSR_3=1;
break;
case '3': //change speed
state=ST_CHSPEED;
GLCD_ClearScreen();
break;
case 'D': //MAINMENU
state=ST_MAINMENU;
GLCD_ClearScreen();
break;
}
break;
//--------------End CHANGE DIRECTION/SPEED---------------------------------//
case ST_CHSPEED: //CHANGE SPEED STATE
GLCD_GoTo(13*FONT_WIDTH,4);
if(direction==FORWARD)
GLCD_WriteString(MSG_FORW);//DISPLAY FORWARD
else
GLCD_WriteString(MSG_REVE); //DISPLAY REVERSE
GLCD_GoTo(0,7);
GLCD_WriteString(MSG_D_FOR_MAIN);//DISPLAY MAIN MENU
character=getcommand();
if (character!='X')
{
value[speed_cnt]=character;
GLCD_GoTo((speed_cnt+11)*FONT_WIDTH,2);
GLCD_WriteChar(character); //print character to terminal I/O
speed_cnt++;
}
if (speed_cnt > 3)
{
speed_cnt = 0;
set_speed=(value[0]-48)*1000+(value[1]-48)*100+(value[2]-48)*10+(value[3]-48);
GLCD_ClearScreen();
}
if(character=='D')//RETURN TO MAIN MENU
{
state=ST_MAINMENU;
GLCD_ClearScreen();
};
break;
//--------------End CHANGE SPEED---------------------------------//