6. 외부 인터럽트 제어실습 Atmega3282023. 12. 5. 18:15
// 외부 인터럽트 제어실습
//int0=PD2=Dig2 int1=PD3=Dig3
#include <mega328p.h>
#include <delay.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTB.0=1; //Dig8
delay_ms(1000);
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
PORTB.1=1; //Dig9
delay_ms(1000);
}
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Rising Edge
// Interrupt on any change on pins PCINT0-7: Off
// Interrupt on any change on pins PCINT8-14: Off
// Interrupt on any change on pins PCINT16-23: Off
EICRA=(1<<ISC11) | (1<<ISC10) | (1<<ISC01) | (0<<ISC00); //인터럽터 신호 발생 감지 0x0E (MCUCR)
EIMSK=(1<<INT1) | (1<<INT0); //외부 인터럽트 개별적 허용 0x03 (GICR)
EIFR=(1<<INTF1) | (1<<INTF0); //인터럽트 플래그 레지스터 0x03 (GIFR)
//PCICR=(0<<PCIE2) | (0<<PCIE1) | (0<<PCIE0); //Pin Change Interrupt Control Register
// Globally enable interrupts
#asm("sei")
while (1)
{
PORTB=0xFF;
delay_ms(50);
PORTB=0x00;
delay_ms(500);
}
}//

'Atmega328' 카테고리의 다른 글
| 8. 타이머/카운터0 Count Mode 실습 (1) | 2023.12.06 |
|---|---|
| 7. 타이머/카운터0 Normal Mode 실습 (1) | 2023.12.06 |
| 5. 포트 입력 실습 2 (1) | 2023.12.05 |
| 4. 포트 입력 실습 1 (1) | 2023.12.05 |
| 3. 포트 출력 실습 2 (1) | 2023.12.05 |
