Professional Documents
Culture Documents
1er. Laboratorio Grupo 2 Pregunta N°2
1er. Laboratorio Grupo 2 Pregunta N°2
Lima - Perú
Fecha de presentación: 28 de abril de 2023
a) Disposición de los pines y como están configurados
b) Programa en C
/* USER CODE END 2 */
int contador = 0;//definimos el delay para los pulsadores
int num = 0; //Definimos e inicializamos num como 0
int a=0,b=0,c=0,d=0; //inicializamos en 0 los valores en binario para
los displays
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,
GPIO_PIN_RESET);
//Ponemos en 0 todas los pines de salida de los display y el del led
que indica que ya no hay espacio
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,GPIO_PIN_SET);//se inicializa el
display 1
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,GPIO_PIN_SET);//se inicializa el
display 2
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);//Ponemos en 0
el pin de salida
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_11,GPIO_PIN_SET);//Ponemos en 1 el
pin de entrada del led que indica que aun hay espacio
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
int entrada,salida;
int decena,unidad;
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7)==0 ||
HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6)==1){
entrada=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7);
salida=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6);
for(int i = 0; i<20;i++){
HAL_Delay(15);
}
if(entrada==0 && salida==0 && num<15){
num++;
} //Se garantiza que el numero aumente
unicamente si el valor actual es menor a 15 y solo el pulsador de
entrada haya sido activado
else{
if(entrada==1 && salida==1 && num>0){
num--;
}//Se garantiza que el numere disminuya
unicamente si el valor actual es mayor que 0 y solo el pulsador de
salida haya sido activado
}
if(num==15){
while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_7)==1 &&
HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6)==0){
if(decena == 1){
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,1);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,1);
HAL_Delay(5);
}else{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,1);
HAL_Delay(5);
}
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,a);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,b);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,c);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,d);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,1);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,0);
HAL_Delay(5);
} //Bucle infinito cuando ningun pulsador esta presionado