void select_task(){ /* * Recibo la trama */ recibir_trama(); /* * Leemos los datos de la trama */ leer_keypad(); /* * Asignamos una nota según el botón que se haya pulsado */ pulsar_boton(); /* * Reproducimos la botón seleccionada */ reproducir_boton(); /* * Escribimos y dibujamos en la pantalla */ dibujar_en_pantalla(); }
/* Función principal */ void main() { unsigned char direc_mensaje; unsigned char TIMEOUT; unsigned char mensaje; unsigned char ERROR; unsigned char DIRECCION_SUBARRAY; inicializar_registros(); /* Obtenemos la dirección del subarray */ DIRECCION_SUBARRAY = direc_subarray; /* bucle del programa */ while(1) { /* Bandera que utilizamos para determinar si la interrupción que se produce se ha originado en el puerto serie */ int_serie = 0; /* El micro entra en modo de bajo consumo mientras no se produzca actividad en el puerto serie */ while(int_serie == 0) bajo_consumo(); /* Se ha detectado actividad en el bus de telecomandos. Capturamos la trama */ TIMEOUT = recibir_trama(); /* Si no se ha excedido el tiempo límite se procede a identificar el mensaje recibido */ if (TIMEOUT == FALSE) { mensaje = obtener_tipo_mensaje; direc_mensaje = obtener_direc_mensaje; if (direc_mensaje == DIRECCION_SUBARRAY) ERROR = contestar_si_error(); /* Si no ha habido error en la recepción se procesa el telecomando */ if (ERROR == FALSE) { switch(mensaje) { case CONFORMACION : telec_conformacion(DIRECCION_SUBARRAY); break; case ACTUALIZACION : if (direc_mensaje == DIRECCION_SUBARRAY) telec_actualizacion(); break; case TEMPERATURA : if (direc_mensaje == DIRECCION_SUBARRAY) telec_temperatura(); break; case PETICION_ESTADO : if (direc_mensaje == DIRECCION_SUBARRAY) telec_pet_Estado(); break; } } } } }