Arturo Rios Ramos
/
STM32F103C8_Adivina
El programa cuenta los intentos ingresados por el usuario para adivinar el numero
main.cpp@2:f7a3163071b1, 2019-09-13 (annotated)
- Committer:
- JavierMarcelo98
- Date:
- Fri Sep 13 06:53:02 2019 +0000
- Revision:
- 2:f7a3163071b1
- Parent:
- 0:f680c41c1640
Programa adivina modificado dados ciertos criterios.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Antulius | 0:f680c41c1640 | 1 | /* ########################################################################### |
Antulius | 0:f680c41c1640 | 2 | ** Archivo : main.c |
JavierMarcelo98 | 2:f7a3163071b1 | 3 | ** Proyecto : STM32-103C8_AdivinaV2 |
Antulius | 0:f680c41c1640 | 4 | ** Procesador : STM32F103C8 |
Antulius | 0:f680c41c1640 | 5 | ** Herramienta : Mbed |
Antulius | 0:f680c41c1640 | 6 | ** Version : Driver 01.01 |
Antulius | 0:f680c41c1640 | 7 | ** Compilador : GNU C Compiler |
JavierMarcelo98 | 2:f7a3163071b1 | 8 | ** Fecha/Hora : 13-09-2019 01:30, # CodeGen: 0 |
Antulius | 0:f680c41c1640 | 9 | ** Descripción : |
JavierMarcelo98 | 2:f7a3163071b1 | 10 | ** Este proyecto recibe un numero predefinido por el administrador para |
JavierMarcelo98 | 2:f7a3163071b1 | 11 | ** que despues un usuario intente adivinarlo con un limite de intetos |
JavierMarcelo98 | 2:f7a3163071b1 | 12 | ** los cuales ya estas preestablecidos por el administrador. |
Antulius | 0:f680c41c1640 | 13 | ** Componentes : Timer, etc . |
Antulius | 0:f680c41c1640 | 14 | ** Configuraciones : Se puede seleccionar entre diferentes velocodades de |
Antulius | 0:f680c41c1640 | 15 | ** transmisión |
Antulius | 0:f680c41c1640 | 16 | ** Autores : |
Antulius | 0:f680c41c1640 | 17 | ** ATEAM Development Group: |
JavierMarcelo98 | 2:f7a3163071b1 | 18 | ** - Antulio Morgado Valle. |
JavierMarcelo98 | 2:f7a3163071b1 | 19 | ** - Marcelo Padron Javier 4CV2. |
Antulius | 0:f680c41c1640 | 20 | ** |
Antulius | 0:f680c41c1640 | 21 | ** Versión : Beta |
JavierMarcelo98 | 2:f7a3163071b1 | 22 | ** Revisión : B |
Antulius | 0:f680c41c1640 | 23 | ** Release : 0 |
Antulius | 0:f680c41c1640 | 24 | ** Bugs & Fixes : |
JavierMarcelo98 | 2:f7a3163071b1 | 25 | ** Date : 13/09/2019 |
JavierMarcelo98 | 2:f7a3163071b1 | 26 | ** |
Antulius | 0:f680c41c1640 | 27 | ** |
Antulius | 0:f680c41c1640 | 28 | ** |
Antulius | 0:f680c41c1640 | 29 | ** ###########################################################################*/ |
Antulius | 0:f680c41c1640 | 30 | /* |
Antulius | 0:f680c41c1640 | 31 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
Antulius | 0:f680c41c1640 | 32 | : Includes |
Antulius | 0:f680c41c1640 | 33 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
Antulius | 0:f680c41c1640 | 34 | */ |
Antulius | 0:f680c41c1640 | 35 | |
Antulius | 0:f680c41c1640 | 36 | #include "stm32f103c8t6.h" |
Antulius | 0:f680c41c1640 | 37 | #include "mbed.h" |
Antulius | 0:f680c41c1640 | 38 | #include "Serial.h" |
Antulius | 0:f680c41c1640 | 39 | #include "stdio.h" |
Antulius | 0:f680c41c1640 | 40 | /* |
Antulius | 0:f680c41c1640 | 41 | :............................................................................... |
Antulius | 0:f680c41c1640 | 42 | : Definiciones |
Antulius | 0:f680c41c1640 | 43 | :............................................................................... |
Antulius | 0:f680c41c1640 | 44 | */ |
Antulius | 0:f680c41c1640 | 45 | #define on 0 // Estado para boton presionado |
Antulius | 0:f680c41c1640 | 46 | #define off 1 // Estado para boton sin presionar |
Antulius | 0:f680c41c1640 | 47 | #define hold 2 // Estado para boton mantenido |
Antulius | 0:f680c41c1640 | 48 | #define release 3 // Estado para boton liberado |
Antulius | 0:f680c41c1640 | 49 | #define FALSE 0 // Estado FALSO |
Antulius | 0:f680c41c1640 | 50 | #define TRUE 1 // Estado VERDADERO |
Antulius | 0:f680c41c1640 | 51 | /* |
Antulius | 0:f680c41c1640 | 52 | +------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 53 | | Configuración de Puertos |
Antulius | 0:f680c41c1640 | 54 | +------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 55 | */ |
Antulius | 0:f680c41c1640 | 56 | DigitalOut verde (LED1); // PC_13 (Green_Led) |
Antulius | 0:f680c41c1640 | 57 | DigitalOut rojo (PB_1); // NC (Red_Led) |
Antulius | 0:f680c41c1640 | 58 | |
Antulius | 0:f680c41c1640 | 59 | // ***** Host PC Terminal Communication channels |
Antulius | 0:f680c41c1640 | 60 | Serial terminal (PA_2, PA_3); // Inicializa la comunicación serial a la PC (Tx,Rx) |
Antulius | 0:f680c41c1640 | 61 | //Serial terminal(USBTX, USBRX,115200);// Tx, Rx Baud Rate - Terminal Serial por USB @ 115,200 Bauds |
Antulius | 0:f680c41c1640 | 62 | |
Antulius | 0:f680c41c1640 | 63 | /* |
Antulius | 0:f680c41c1640 | 64 | +------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 65 | | Variables Globales de Usuario |
Antulius | 0:f680c41c1640 | 66 | +------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 67 | */ |
Antulius | 0:f680c41c1640 | 68 | //uint32_t Baud_Rate = 9600; // Velocidad de Transmisión (Bauds) |
Antulius | 0:f680c41c1640 | 69 | /* |
Antulius | 0:f680c41c1640 | 70 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Antulius | 0:f680c41c1640 | 71 | | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción |
Antulius | 0:f680c41c1640 | 72 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Antulius | 0:f680c41c1640 | 73 | */ |
Antulius | 0:f680c41c1640 | 74 | void Setup(void); |
Antulius | 0:f680c41c1640 | 75 | /* END definitions */ |
Antulius | 0:f680c41c1640 | 76 | |
Antulius | 0:f680c41c1640 | 77 | /* |
Antulius | 0:f680c41c1640 | 78 | #=============================================================================== |
Antulius | 0:f680c41c1640 | 79 | | |
Antulius | 0:f680c41c1640 | 80 | | P R O G R A M A P R I N C I P A L |
Antulius | 0:f680c41c1640 | 81 | | |
Antulius | 0:f680c41c1640 | 82 | #=============================================================================== |
Antulius | 0:f680c41c1640 | 83 | */ |
Antulius | 0:f680c41c1640 | 84 | int main() |
Antulius | 0:f680c41c1640 | 85 | { // Inicialización de variables, puertos e interrupciones |
Antulius | 0:f680c41c1640 | 86 | confSysClock(); // Configure system clock (72MHz HSE clock, 48MHz USB clock) |
Antulius | 0:f680c41c1640 | 87 | Setup(); // Inicialización del sistema |
Antulius | 0:f680c41c1640 | 88 | while(TRUE) |
Antulius | 0:f680c41c1640 | 89 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 90 | Primero: int numero = 5; //Primero vamos a limitar el numero de intentos |
JavierMarcelo98 | 2:f7a3163071b1 | 91 | if( numero > 0) //Colocaremos un condicional al inicio de nuestro programa para que estemos regresando a este punto. |
JavierMarcelo98 | 2:f7a3163071b1 | 92 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 93 | terminal.printf("\n DIGITE UN NUMERO SECRETO DE 0 A 9 \r\n"); |
JavierMarcelo98 | 2:f7a3163071b1 | 94 | int secreto = terminal.getc(); |
Antulius | 0:f680c41c1640 | 95 | rojo = on; |
JavierMarcelo98 | 2:f7a3163071b1 | 96 | verde = on; |
JavierMarcelo98 | 2:f7a3163071b1 | 97 | Intenta: terminal.printf("\n Solo tienes %i intentos para adividnar!\r\n", numero); |
JavierMarcelo98 | 2:f7a3163071b1 | 98 | terminal.printf("\nADIVINA EL NUMERO: \r\n"); |
JavierMarcelo98 | 2:f7a3163071b1 | 99 | int respuesta = terminal.getc(); |
JavierMarcelo98 | 2:f7a3163071b1 | 100 | terminal.printf("\nEL NUMERO QUE INGRESASTE FUE \r\n"); //Imprimimos la respuesta como parte de las condiciones que nos pide el profesor. |
JavierMarcelo98 | 2:f7a3163071b1 | 101 | terminal.putc ( respuesta ); |
Antulius | 0:f680c41c1640 | 102 | if( secreto < respuesta ) |
Antulius | 0:f680c41c1640 | 103 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 104 | terminal.printf(" \n\nEl numero que ingresaste es mas alto! \r\n"); |
Antulius | 0:f680c41c1640 | 105 | rojo = on; |
JavierMarcelo98 | 2:f7a3163071b1 | 106 | verde = off; |
JavierMarcelo98 | 2:f7a3163071b1 | 107 | numero = numero - 1; |
Antulius | 0:f680c41c1640 | 108 | goto Intenta; |
Antulius | 0:f680c41c1640 | 109 | } |
Antulius | 0:f680c41c1640 | 110 | if( secreto > respuesta ) |
Antulius | 0:f680c41c1640 | 111 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 112 | terminal.printf(" \n\nEl numero que ingresaste es mas bajo! \r\n"); |
Antulius | 0:f680c41c1640 | 113 | rojo = off; |
Antulius | 0:f680c41c1640 | 114 | verde = on; |
JavierMarcelo98 | 2:f7a3163071b1 | 115 | numero = numero - 1 ; |
Antulius | 0:f680c41c1640 | 116 | goto Intenta; |
Antulius | 0:f680c41c1640 | 117 | } |
Antulius | 0:f680c41c1640 | 118 | if( secreto == respuesta ) |
Antulius | 0:f680c41c1640 | 119 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 120 | terminal.printf(" \n\nFelicidades!, La respuesta es: %i \r\n",secreto); |
Antulius | 0:f680c41c1640 | 121 | rojo = off; |
Antulius | 0:f680c41c1640 | 122 | verde = on; |
Antulius | 0:f680c41c1640 | 123 | wait(1.0); |
Antulius | 0:f680c41c1640 | 124 | rojo = off; |
Antulius | 0:f680c41c1640 | 125 | verde = off; |
Antulius | 0:f680c41c1640 | 126 | wait(1.0); |
Antulius | 0:f680c41c1640 | 127 | rojo = off; |
Antulius | 0:f680c41c1640 | 128 | verde = on; |
Antulius | 0:f680c41c1640 | 129 | wait(1.0); |
JavierMarcelo98 | 2:f7a3163071b1 | 130 | terminal.printf("Felicidades, realmente eres un genio! \r\n"); |
Antulius | 0:f680c41c1640 | 131 | wait(1.0); |
Antulius | 0:f680c41c1640 | 132 | rojo = on; |
Antulius | 0:f680c41c1640 | 133 | verde = off; |
Antulius | 0:f680c41c1640 | 134 | wait(1.0); |
Antulius | 0:f680c41c1640 | 135 | rojo = off; |
Antulius | 0:f680c41c1640 | 136 | verde = on; |
Antulius | 0:f680c41c1640 | 137 | } |
JavierMarcelo98 | 2:f7a3163071b1 | 138 | |
Antulius | 0:f680c41c1640 | 139 | terminal.printf(" Quieres intentarlo de nuevo? \r\n"); |
Antulius | 0:f680c41c1640 | 140 | terminal.printf(" 0 = No \r\n 1 = Si \r\n"); |
JavierMarcelo98 | 2:f7a3163071b1 | 141 | char opcion = terminal.getc(); |
JavierMarcelo98 | 2:f7a3163071b1 | 142 | if( opcion == '1' ) |
JavierMarcelo98 | 2:f7a3163071b1 | 143 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 144 | numero = numero - 1; |
JavierMarcelo98 | 2:f7a3163071b1 | 145 | goto Primero; |
JavierMarcelo98 | 2:f7a3163071b1 | 146 | } |
Antulius | 0:f680c41c1640 | 147 | else if( opcion == '0' ) |
Antulius | 0:f680c41c1640 | 148 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 149 | terminal.printf("El numero de intentos realizados fueron %i!\r\n", numero); |
Antulius | 0:f680c41c1640 | 150 | break; |
Antulius | 0:f680c41c1640 | 151 | } |
Antulius | 0:f680c41c1640 | 152 | } |
JavierMarcelo98 | 2:f7a3163071b1 | 153 | else if ( numero == 0) |
JavierMarcelo98 | 2:f7a3163071b1 | 154 | { |
JavierMarcelo98 | 2:f7a3163071b1 | 155 | terminal.printf(" Lo lamento, excediste el numero de intentos!\r\n"); |
JavierMarcelo98 | 2:f7a3163071b1 | 156 | } |
JavierMarcelo98 | 2:f7a3163071b1 | 157 | } |
Antulius | 0:f680c41c1640 | 158 | } |
Antulius | 0:f680c41c1640 | 159 | |
Antulius | 0:f680c41c1640 | 160 | /* END main */ |
Antulius | 0:f680c41c1640 | 161 | |
Antulius | 0:f680c41c1640 | 162 | /* |
Antulius | 0:f680c41c1640 | 163 | ................................................................................ |
Antulius | 0:f680c41c1640 | 164 | : Rutinas de los Vectores de Interrupción |
Antulius | 0:f680c41c1640 | 165 | ................................................................................ |
Antulius | 0:f680c41c1640 | 166 | */ |
Antulius | 0:f680c41c1640 | 167 | |
Antulius | 0:f680c41c1640 | 168 | /* END Events */ |
Antulius | 0:f680c41c1640 | 169 | /* |
Antulius | 0:f680c41c1640 | 170 | ________________________________________________________________________________ |
Antulius | 0:f680c41c1640 | 171 | | |
Antulius | 0:f680c41c1640 | 172 | | Funciones Prototipo |
Antulius | 0:f680c41c1640 | 173 | |_______________________________________________________________________________ |
Antulius | 0:f680c41c1640 | 174 | */ |
Antulius | 0:f680c41c1640 | 175 | // Las Funciones Prototipo van aquí ! |
Antulius | 0:f680c41c1640 | 176 | void Setup() |
Antulius | 0:f680c41c1640 | 177 | { |
Antulius | 0:f680c41c1640 | 178 | // terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial. |
Antulius | 0:f680c41c1640 | 179 | terminal.baud(115200); // Se configura la velocidad de transmisión e inicia la comunicación serial. |
JavierMarcelo98 | 2:f7a3163071b1 | 180 | terminal.printf(" Bienvenido Amo!\n\r"); |
Antulius | 0:f680c41c1640 | 181 | } |
Antulius | 0:f680c41c1640 | 182 | |
Antulius | 0:f680c41c1640 | 183 | /* END routines */ |
Antulius | 0:f680c41c1640 | 184 | |
Antulius | 0:f680c41c1640 | 185 | /* END program */ |
Antulius | 0:f680c41c1640 | 186 | |
Antulius | 0:f680c41c1640 | 187 | /* END documentation */ |
JavierMarcelo98 | 2:f7a3163071b1 | 188 | /* |
Antulius | 0:f680c41c1640 | 189 | +-------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 190 | | |
Antulius | 0:f680c41c1640 | 191 | | EXAMEN |
Antulius | 0:f680c41c1640 | 192 | | |
Antulius | 0:f680c41c1640 | 193 | | 1.- Modificar el programa para que despliegue el número de intentos para |
Antulius | 0:f680c41c1640 | 194 | | adivinar el número secreto. |
Antulius | 0:f680c41c1640 | 195 | | 2.- Modificar el programa para haga eco con la respuesta que le introducimos. |
Antulius | 0:f680c41c1640 | 196 | | |
JavierMarcelo98 | 2:f7a3163071b1 | 197 | | 3.- Modificar el programa para que te limite el numero de intentos. |
Antulius | 0:f680c41c1640 | 198 | | Suerte! |
Antulius | 0:f680c41c1640 | 199 | +-------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 200 | | |
Antulius | 0:f680c41c1640 | 201 | | T H E A N T U L I U S T E A M |
Antulius | 0:f680c41c1640 | 202 | | Research, Development, Systems Equipment, Support & Spare Parts I n c. |
Antulius | 0:f680c41c1640 | 203 | | (C) Copyright 1989-2014, All rigths Reserved |
Antulius | 0:f680c41c1640 | 204 | | |
Antulius | 0:f680c41c1640 | 205 | | This program is licensed under rules of |
Antulius | 0:f680c41c1640 | 206 | | THE BEANERS TECHNOLOGIES PROYECT |
Antulius | 0:f680c41c1640 | 207 | +------------------------------------------------------------------------------- |
Antulius | 0:f680c41c1640 | 208 | */ |
Antulius | 0:f680c41c1640 | 209 | /* END Mbed */ |