#include "src/io_Header.h" // Function header  
unsigned int i_cnt = 0;  // //행(Row) 선택 카운터 전역 변수
ISR(TIMER2_OVF_vect)  // Tick time per 1mS!
{
  static unsigned int cnt = 0;
  cnt++;
  if (cnt >= 500)  // 0.5Sec가 되면...
  {
      cnt = 0; // 1초 카운터 변수 초기화 
      i_cnt++; //행(Row) 선택 카운터 변수
      if(i_cnt > 15)// 1행부터 16행까지 루프가 이동되면...
      {
        i_cnt = 0; //행(Row) 선택 카운터 변수 초기화
      }
  }
}
void setup()
{
  DDRB = 0x3f;  // PORTB 5~0 핀 출력으로 설정
  DDRC = 0x08;  // PORTC 3 핀 출력으로 설정
  DDRD = 0xfc;  // PORTD 7~2 핀 출력으로 설정
  //Timer/Conunter Interrupt initialization
  TCCR2A = 0x00;
  TCCR2B = 0x04;  // 타이머 카운터2 노멀 모드, 64분주 
  TIMSK2 = 0x01;  // 타이머 카운터2 인터럽트 허용
  TCNT2 = 0x06; // 타이머 카운터2 초기값: 6
  SREG = 0x80;  // 인터럽트 허용

}
void loop() // 무한 루프
{
    row_dynamic(i_cnt);
    // 행(Row) 선택하기 row_dynamic 함수 호출, 인자값 i_cnt값이 전달 됨
    Shift_Register(0xff, 0xff, i_cnt, Red);
    // 저장된 16x16 도트매트릭스1 데이터 전송
    Shift_Register(0xff, 0xff, i_cnt, Red);
    // 저장된 16x16 도트매트릭스2 데이터 전송
    ActivePulse();
    // 데이터 전송 후 래치신호를 전송하는 ActivePulse함수 호출
}
