Buenas tardes, tengo una duda con mi código, estoy realizando un contador hexadecimal, sin embargo, me gustaría agregar un botón de pausa, ya agregue un if para que me funcione el botón pero no se que declarar dentro de este para que al presionar el botón el display se quede en el dígito actual y al dejar de presionarlo siga avanzando.
A continuación pondré lo que llevo. Muchas gracias de antemano!
#include <avr/io.h>
#define F_CPU 1000000UL // 1 Mhz
#include <util/delay.h>
uint8_t DISPLAY[16] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xE6,0xEF,0x3F,0x9D,0x7B,0x9F,0x8F};
// 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , b , C , d , E , F
#define seg_7 PORTD
#define TIME 500
#define SW_0 PINB0
#define SWITCH PINB
void initialize_ports(void);
int main(void)
{
initialize_ports();
while (1)
{
uint8_t counter = 0;
while(counter < 16)
{
seg_7 = DISPLAY[counter];
_delay_ms (TIME);
if (bit_is_clear(SWITCH,SW_0))
{
}
counter++;
}
}
}
void initialize_ports(void)
{
//--Entradas
DDRB &= ~((1<<SW_0));
PORTB |= (1<<SW_0) ;//Pull - up
//--Salidas
DDRD = 0xFF; // Declara el puerto D como salida
seg_7 = 0x00; //Inicializa el PORTD [7:0] en estado bajo (low) "0"
}