#include <Arduino.h>
#include <TM1637TinyDisplay.h>

// Define Digital Pins
#define CLK PB2
#define DIO PB3

// Instantiate TM1637TinyDisplay Class
TM1637TinyDisplay display(CLK, DIO);

#define BUTTON_PIN PB1

void setup() {
    // Initialize TM1637
    display.begin();
    // Set BUTTON_PIN as input with pull-up
    DDRB &= ~(1 << BUTTON_PIN);  // Input mode
    PORTB |= (1 << BUTTON_PIN);  // Enable pull-up resistor
}

int main() {
    setup();

    uint16_t count = 9996;  // Counter value
    uint8_t buttonState = 0;
    uint8_t lastButtonState = 0;

    while (1) {
        // Read button state
        buttonState = (PINB & (1 << BUTTON_PIN)) == 0;  // Active LOW button

        // Detect button press (rising edge)
        if (buttonState && !lastButtonState) {
            count++;             // Increment count
            if (count > 9999) {  // Reset to 0 after 9999
                count = 0;
            }
            display.showNumberDec(count);  // Update display
        }

        // Save button state for debounce
        lastButtonState = buttonState;

        _delay_ms(50);  // Debounce delay
    }
}
ATTINY8520PU
4-Digit Display