본문 바로가기
코스웨어/16년 스마트컨트롤러

20160315_업무일지_정우민_인터럽트(FND실습)

by 알 수 없는 사용자 2016. 3. 16.
728x90
반응형

인터럽트(FND실습)



#include "main.h"                                                //  main.h 헤더파일

volatile unsigned int uiState;

int main(void)
{
 volatile unsigned int uiLoop;
 volatile unsigned int uiCnt;
 
 uiCnt=0;
 
 Init ();
 
 uiState = 1;
 while(1)
 {
  PORTA=((uiCnt/10)<<4)|(uiCnt%10);
  for(uiLoop=0 ; uiLoop<60000 ; uiLoop++);
  if(1==uiState)
  {
   ++uiCnt;
  }
  if(uiCnt>99)
  {
   uiCnt=0;
  }
 }
 return 0;
}

void Init(void)
{
 Port_Init();
 INT_Init();
}

void Port_Init(void)                                            // 포트A
{
 DDRA=0xff;
 PORTA=0x00;
}

void INT_Init(void)                                            // 인터럽트 설정 함수.
{
 EICRA=(3<<ISC0) | (3<<ISC1);                       //ISC0은 INT0을 의미,OR이용해서 다른 인터럽트도 사용.
 EIMSK=(1<<INT0) | (1<<INT1);
 SREG=SREG | (1<<7);                                   // sei(); 랑 같다
}
void __vector_1 (void)                                     //인터럽트1.
{
 volatile unsigned int uiLoop;
 for(uiLoop = 0; uiLoop<60000; ++uiLoop);
 uiState = 1;                                                    //인터럽트 발생시 uiState가 1이되어 다시 카운트 시작 
}

void __vector_2 (void)                                     //인터럽트2
{
 volatile unsigned int uiLoop;
 for(uiLoop = 0; uiLoop<60000; ++uiLoop);
 uiState = 0;                                                    //인터럽트 발생시 uiState가 0이되어 정지.
}

728x90