void sendDir(unsigned char sendValue) { if(USART_IsSendReady(1)) { USART_Send(sendValue, 1); } }
void mainTick(){ static unsigned char button; static unsigned char pressed; //decrease states for buttonpress button = ~PINA; switch(gameStatus){ case intro: if(GetBit(button,0)){ gameStatus = play; playTime = 0; pressed = 1; currScore = 0; lcdTick(); if(USART_IsSendReady()) USART_Send(0x41); } else if(USART_HasReceived()){ tempMessage = USART_Receive(); if( tempMessage == 0xC1 ){ gameStatus = highscore; playTime = 0; lcdTick(); } else if( tempMessage == 0xC2){ gameStatus = resetHighScore; currHighScore = 0; eeprom_write_byte ((uint8_t*) 46, currHighScore); playTime = 0; lcdTick(); } } else gameStatus = intro; break; case highscore: if(playTime == 500){ gameStatus = intro; lcdTick(); } else gameStatus = highscore; break; case resetHighScore: if(playTime == 500){ gameStatus = intro; lcdTick(); } else gameStatus = resetHighScore; break; case play: if(!(GetBit(button,0) && !pressed) && playTime < 4000 ) gameStatus = play; else if((GetBit(button,0) && !pressed) || playTime == 4000){ gameStatus = gameOver; lcdTick(); playTime = 0; if(currScore > currHighScore){ currHighScore = currScore; eeprom_write_byte ((uint8_t*) 46, currHighScore); } if(USART_IsSendReady()) USART_Send(0x40); } else gameStatus = play; break; case gameOver: if(playTime == 500){ gameStatus = intro; lcdTick(); } else if(playTime < 500) gameStatus = gameOver; else gameStatus = gameOver; break; } switch(gameStatus){ case intro: PORTB = 0; currScore = 0; break; case highscore: playTime++; break; case resetHighScore: playTime++; break; case play: if(!GetBit(button,0)) pressed = 0; playTime++; if(USART_HasReceived()){ tempMessage = USART_Receive(); if(GetBit(tempMessage,7) && !GetBit(tempMessage,6)) if((tempMessage & 0x3F) != currScore) updateScore(tempMessage & 0x3F); } break; case gameOver: playTime++; break; } }