Skip to content

Instantly share code, notes, and snippets.

@pi0
Created May 30, 2018 06:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pi0/66466402dc63cbb47f21082cb03e0943 to your computer and use it in GitHub Desktop.
Save pi0/66466402dc63cbb47f21082cb03e0943 to your computer and use it in GitHub Desktop.
#include <util/delay.h>
void SevenSegment(unit8_t count) {
switch (count) {
case 0: PORT_7_SEGMENT=0b10001000; break;
case 1: PORT_7_SEGMENT=0b10111110; break;
case 2: PORT_7_SEGMENT=0b00011001; break;
case 3: PORT_7_SEGMENT=0b00011100; break;
case 4: PORT_7_SEGMENT=0b00101110; break;
case 5: PORT_7_SEGMENT=0b01001100; break;
case 6: PORT_7_SEGMENT=0b01001000; break;
case 7: PORT_7_SEGMENT=0b10111100; break;
case 8: PORT_7_SEGMENT=0b00001000; break;
case 9: PORT_7_SEGMENT=0b00001100; break;
}
}
void counter(unit8_t from) {
for (int c = from - 1 ; c >= 0 ; c--) {
SevenSegment(c);
delay_ms(1000);
}
}
int main()
{
// set ports as output
DDRA = 0xFF;
DDRB = 0xFF;
// set all LEDs off
PORTA = 0x00;
PORTB = 0x00;
// turn all segments off
PORT_7_SEGMENT=0xFF;
while (1) // main loop
{
// switch red light on (clear PORTA, set PORTB)
PORTA = 0xFF;
PORTB = 0x00;
// delay 10 sec and update counter
counter(10);
// switch green light on (set PORTA, clear PORTB)
PORTA = 0x00;
PORTB = 0xFF;
// delay 5 sec;
counter(5);
} // if
} //while(1)
} //main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment