인 터 렙 트 |
|
데이터동기방법
1) 폴링(polling): 마이크로프로세서가 사용 가능 한지 여부를 계속관찰
2) 인터럽트(interrupt): 주변 장치가 사용 가능 할 때, 마이크로 프로세서에게 통보
Event에따라 미리 정해진 ISR (Interrupt Service Routine)로분기
#include "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년 스마트컨트롤러' 카테고리의 다른 글
16.03.16 조승현 업무일지ATmega _lcd 지연문과 문자열에 관해 (4) | 2016.03.17 |
---|---|
201603016_정일모_업무일지_기억장치 (0) | 2016.03.17 |
20160316_김가연_업무일지_LCD출력 (0) | 2016.03.17 |
20160315_김도관_업무일지_7Segment_스위치제어 (0) | 2016.03.17 |
20160316_정일모_업무일지_변수 (0) | 2016.03.17 |
ms 마인크래프트를 인공지능에 활용 (3) | 2016.03.17 |
20160315_김도관_업무일지_C언어_if문_전역변수,지역변수 (0) | 2016.03.17 |
컴퓨터의 원리에 대해 알아보자 -3- (0) | 2016.03.17 |