이 영역을 누르면 첫 페이지로 이동
#include < ResetDy.com > 블로그의 첫 페이지로 이동

#include < ResetDy.com >

페이지 맨 위로 올라가기

#include < ResetDy.com >

외부 인터럽트실험2

  • 2012.03.09 01:00
  • MicroProcessor/AVR
반응형


INT0, INT1 을 이용한 인터럽트 테스트

LED를 천천히 한 이유는...?

루틴 복귀지점을 정확히 파악하기 위함임... 

4번째에서 인터럽트 시키면 복귀 할 때 다음작업인 5번째에서 켜짐

아주 똑똑한 녀석임.. ^^*

( 참고 : 스위치가 정확히 눌리기가 어려워 인터럽트가 2번 발생할 경우도 있음 )

===========================================================================================

// 인터럽트를 실험 하기 위한 소스


#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "avr/dy.h"

unsigned char i,pb_sum, pc_sum;

void port_init(void)
{
DDRB = 0xff;
DDRC = 0xff;
DDRD = 0x00;








PORTB = 0x00;
PORTC = 0x00;
}

void port_subinit(void)
{
 pb_sum = 0;
 pc_sum = 0;
 PORTB = 0x00;
 PORTC = 0x00;
 delay_ms(1000);
}

SIGNAL(SIG_INTERRUPT0)
{
 port_subinit();
 for(i = 32; i > 0; i/=2)
 {
  pc_sum += i;
  PORTC = pc_sum;
  delay_ms(2000);
 }

for(i = 32; i > 0; i/=2)
{
  pb_sum += i;
  PORTB = pb_sum;
  delay_ms(2000);
 }

port_subinit();
}

SIGNAL(SIG_INTERRUPT1)
{
 char num[2][6]={ {32, 48, 56, 60, 62, 63}, 
   {1, 3, 7, 15, 31, 63} };
 port_subinit(); 






for(i = 0; i < 6; i++)
 {
  PORTB = num[0][i];
  PORTC = num[1][i];
  delay_ms(2000);
 }


 
port_subinit();
}

void extint_init(void)
{
 MCUCR = (1<<ISC11)|(1<<ISC10)|(1<<ISC01)|(0<<ISC00);
}

void extpin_enable(void)
{
 GIMSK = (1<<INT1)|(1<<INT0);
}

int main(void)
{
 unsigned char i,pb_sum, pc_sum;

port_init();
 extint_init();
 extpin_enable();
 sei();

while(1)
 {
  for(i = 1; i < 64; i*=2)
  {
   pb_sum += i;
   PORTB = pb_sum;
   delay_ms(2000);
  }




 
for(i = 1; i < 64; i*=2)
  {
   PORTB = 0xff;
   pc_sum += i;
   PORTC = pc_sum;
   delay_ms(2000);
  }

pb_sum = 0;
  pc_sum = 0;
  PORTB = 0x00;
  PORTC = 0x00;
  delay_ms(1000);
 }
}


반응형

'MicroProcessor > AVR' 카테고리의 다른 글

[AVR] Step1. 개발환경 구축하기 (AVR Studio 4.19)  (0) 2017.03.12
cmd에서 avrdude를 이용하여 퓨즈비트 쓰기  (0) 2012.05.23
USBasp - avrdude 명령어  (0) 2012.05.22
폴링방식과 인터럽트 방식의 차이점  (0) 2012.03.09
USART 통신 기본  (0) 2012.03.09
1분 카운터 & LED switching  (0) 2012.03.09
ATmega8 OSCCAL 레지스터 사용하기  (0) 2012.03.09

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • cmd에서 avrdude를 이용하여 퓨즈비트 쓰기

    cmd에서 avrdude를 이용하여 퓨즈비트 쓰기

    2012.05.23
  • USBasp - avrdude 명령어

    USBasp - avrdude 명령어

    2012.05.22
  • 폴링방식과 인터럽트 방식의 차이점

    폴링방식과 인터럽트 방식의 차이점

    2012.03.09
  • USART 통신 기본

    USART 통신 기본

    2012.03.09
다른 글 더 둘러보기

정보

#include < ResetDy.com > 블로그의 첫 페이지로 이동

#include < ResetDy.com >

  • #include < ResetDy.com >의 첫 페이지로 이동

검색

메뉴

  • Home
  • Tag
  • Guest Book
  • Write
  • Admin

카테고리

  • 분류 전체보기 (129)
    • VR (3)
    • 내 이야기 (37)
    • Trade (13)
      • 주린이 HTS (0)
      • 주린이 일기 (2)
      • 주린이 공부 (0)
      • 주린이 매매일지 (11)
    • Hardware (2)
      • Tip (1)
      • Schematic (1)
    • Programming (24)
      • C++ (1)
      • C# (5)
      • Python (9)
      • Android (9)
    • MicroProcessor (17)
      • AVR (8)
      • STM32 (6)
      • RaspberryPi (1)
      • Smart Car (2)
    • Computer (23)
      • Tip (6)
      • Linux (5)
      • MacOS (11)
    • Car D.I.Y (10)
      • XMAX300 (1)
      • All New Carnival (5)
      • SM3 (4)

공지사항

블로그 구독하기

  • 구독하기
  • RSS 피드

정보

ResetDy의 #include < ResetDy.com >

#include < ResetDy.com >

ResetDy

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © ResetDy. Designed by Fraccino.

티스토리툴바