From ef92c7d564c2d99b15ada6b9b48cd452230ad022 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 1 Feb 2026 22:30:52 +0530 Subject: Finished counter + digit display --- .gitignore | 5 ----- src/main.c | 43 +++++++++++-------------------------------- 2 files changed, 11 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index b02bdb5..a61f635 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,4 @@ -.pio .clang_complete -.gcc-flags.json .ccls -.cache/ -compile_commands.json -compiler_defines.h a.out out/ diff --git a/src/main.c b/src/main.c index a7e2646..540f14c 100644 --- a/src/main.c +++ b/src/main.c @@ -1,50 +1,29 @@ #include #include -// gfedcba +// a b c d e f g decimal +// Reversed because a-g is mapped to pa0-6. (pa7 is decimal) +// Complemented because display is common anode const long digits[] = { - 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, - 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111, + 0b01000000, 0b01111001, 0b00100100, 0b00110000, 0b00011001, + 0b00010010, 0b00000010, 0b01111000, 0b00000000, 0b00010000, }; -// a, b, c, d, e, f, g -const int segment_pins[] = {4, 5, 6, 7, 8, 9, 10}; - void write_digit(int digit) { if (digit > 9 || digit < 0) return; - long mask = digits[digit]; - for (int i = 0; i < 7; i++) { - short on = 0 != (mask & (i == 0 ? 1 : 2 << (i - 1))); - // digitalWrite(segment_pins[i], on); - } -} - -void setup(void) { - for (int i = 0; i < 7; i++) { - int pin = segment_pins[i]; - DDRA |= (1 << PA1); - } -} - -int i = 0; -void loop(void) { - write_digit(i); - _delay_ms(500); - i = (i + 1) % 10; + PORTA = digits[digit]; } int main(void) { - setup(); + DDRA |= 0b11111111; + int i = 0; while (1) { - loop(); - // PORTA |= (1 << PA1); - // _delay_ms(500); - // PORTA &= ~(1 << PA1); - // _delay_ms(500); + write_digit(i); + _delay_ms(500); + i = (i + 1) % 10; } - return 0; } -- cgit v1.3.1