달력

5

« 2026/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2023. 12. 5. 18:15

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
:
Posted by gonlab