コード例 #1
0
ファイル: Excepciones.c プロジェクト: wynro/proyecto-hardware
void trataExcepcion(void) {
	int codigo_error;
//Algoritmo de tratamiento:
// Imprimir codigo de error en 8led
	D8Led_init(); // Nos arriesgamos a reinizializar la pantalla...
	codigo_error = getMode(); // Obtenemos el modo, que usaremos para determinar en que excepcion estamos
	//push_debug(codigo_error, 0); // Metemos la excepcion en la pila
	// Por ahora, colgamos el sistema con el codigo de error parpadeante
	while (1) {
		D8Led_symbol(codigo_error - 1);
		Delay(1000);
		D8Led_symbol(16);
		Delay(1000);
	}
}
コード例 #2
0
ファイル: main.c プロジェクト: huig-/SED
/*--- codigo de la funcion ---*/
int Main(void){

	char *pt_str = str;
	leds_off();
	sys_init(); // inicializacion de la placa, interrupciones, puertos
	Eint4567_init();
	keyboard_init();
	Uart_Init(115200); // inicializacion de la Uart
	Uart_Config(); // configuración de interrupciones y buffers

	while(1){
		*pt_str = Uart_Getch1(); // leer caracter
		if(pt_str[0] == 'L'){
			led1_on();
			led2_off();
		} else if (pt_str[0] == 'R'){
			led2_on();
			led1_off();
		}

		else  {
			D8Led_symbol(pt_str[0]-'0');
		}
	}
}
コード例 #3
0
void incrementar0_8(void){
	if(simbolo==12 || simbolo==15){
		simbolo = 0;
	}
	else{
		simbolo += 1;
		if(simbolo==9){
			simbolo = 0;
		}
	}

	D8Led_symbol(simbolo);
}
コード例 #4
0
ファイル: timer.c プロジェクト: huig-/SED
void timer4_ISR(void)
{
	DelayMs(200);
	/*Check if keyboard was pressed*/
	if (key == -1 || key != numbers[3]) //mistake
	    D8Led_symbol(numbers[3]);
	else
	    D8Led_symbol_correct(numbers[3]);
	rINTMSK = rINTMSK | BIT_TIMER4; //disable timer4
	rI_ISPC = BIT_TIMER4;
	DelayMs(1200);
	random_number_generator();
	cont = 3;
	rINTMSK = rINTMSK & ~(BIT_TIMER0); //enable timer0
}
コード例 #5
0
ファイル: timer.c プロジェクト: huig-/SED
void timer0_ISR(void)
{
	DelayMs(100);
	cont--;
	D8Led_symbol(numbers[cont]);
	if (cont == 0) {
		rINTMSK = rINTMSK | BIT_TIMER0; //disable timer0
		rI_ISPC = BIT_TIMER0;
		//key = -1;
		//DelayMs(200);
		//rINTMSK = rINTMSK & ~(BIT_TIMER4); //enable timer4
		rINTMSK = rINTMSK & ~(BIT_TIMER1); //enable timer1
	}
	rI_ISPC = BIT_TIMER0;
}
コード例 #6
0
ファイル: button.c プロジェクト: sanz1995/Proyecto-Hardware
void Eint4567_ISR(void)
{
	/* Identificar la interrupcion (hay dos pulsadores)*/
	int which_int = rEXTINTPND;
	switch (which_int)
	{
		case 4:
			push_debug(0xFFFFFFFF,0xFFFFFFFF);

			boton=1;
			rINTMSK =BIT_EINT4567 | rINTMSK; //deshabilitar boton
			Timer3_Empezar();

			estado=1;
			int_count++; // incrementamos el contador
			if(int_count==10){
				int_count=reset;
			}
			break;
		case 8:
			boton=2;
			rINTMSK =BIT_EINT4567 | rINTMSK; //deshabilitar boton
			Timer3_Empezar();

			confirmacion=1;
			estado=1;
			break;
		default:
			break;
	}
	// }
	D8Led_symbol(int_count); // sacamos el valor por pantalla (módulo 16)
	/* Finalizar ISR */
	rEXTINTPND = 0xf;				// borra los bits en EXTINTPND
	rI_ISPC   |= BIT_EINT4567;		// borra el bit pendiente en INTPND

	//esto
	//rINTMSK    = ~(BIT_GLOBAL | BIT_TIMER0| BIT_TIMER2);

}
コード例 #7
0
ファイル: button.c プロジェクト: roberlarues/PH
void Eint4567_ISR(void)
{
	/* Identificar la interrupcion (hay dos pulsadores)*/
	int which_int = rEXTINTPND;
	switch (which_int)
	{
		case 4:
			int_count++; // incrementamos el contador
			break;
		case 8:
			int_count--; // decrementamos el contador
			break;
		default:
			break;
	}
	// }
	D8Led_symbol(int_count&0x000f); // sacamos el valor por pantalla (módulo 16)
	/* Finalizar ISR */
	rEXTINTPND = 0xf;				// borra los bits en EXTINTPND
	rI_ISPC   |= BIT_EINT4567;		// borra el bit pendiente en INTPND

}
コード例 #8
0
void esperar_mov()
{
	while(mov_done == 0){
		undisplay_ficha(8,8);
		display_mensaje_ayuda();
		if (reset_mov == 1){ // si viene de reset mov -> borrar ficha del lcd
			simbolo = 15;
			D8Led_symbol(15);
			undisplay_ficha(fila,columna);
			reset_mov = 0;
		}
		while (actual == FILA) { // bucle de espera de respuestas hasta que el se modifique el valor de ready (hay que hacerlo manualmente)
			if(actualizar_tiempo == 1){ // actualiza cada decima de segundo
				tiempo += 1;
				display_actualizar_tiempo(tiempo);
				actualizar_tiempo = 0;
			}
			while (get_contador_ficha() > 0){
				incrementar0_8();
				decrementar_contador_ficha();
			}
			if(get_confirmacion()==1){ // si se pulsa el boton derecho.
				fila = (char) simbolo;
				simbolo = 12;
				D8Led_symbol(12);
				set_confirmacion(0);
				actual = COLUMNA;
			}
		}

		while (actual == COLUMNA) { // bucle de espera de respuestas hasta que el se modifique el valor de ready (hay que hacerlo manualmente)
			if(actualizar_tiempo == 1){ // actualiza cada decima de segundo
				tiempo += 1;
				display_actualizar_tiempo(tiempo);
				actualizar_tiempo = 0;
			}
			while (get_contador_ficha() > 0){
				incrementar0_8();
				decrementar_contador_ficha();
			}
			if(get_confirmacion()==1){ // si se pulsa el boton derecho.
				columna = (char) simbolo;
				simbolo = 15;
				D8Led_symbol(15);
				set_confirmacion(0);
				actual = CONFIRMAR;
				timer1_init();
			}
		}
		
		if (fila == 8 || columna == 8){ // si pasar movimiento -> ocultar mensaje de ayuda para mostrar mensaje de pasando
			undisplay_mensaje_ayuda();
		}
		while (actual == CONFIRMAR){
			if(parpadear == 1){ // ejecutar parpadeo
				if(parpadeo == 0){ // estaba en blanco -> mostrar ficha
					display_ficha_jugador(fila, columna);
					parpadeo = 1;
				}
				else{ // estaba mostrada -> esconder ficha
					undisplay_ficha(fila,columna);
					parpadeo = 0;
				}
				parpadear = 0;
			}
		}
	}
	mov_done = 0;
}