/********************************************************************************
Product : LKino-MEGA128
Project : 1비트 FND(7세그먼트 LED) 기본 동작 테스트
Date    : 2017-01-19
Author  : Kyung Nam Lee
Company : LKEMBEDDED ( http://www.lkembedded.co.kr )
Comments: FND에 0~9까지 순차적으로 표시하는 프로그램

Pin map
AVR		Arduino		Device
PB0		D8			a
PB1		D9			b
PB2		D10			c
PB3		D11			d
PB4		D12			e
PB5		D13			f
PB6		D14			g
PB7		D15			dp
********************************************************************************/
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

char Number[11] = {0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X27, 0X7F, 0X6F}; // FND 0~9 배열선언

unsigned int cnt = 0;

// 타이머0 오버플로우 인터럽트 서비스 루틴
ISR(TIMER0_OVF_vect)
{
	static int i = 0;
	i++;
	if (i == 100)
	{
		cnt++;
		i = 0;
		if (cnt == 99)
		{
			cnt = 0;
		}
	}
	TCNT0 += 0X06;  // 타이머 카운터 레지스터 값 초기화
}
int main(void)
{
	DDRB = 0XFF;  // PORTB 출력으로 설정

	TCCR0 = 0x04;  // 64프리스케일러, 오버플로우 인터럽트 구동
	TCNT0 = 0x06;  // 타이머 카운터 레지스터 초기 값 설정

	TIMSK = 0x01;  // 타이머0 채널 타이머 오버플로우 인터럽트 활성화
	SREG = 0X80;  // 전역 인터럽트 활성화
	while (1)
	{
		int j = 0;
		j = cnt % 10;  // 1의 자리
		PORTB = Number[j];
		_delay_ms(1);
	}
}