|
인 터 렙 트 |
|
데이터동기방법
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 |