|
글쓴이 :
김석현
작성일 : 20-02-19 11:55
조회 : 6,974
|
현재 전원이 on되면 인터럽트 INT0가 활성화되며
스위치를 누르면 인터럽트가 off됩니다..
이것을 스위치를 on하면 인터럽트가 활성화되게 하려면 어떻게 변경해야 할까요?
#define F_CPU 16000000L //_delay_ms()를 사용하기 위해서는 클럭 주파수를 정의 해주어야 한다.
#include <avr/io.h> // Atmega128의 각 레지스터와 포트들에 대한 정의를 포함한다. (어떤 cpu든 기본 사용)
#include <util/delay.h> // _delay_ms()를 사용하기 위해 정의 되어 있는 delay.h 파일을 포함한다.
#include <avr/interrupt.h>
ISR(INT0_vect)// 핵심 인터럽트가 걸리면 여기로 점프
{
PORTA=0xF0;
_delay_ms(500);
EIFR=0x40; //인터럽트 발생신호를 초기화해 다시 인터럽트를 받을수 있는 상태로 만듬
}
int main(void)
{
PORTA=0x00;
DDRA=0xFF; //포트A의 모든 포트를 출력상태로 설정
EIMSK =0x01; //INT0의 인터럽트를 허용
MCUCR=0x03; //MCUCR의 0번, 1번 비트를 1호 상승에지에 인터럽트 동작을 설정
sei(); //모든 인터럽트를 허용
while(1)
{
PORTA=0xFF;
_delay_ms(500);
PORTA=0x00;
_delay_ms(500);
}
return 0;
}
|
|