示例#1
0
void sendDir(unsigned char sendValue) {
	if(USART_IsSendReady(1)) {
		USART_Send(sendValue, 1);
	}
}
示例#2
0
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;
	}
}