인터럽트(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이되어 정지.
}
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160311_업무일지_정우민_펌웨어실습 (0) | 2016.03.16 |
---|---|
20160315-이보원 AVR2560 LCD 실험 준비 (2) | 2016.03.16 |
20160314_박진한_업무일지_펌웨어 분석 (1) | 2016.03.16 |
20160310_노유찬_CPU모듈 (0) | 2016.03.16 |
20160315_장진웅_업무일지_펌웨어 분석&실습 (1) | 2016.03.16 |
20160315_최기영_업무일지_펌웨어분석3 (1) | 2016.03.16 |
20160315_김가연_업무일지_전역변수 (2) | 2016.03.16 |
2016-03_15_인터럽트_노태경_업무일지 (0) | 2016.03.16 |