void delay();
void init_system();
int main() {
init_system(); // 외부 인터럽트 사용을 위한 함수
while(1) {
PORTA = 0xff; // PORTA에 0xff 출력
}
}
void init_system(void) { // 인터럽트를 사용하기 위한 함수로 책보면 EIMSK,EICRA,EIFR에 관해 나옴
DDRA = 0xff; // 포트 A를 출력형태로
EIMSK = 0x03; // INT0 개별 인터럽트 인에이블
EICRA = 0x0A; // INT0 하강에지 인터럽트 설정
EIFR = 0x01; // 인터럽트0 플래그 레지스터 클리어
__enable_interrupt(); // 전체 인터럽트 인에이블로 SREG의 I비트를 1로 만드는 놈
}
#pragma vector = INT0_vect // 인터럽트 벡터 지정
// 인터럽트 서비스 함수
__interrupt void ex0_int_ser() { // 외부 인터럽트 0이 발생하면 i에 0x0f를 저장하고 포트a에 반전출력
i = 0x0f;
PORTA = ~i;
delay(); // 결과값을 눈으로 확인하기 위한놈으로 없어도 상관없는거
}
#pragma vector = INT1_vect
__interrupt void ex1_int_ser() { // 외부 인터럽트 1이 발생할시 i에 0xf0을 저장하고 그걸 포트 a에 반전출력
i = 0xf0;
PORTA = ~i;
delay();
}
void delay() {
for(int i = 0; i < 6000; i++) for(int j = 0; j < 30; j++);
}
-------------------------------------------------------------------------
다른사이트 다 돌면서 이게 어떤거고 저게 어떤건지
제가 직접 주석 달았습니다 하지만 제가 직접 주석 달아도 이해가 잘 안갑니다
애시당초 다른 사이트에서 찾은 명령어의 사용법이나 기능들을 이해하고 적은게 아닙니다 그냥 적은겁니다
원인은 [의미를 모르는 단어]때문인것 같습니다.
이를테면 초등학생 꼬마가 이렇게 물었습니다
"엄마 무지개는 왜 생기는 거예요?"
"빛의 스펙트럼 때문에 생긴단다 ^^"
꼬마는 엄마의 친절한 설명을 들어도 이해 할 수가 없었습니다.
★위 소스코드를 초등학생도 이해 할 수 있는 낮은 수준으로 설명부탁드려도 되겠습니까?★