외부 인터럽트실험2
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 |
댓글
이 글 공유하기
다른 글
-
cmd에서 avrdude를 이용하여 퓨즈비트 쓰기
cmd에서 avrdude를 이용하여 퓨즈비트 쓰기
2012.05.23 -
USBasp - avrdude 명령어
USBasp - avrdude 명령어
2012.05.22 -
폴링방식과 인터럽트 방식의 차이점
폴링방식과 인터럽트 방식의 차이점
2012.03.09 -
USART 통신 기본
USART 통신 기본
2012.03.09